summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/mfc42
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/mfc42
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'public/sdk/inc/mfc42')
-rw-r--r--public/sdk/inc/mfc42/afx.h1916
-rw-r--r--public/sdk/inc/mfc42/afx.inl415
-rw-r--r--public/sdk/inc/mfc42/afxadv.h181
-rw-r--r--public/sdk/inc/mfc42/afxaete.r92
-rw-r--r--public/sdk/inc/mfc42/afxcmn.h919
-rw-r--r--public/sdk/inc/mfc42/afxcmn.inl643
-rw-r--r--public/sdk/inc/mfc42/afxcoll.h1446
-rw-r--r--public/sdk/inc/mfc42/afxcoll.inl496
-rw-r--r--public/sdk/inc/mfc42/afxcom_.h463
-rw-r--r--public/sdk/inc/mfc42/afxconv.h148
-rw-r--r--public/sdk/inc/mfc42/afxctl.h1673
-rw-r--r--public/sdk/inc/mfc42/afxctl.inl117
-rw-r--r--public/sdk/inc/mfc42/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/afxcview.h135
-rw-r--r--public/sdk/inc/mfc42/afxcview.inl29
-rw-r--r--public/sdk/inc/mfc42/afxdao.h1325
-rw-r--r--public/sdk/inc/mfc42/afxdao.inl77
-rw-r--r--public/sdk/inc/mfc42/afxdb.h1042
-rw-r--r--public/sdk/inc/mfc42/afxdb.inl113
-rw-r--r--public/sdk/inc/mfc42/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/afxdb_.h72
-rw-r--r--public/sdk/inc/mfc42/afxdd_.h64
-rw-r--r--public/sdk/inc/mfc42/afxdisp.h1413
-rw-r--r--public/sdk/inc/mfc42/afxdlgs.h650
-rw-r--r--public/sdk/inc/mfc42/afxdlgs.inl100
-rw-r--r--public/sdk/inc/mfc42/afxdll_.h105
-rw-r--r--public/sdk/inc/mfc42/afxdllx.h68
-rw-r--r--public/sdk/inc/mfc42/afxdocob.h391
-rw-r--r--public/sdk/inc/mfc42/afxext.h1048
-rw-r--r--public/sdk/inc/mfc42/afxext.inl121
-rw-r--r--public/sdk/inc/mfc42/afxhelp.hm272
-rw-r--r--public/sdk/inc/mfc42/afxinet.h671
-rw-r--r--public/sdk/inc/mfc42/afxinet.inl69
-rw-r--r--public/sdk/inc/mfc42/afxisapi.h561
-rw-r--r--public/sdk/inc/mfc42/afxisapi.inl121
-rw-r--r--public/sdk/inc/mfc42/afxisapi.rc45
-rw-r--r--public/sdk/inc/mfc42/afxmsg_.h695
-rw-r--r--public/sdk/inc/mfc42/afxmt.h255
-rw-r--r--public/sdk/inc/mfc42/afxmt.inl50
-rw-r--r--public/sdk/inc/mfc42/afxodlgs.h502
-rw-r--r--public/sdk/inc/mfc42/afxole.h1907
-rw-r--r--public/sdk/inc/mfc42/afxole.inl408
-rw-r--r--public/sdk/inc/mfc42/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/afxplex_.h53
-rw-r--r--public/sdk/inc/mfc42/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/afxpriv.h789
-rw-r--r--public/sdk/inc/mfc42/afxpriv2.h225
-rw-r--r--public/sdk/inc/mfc42/afxres.h772
-rw-r--r--public/sdk/inc/mfc42/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/afxrich.h399
-rw-r--r--public/sdk/inc/mfc42/afxrich.inl56
-rw-r--r--public/sdk/inc/mfc42/afxsock.h365
-rw-r--r--public/sdk/inc/mfc42/afxsock.inl53
-rw-r--r--public/sdk/inc/mfc42/afxstat_.h363
-rw-r--r--public/sdk/inc/mfc42/afxtempl.h1648
-rw-r--r--public/sdk/inc/mfc42/afxtls_.h240
-rw-r--r--public/sdk/inc/mfc42/afxv_cfg.h17
-rw-r--r--public/sdk/inc/mfc42/afxv_cpu.h63
-rw-r--r--public/sdk/inc/mfc42/afxv_dll.h53
-rw-r--r--public/sdk/inc/mfc42/afxv_mac.h52
-rw-r--r--public/sdk/inc/mfc42/afxv_w32.h208
-rw-r--r--public/sdk/inc/mfc42/afxver_.h327
-rw-r--r--public/sdk/inc/mfc42/afxwin.h4645
-rw-r--r--public/sdk/inc/mfc42/afxwin1.inl1091
-rw-r--r--public/sdk/inc/mfc42/afxwin2.inl1043
-rw-r--r--public/sdk/inc/mfc42/daogetrw.h143
-rw-r--r--public/sdk/inc/mfc42/datapath.h601
-rw-r--r--public/sdk/inc/mfc42/dbdaoerr.h448
-rw-r--r--public/sdk/inc/mfc42/dbdaoid.h131
-rw-r--r--public/sdk/inc/mfc42/dbdaoint.h776
-rw-r--r--public/sdk/inc/mfc42/docobj.h1654
-rw-r--r--public/sdk/inc/mfc42/idispids.h12
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/mfcsamps.mak490
-rw-r--r--public/sdk/inc/mfc42/mssccprj.scc4
-rw-r--r--public/sdk/inc/mfc42/res/3dcheck.bmpbin0 -> 1522 bytes
-rw-r--r--public/sdk/inc/mfc42/res/95check.bmpbin0 -> 338 bytes
-rw-r--r--public/sdk/inc/mfc42/res/copy4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/help.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/help.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/magnify.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/magnify.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/minifwnd.bmpbin0 -> 198 bytes
-rw-r--r--public/sdk/inc/mfc42/res/move4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/nodrop.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/ntcheck.bmpbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/sarrows.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/split.rscbin0 -> 546 bytes
-rw-r--r--public/sdk/inc/mfc42/res/splith.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/splitv.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trck4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trcknesw.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trckns.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trcknwse.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trckwe.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/truetype.bmpbin0 -> 262 bytes
-rw-r--r--public/sdk/inc/mfc42/servprov.h191
-rw-r--r--public/sdk/inc/mfc42/sql.h1259
-rw-r--r--public/sdk/inc/mfc42/sqlext.h293
-rw-r--r--public/sdk/inc/mfc42/sqltypes.h138
-rw-r--r--public/sdk/inc/mfc42/winres.h597
149 files changed, 47748 insertions, 0 deletions
diff --git a/public/sdk/inc/mfc42/afx.h b/public/sdk/inc/mfc42/afx.h
new file mode 100644
index 000000000..bcbf102f1
--- /dev/null
+++ b/public/sdk/inc/mfc42/afx.h
@@ -0,0 +1,1916 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFX_H__
+#define __AFX_H__
+
+#ifndef __cplusplus
+ #error MFC requires C++ compilation (use a .cpp suffix)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#include <afxver_.h> // Target version control
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxcwd.lib")
+ #else
+ #pragma comment(lib, "nafxcw.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "uafxcwd.lib")
+ #else
+ #pragma comment(lib, "uafxcw.lib")
+ #endif
+ #endif
+#else
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc42d.lib")
+ #pragma comment(lib, "mfcs42d.lib")
+ #else
+ #pragma comment(lib, "mfc42.lib")
+ #pragma comment(lib, "mfcs42.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc42ud.lib")
+ #pragma comment(lib, "mfcs42ud.lib")
+ #else
+ #pragma comment(lib, "mfc42u.lib")
+ #pragma comment(lib, "mfcs42u.lib")
+ #endif
+ #endif
+#endif
+
+#ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+#else
+#ifdef _MT
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcmtd.lib")
+ #else
+ #pragma comment(lib, "libcmt.lib")
+ #endif
+#else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+#endif
+#endif
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "gdi32.lib")
+#pragma comment(lib, "comdlg32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+#pragma comment(lib, "shell32.lib")
+#pragma comment(lib, "comctl32.lib")
+
+#else //!_MAC
+
+//////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifndef _AFXDLL
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcmd.lib")
+ #else
+ #pragma comment(lib, "nafxcpd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcm.lib")
+ #else
+ #pragma comment(lib, "nafxcp.lib")
+ #endif
+ #endif
+#else
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc42pd.lib")
+ #pragma comment(lib, "mfcs42pd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc42p.lib")
+ #pragma comment(lib, "mfcs42p.lib")
+ #endif
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmd.lib")
+ #pragma comment(lib, "comctld.lib")
+ #else
+ #pragma comment(lib, "wlm.lib")
+ #pragma comment(lib, "comctl.lib")
+ #endif
+ #pragma comment(linker, "/macres:wlm.rsc /macres:commdlg.rsc")
+ #pragma comment(linker, "/macres:comctl.rsc")
+ #ifdef _MPPC_
+ #pragma comment(lib, "privint.lib")
+ #pragma comment(lib, "threads.lib")
+ #pragma comment(lib, "math.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcwlmd.lib")
+ #pragma comment(lib, "msvcctld.lib")
+ #else
+ #pragma comment(lib, "msvcwlm.lib")
+ #pragma comment(lib, "msvcctl.lib")
+ #endif
+#endif
+
+#ifdef _68K_
+ #ifdef _DEBUG
+ #pragma comment(lib, "swapd.lib")
+ #else
+ #pragma comment(lib, "swap.lib")
+ #endif
+ #pragma comment(lib, "lsanes.lib")
+ #pragma comment(lib, "llibcs.lib")
+ #pragma comment(lib, "osl.lib")
+#endif
+
+#ifdef _MPPC_
+ #ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+ #else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+ #endif
+#endif
+
+#endif //_MAC
+
+// force inclusion of NOLIB.OBJ for /disallowlib directives
+#pragma comment(linker, "/include:__afxForceEXCLUDE")
+
+// force inclusion of DLLMODUL.OBJ for _USRDLL
+#ifdef _USRDLL
+#pragma comment(linker, "/include:__afxForceUSRDLL")
+#endif
+
+// force inclusion of STDAFX.OBJ for precompiled types
+#ifdef _AFXDLL
+#pragma comment(linker, "/include:__afxForceSTDAFX")
+#endif
+
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+// in addition to standard primitive data types and various helper macros
+
+struct CRuntimeClass; // object type information
+
+class CObject; // the root of all objects classes
+
+ class CException; // the root of all exceptions
+ class CArchiveException; // archive exception
+ class CFileException; // file exception
+ class CSimpleException;
+ class CMemoryException; // out-of-memory exception
+ class CNotSupportedException; // feature not supported exception
+
+ class CFile; // raw binary file
+ class CStdioFile; // buffered stdio text/binary file
+ class CMemFile; // memory based file
+
+// Non CObject classes
+class CString; // growable string type
+class CTimeSpan; // time/date difference
+class CTime; // absolute time/date
+struct CFileStatus; // file status information
+struct CMemoryState; // diagnostic memory support
+
+class CArchive; // object persistence tool
+class CDumpContext; // object diagnostic dumping
+
+/////////////////////////////////////////////////////////////////////////////
+// Other includes from standard "C" runtimes
+
+#ifndef _INC_STRING
+ #include <string.h>
+#endif
+#ifndef _INC_STDIO
+ #include <stdio.h>
+#endif
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TIME
+ #include <time.h>
+#endif
+#ifndef _INC_LIMITS
+ #include <limits.h>
+#endif
+#ifndef _INC_STDDEF
+ #include <stddef.h>
+#endif
+#ifndef _INC_STDARG
+ #include <stdarg.h>
+#endif
+
+#ifndef _AFX_NO_DEBUG_CRT
+#ifndef _INC_CRTDBG
+ #include <crtdbg.h>
+#endif
+#endif // _AFX_NO_DEBUG_CRT
+
+#ifdef _AFX_OLD_EXCEPTIONS
+// use setjmp and helper functions instead of C++ keywords
+#ifndef _INC_SETJMP
+ #pragma warning(disable: 4611)
+ #include <setjmp.h>
+#endif
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic types
+
+// abstract iteration position
+struct __POSITION { };
+typedef __POSITION* POSITION;
+
+struct _AFX_DOUBLE { BYTE doubleBits[sizeof(double)]; };
+struct _AFX_FLOAT { BYTE floatBits[sizeof(float)]; };
+
+// Standard constants
+#undef FALSE
+#undef TRUE
+#undef NULL
+
+#define FALSE 0
+#define TRUE 1
+#define NULL 0
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic support
+
+#ifdef _DEBUG
+
+BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine);
+
+void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);
+// Note: file names are still ANSI strings (filenames rarely need UNICODE)
+void AFXAPI AfxAssertValidObject(const CObject* pOb,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxDump(const CObject* pOb); // Dump an object from CodeView
+
+#define TRACE ::AfxTrace
+#define THIS_FILE __FILE__
+#define ASSERT(f) \
+ do \
+ { \
+ if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \
+ AfxDebugBreak(); \
+ } while (0) \
+
+#define VERIFY(f) ASSERT(f)
+#define ASSERT_VALID(pOb) (::AfxAssertValidObject(pOb, THIS_FILE, __LINE__))
+#define DEBUG_ONLY(f) (f)
+
+// The following trace macros are provided for backward compatiblity
+// (they also take a fixed number of parameters which provides
+// some amount of extra error checking)
+#define TRACE0(sz) ::AfxTrace(_T("%s"), _T(sz))
+#define TRACE1(sz, p1) ::AfxTrace(_T(sz), p1)
+#define TRACE2(sz, p1, p2) ::AfxTrace(_T(sz), p1, p2)
+#define TRACE3(sz, p1, p2, p3) ::AfxTrace(_T(sz), p1, p2, p3)
+
+// These AFX_DUMP macros also provided for backward compatibility
+#define AFX_DUMP0(dc, sz) dc << _T(sz)
+#define AFX_DUMP1(dc, sz, p1) dc << _T(sz) << p1
+
+#else // _DEBUG
+
+#define ASSERT(f) ((void)0)
+#define VERIFY(f) ((void)(f))
+#define ASSERT_VALID(pOb) ((void)0)
+#define DEBUG_ONLY(f) ((void)0)
+inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }
+#define TRACE 1 ? (void)0 : ::AfxTrace
+#define TRACE0(sz)
+#define TRACE1(sz, p1)
+#define TRACE2(sz, p1, p2)
+#define TRACE3(sz, p1, p2, p3)
+
+#endif // !_DEBUG
+
+#define ASSERT_POINTER(p, type) \
+ ASSERT(((p) != NULL) && AfxIsValidAddress((p), sizeof(type), FALSE))
+
+#define ASSERT_NULL_OR_POINTER(p, type) \
+ ASSERT(((p) == NULL) || AfxIsValidAddress((p), sizeof(type), FALSE))
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in release version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#define UNUSED_ALWAYS(x) x
+
+/////////////////////////////////////////////////////////////////////////////
+// Other implementation helpers
+
+#define BEFORE_START_POSITION ((POSITION)-1L)
+
+/////////////////////////////////////////////////////////////////////////////
+// explicit initialization for general purpose classes
+
+BOOL AFXAPI AfxInitialize(BOOL bDLL = FALSE, DWORD dwVersion = _MFC_VER);
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic object model
+
+struct CRuntimeClass
+{
+// Attributes
+ LPCSTR m_lpszClassName;
+ int m_nObjectSize;
+ UINT m_wSchema; // schema number of the loaded class
+ CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
+#ifdef _AFXDLL
+ CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
+#else
+ CRuntimeClass* m_pBaseClass;
+#endif
+
+// Operations
+ CObject* CreateObject();
+ BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
+
+// Implementation
+ void Store(CArchive& ar) const;
+ static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
+
+ // CRuntimeClass objects linked together in simple list
+ CRuntimeClass* m_pNextClass; // linked list of registered classes
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+#ifndef _OLEAUTO_H_
+#ifdef OLE2ANSI
+ typedef LPSTR BSTR;
+#else
+ typedef LPWSTR BSTR;// must (semantically) match typedef in oleauto.h
+#endif
+#endif
+
+struct CStringData
+{
+ long nRefs; // reference count
+ int nDataLength;
+ int nAllocLength;
+ // TCHAR data[nAllocLength]
+
+ TCHAR* data()
+ { return (TCHAR*)(this+1); }
+};
+
+class CString
+{
+public:
+// Constructors
+ CString();
+ CString(const CString& stringSrc);
+ CString(TCHAR ch, int nRepeat = 1);
+ CString(LPCSTR lpsz);
+ CString(LPCWSTR lpsz);
+ CString(LPCTSTR lpch, int nLength);
+ CString(const unsigned char* psz);
+
+// Attributes & Operations
+ // as an array of characters
+ int GetLength() const;
+ BOOL IsEmpty() const;
+ void Empty(); // free up the data
+
+ TCHAR GetAt(int nIndex) const; // 0 based
+ TCHAR operator[](int nIndex) const; // same as GetAt
+ void SetAt(int nIndex, TCHAR ch);
+ operator LPCTSTR() const; // as a C string
+
+ // overloaded assignment
+ const CString& operator=(const CString& stringSrc);
+ const CString& operator=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator=(char ch);
+#endif
+ const CString& operator=(LPCSTR lpsz);
+ const CString& operator=(LPCWSTR lpsz);
+ const CString& operator=(const unsigned char* psz);
+
+ // string concatenation
+ const CString& operator+=(const CString& string);
+ const CString& operator+=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator+=(char ch);
+#endif
+ const CString& operator+=(LPCTSTR lpsz);
+
+ friend CString AFXAPI operator+(const CString& string1,
+ const CString& string2);
+ friend CString AFXAPI operator+(const CString& string, TCHAR ch);
+ friend CString AFXAPI operator+(TCHAR ch, const CString& string);
+#ifdef _UNICODE
+ friend CString AFXAPI operator+(const CString& string, char ch);
+ friend CString AFXAPI operator+(char ch, const CString& string);
+#endif
+ friend CString AFXAPI operator+(const CString& string, LPCTSTR lpsz);
+ friend CString AFXAPI operator+(LPCTSTR lpsz, const CString& string);
+
+ // string comparison
+ int Compare(LPCTSTR lpsz) const; // straight character
+ int CompareNoCase(LPCTSTR lpsz) const; // ignore case
+ int Collate(LPCTSTR lpsz) const; // NLS aware
+
+ // simple sub-string extraction
+ CString Mid(int nFirst, int nCount) const;
+ CString Mid(int nFirst) const;
+ CString Left(int nCount) const;
+ CString Right(int nCount) const;
+
+ CString SpanIncluding(LPCTSTR lpszCharSet) const;
+ CString SpanExcluding(LPCTSTR lpszCharSet) const;
+
+ // upper/lower/reverse conversion
+ void MakeUpper();
+ void MakeLower();
+ void MakeReverse();
+
+ // trimming whitespace (either side)
+ void TrimRight();
+ void TrimLeft();
+
+ // searching (return starting index, or -1 if not found)
+ // look for a single character match
+ int Find(TCHAR ch) const; // like "C" strchr
+ int ReverseFind(TCHAR ch) const;
+ int FindOneOf(LPCTSTR lpszCharSet) const;
+
+ // look for a specific sub-string
+ int Find(LPCTSTR lpszSub) const; // like "C" strstr
+
+ // simple formatting
+ void AFX_CDECL Format(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL Format(UINT nFormatID, ...);
+
+#ifndef _MAC
+ // formatting for localization (uses FormatMessage API)
+ void AFX_CDECL FormatMessage(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL FormatMessage(UINT nFormatID, ...);
+#endif
+
+ // input and output
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,
+ const CString& string);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CString& string);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CString& string);
+
+ // Windows support
+ BOOL LoadString(UINT nID); // load from string resource
+ // 255 chars max
+#ifndef _UNICODE
+ // ANSI <-> OEM support (convert string in place)
+ void AnsiToOem();
+ void OemToAnsi();
+#endif
+
+#ifndef _AFX_NO_BSTR_SUPPORT
+ // OLE BSTR support (use for OLE automation)
+ BSTR AllocSysString() const;
+ BSTR SetSysString(BSTR* pbstr) const;
+#endif
+
+ // Access to string implementation buffer as "C" character array
+ LPTSTR GetBuffer(int nMinBufLength);
+ void ReleaseBuffer(int nNewLength = -1);
+ LPTSTR GetBufferSetLength(int nNewLength);
+ void FreeExtra();
+
+ // Use LockBuffer/UnlockBuffer to turn refcounting off
+ LPTSTR LockBuffer();
+ void UnlockBuffer();
+
+// Implementation
+public:
+ ~CString();
+ int GetAllocLength() const;
+
+protected:
+ LPTSTR m_pchData; // pointer to ref counted string data
+
+ // implementation helpers
+ CStringData* GetData() const;
+ void Init();
+ void AllocCopy(CString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const;
+ void AllocBuffer(int nLen);
+ void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
+ void ConcatCopy(int nSrc1Len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszSrc2Data);
+ void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
+ void FormatV(LPCTSTR lpszFormat, va_list argList);
+ void CopyBeforeWrite();
+ void AllocBeforeWrite(int nLen);
+ void Release();
+ static void PASCAL Release(CStringData* pData);
+ static int PASCAL SafeStrlen(LPCTSTR lpsz);
+};
+
+// Compare helpers
+BOOL AFXAPI operator==(const CString& s1, const CString& s2);
+BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2);
+
+// conversion helpers
+int AFX_CDECL _wcstombsz(char* mbstr, const wchar_t* wcstr, size_t count);
+int AFX_CDECL _mbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count);
+
+// Globals
+extern AFX_DATA TCHAR afxChNil;
+const CString& AFXAPI AfxGetEmptyString();
+#define afxEmptyString AfxGetEmptyString()
+
+/////////////////////////////////////////////////////////////////////////////
+// class CObject is the root of all compliant objects
+
+class CObject
+{
+public:
+
+// Object model (types, destruction, allocation)
+ virtual CRuntimeClass* GetRuntimeClass() const;
+ virtual ~CObject(); // virtual destructors are necessary
+
+ // Diagnostic allocations
+ void* PASCAL operator new(size_t nSize);
+ void* PASCAL operator new(size_t, void* p);
+ void PASCAL operator delete(void* p);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ // for file name/line number tracking using DEBUG_NEW
+ void* PASCAL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#endif
+
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+protected:
+ CObject();
+private:
+ CObject(const CObject& objectSrc); // no implementation
+ void operator=(const CObject& objectSrc); // no implementation
+
+// Attributes
+public:
+ BOOL IsSerializable() const;
+ BOOL IsKindOf(const CRuntimeClass* pClass) const;
+
+// Overridables
+ virtual void Serialize(CArchive& ar);
+
+ // Diagnostic Support
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+// Implementation
+public:
+ static const AFX_DATA CRuntimeClass classCObject;
+#ifdef _AFXDLL
+ static CRuntimeClass* PASCAL _GetBaseClass();
+#endif
+};
+
+// Helper macros
+#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))
+#define ASSERT_KINDOF(class_name, object) \
+ ASSERT((object)->IsKindOf(RUNTIME_CLASS(class_name)))
+
+// RTTI helper macros/functions
+const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define DYNAMIC_DOWNCAST(class_name, object) \
+ (class_name*)AfxDynamicDownCast(RUNTIME_CLASS(class_name), object)
+
+#ifdef _DEBUG
+const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define STATIC_DOWNCAST(class_name, object) \
+ ((class_name*)AfxStaticDownCast(RUNTIME_CLASS(class_name), object))
+#else
+#define STATIC_DOWNCAST(class_name, object) ((class_name*)object)
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// Helper macros for declaring CRuntimeClass compatible classes
+
+#ifdef _AFXDLL
+#define DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static const AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#define _DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#else
+#define DECLARE_DYNAMIC(class_name) \
+public: \
+ static const AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#define _DECLARE_DYNAMIC(class_name) \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#endif
+
+// not serializable, but dynamically constructable
+#define DECLARE_DYNCREATE(class_name) \
+ DECLARE_DYNAMIC(class_name) \
+ static CObject* PASCAL CreateObject();
+
+#define _DECLARE_DYNCREATE(class_name) \
+ _DECLARE_DYNAMIC(class_name) \
+ static CObject* PASCAL CreateObject();
+
+#define DECLARE_SERIAL(class_name) \
+ _DECLARE_DYNCREATE(class_name) \
+ friend CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb);
+
+// generate static object constructor for class registration
+struct AFX_CLASSINIT
+ { AFX_CLASSINIT(CRuntimeClass* pNewClass); };
+
+#ifdef _AFXDLL
+#define IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ const AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#else
+#define IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ const AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#endif
+
+#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
+ IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, NULL)
+
+#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
+ class_name::CreateObject)
+
+#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
+ class_name::CreateObject) \
+ static const AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name)); \
+ CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
+ { pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
+ return ar; } \
+
+// optional bit for schema number that enables object versioning
+#define VERSIONABLE_SCHEMA (0x80000000)
+
+/////////////////////////////////////////////////////////////////////////////
+// other helpers
+
+// zero fill everything after the vtbl pointer
+#define AFX_ZERO_INIT_OBJECT(base_class) \
+ memset(((base_class*)this)+1, 0, sizeof(*this) - sizeof(class base_class));
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Exceptions
+
+class CException : public CObject
+{
+ // abstract class for dynamic type checking
+ DECLARE_DYNAMIC(CException)
+
+public:
+// Constructors
+ CException(); // sets m_bAutoDelete = TRUE
+ CException(BOOL bAutoDelete); // sets m_bAutoDelete = bAutoDelete
+
+// Operations
+ void Delete(); // use to delete exception in 'catch' block
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+ virtual int ReportError(UINT nType = MB_OK, UINT nMessageID = 0);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CException();
+ BOOL m_bAutoDelete;
+#ifdef _DEBUG
+ void PASCAL operator delete(void* p);
+protected:
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+class CSimpleException : public CException
+{
+ // base class for resource-critical MFC exceptions
+ // handles ownership and initialization of an error message
+
+public:
+// Constructors
+ CSimpleException();
+ CSimpleException(BOOL bAutoDelete);
+
+// Operations
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CSimpleException();
+ BOOL m_bAutoDelete;
+
+ void InitString(); // used during MFC initialization
+
+protected:
+ BOOL m_bInitialized;
+ BOOL m_bLoaded;
+ TCHAR m_szMessage[128];
+ UINT m_nResourceID;
+
+#ifdef _DEBUG
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+// helper routines for non-C++ EH implementations
+#ifdef _AFX_OLD_EXCEPTIONS
+ BOOL AFXAPI AfxCatchProc(CRuntimeClass* pClass);
+ void AFXAPI AfxThrow(CException* pException);
+#else
+ // for THROW_LAST auto-delete backward compatiblity
+ void AFXAPI AfxThrowLastCleanup();
+#endif
+
+// other out-of-line helper functions
+void AFXAPI AfxTryCleanup();
+
+#ifndef _AFX_JUMPBUF
+// Use portable 'jmp_buf' defined by ANSI by default.
+#define _AFX_JUMPBUF jmp_buf
+#endif
+
+// Placed on frame for EXCEPTION linkage, or CException cleanup
+struct AFX_EXCEPTION_LINK
+{
+#ifdef _AFX_OLD_EXCEPTIONS
+ union
+ {
+ _AFX_JUMPBUF m_jumpBuf;
+ struct
+ {
+ void (PASCAL* pfnCleanup)(AFX_EXCEPTION_LINK* pLink);
+ void* pvData; // extra data follows
+ } m_callback; // callback for cleanup (nType != 0)
+ };
+ UINT m_nType; // 0 for setjmp, !=0 for user extension
+#endif //!_AFX_OLD_EXCEPTIONS
+
+ AFX_EXCEPTION_LINK* m_pLinkPrev; // previous top, next in handler chain
+ CException* m_pException; // current exception (NULL in TRY block)
+
+ AFX_EXCEPTION_LINK(); // for initialization and linking
+ ~AFX_EXCEPTION_LINK() // for cleanup and unlinking
+ { AfxTryCleanup(); };
+};
+
+// Exception global state - never access directly
+struct AFX_EXCEPTION_CONTEXT
+{
+ AFX_EXCEPTION_LINK* m_pLinkTop;
+
+ // Note: most of the exception context is now in the AFX_EXCEPTION_LINK
+};
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+_PNH AFXAPI AfxGetNewHandler();
+_PNH AFXAPI AfxSetNewHandler(_PNH pfnNewHandler);
+int AFX_CDECL AfxNewHandler(size_t nSize);
+
+void AFXAPI AfxAbort();
+
+#ifdef _AFX_OLD_EXCEPTIONS
+
+// Obsolete and non-portable: setting terminate handler
+// use CWinApp::ProcessWndProcException for Windows apps instead
+// can also use set_terminate which is part of C++ standard library
+// (these are provided for backward compatibility)
+void AFXAPI AfxTerminate();
+typedef void (AFXAPI* AFX_TERM_PROC)();
+AFX_TERM_PROC AFXAPI AfxSetTerminate(AFX_TERM_PROC);
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using try, catch and throw
+// (for backward compatibility to previous versions of MFC)
+
+#ifndef _AFX_OLD_EXCEPTIONS
+
+#define TRY { AFX_EXCEPTION_LINK _afxExceptionLink; try {
+
+#define CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH } }
+
+#define THROW(e) throw e
+#define THROW_LAST() (AfxThrowLastCleanup(), throw)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH_ALL } } }
+
+#define END_TRY } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e; } }
+
+#else //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using setjmp and longjmp
+// (for portability to compilers with no support for C++ exception handling)
+
+#define TRY \
+ { AFX_EXCEPTION_LINK _afxExceptionLink; \
+ if (::setjmp(_afxExceptionLink.m_jumpBuf) == 0)
+
+#define CATCH(class, e) \
+ else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define AND_CATCH(class, e) \
+ } else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define END_CATCH \
+ } else { ::AfxThrow(NULL); } }
+
+#define THROW(e) AfxThrow(e)
+#define THROW_LAST() AfxThrow(NULL)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) \
+ else { CException* e = _afxExceptionLink.m_pException;
+
+#define AND_CATCH_ALL(e) \
+ } else { CException* e = _afxExceptionLink.m_pException;
+
+#define END_CATCH_ALL } }
+
+#define END_TRY }
+
+#endif //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Exception classes
+
+class CMemoryException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CMemoryException)
+public:
+ CMemoryException();
+
+// Implementation
+public:
+ CMemoryException(BOOL bAutoDelete);
+ CMemoryException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CMemoryException();
+};
+
+class CNotSupportedException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CNotSupportedException)
+public:
+ CNotSupportedException();
+
+// Implementation
+public:
+ CNotSupportedException(BOOL bAutoDelete);
+ CNotSupportedException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CNotSupportedException();
+};
+
+class CArchiveException : public CException
+{
+ DECLARE_DYNAMIC(CArchiveException)
+public:
+ enum {
+ none,
+ generic,
+ readOnly,
+ endOfFile,
+ writeOnly,
+ badIndex,
+ badClass,
+ badSchema
+ };
+
+// Constructor
+ CArchiveException(int cause = CArchiveException::none,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ CString m_strFileName;
+
+// Implementation
+public:
+ virtual ~CArchiveException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+class CFileException : public CException
+{
+ DECLARE_DYNAMIC(CFileException)
+
+public:
+ enum {
+ none,
+ generic,
+ fileNotFound,
+ badPath,
+ tooManyOpenFiles,
+ accessDenied,
+ invalidFile,
+ removeCurrentDir,
+ directoryFull,
+ badSeek,
+ hardIO,
+ sharingViolation,
+ lockViolation,
+ diskFull,
+ endOfFile
+ };
+
+// Constructor
+ CFileException(int cause = CFileException::none, LONG lOsError = -1,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ LONG m_lOsError;
+ CString m_strFileName;
+
+// Operations
+ // convert a OS dependent error code to a Cause
+ static int PASCAL OsErrorToException(LONG lOsError);
+ static int PASCAL ErrnoToException(int nErrno);
+
+ // helper functions to throw exception after converting to a Cause
+ static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
+ static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
+
+// Implementation
+public:
+ virtual ~CFileException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exception throws
+
+void AFXAPI AfxThrowMemoryException();
+void AFXAPI AfxThrowNotSupportedException();
+void AFXAPI AfxThrowArchiveException(int cause,
+ LPCTSTR lpszArchiveName = NULL);
+void AFXAPI AfxThrowFileException(int cause, LONG lOsError = -1,
+ LPCTSTR lpszFileName = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// File - raw unbuffered disk file I/O
+
+class CFile : public CObject
+{
+ DECLARE_DYNAMIC(CFile)
+
+public:
+// Flag values
+ enum OpenFlags {
+ modeRead = 0x0000,
+ modeWrite = 0x0001,
+ modeReadWrite = 0x0002,
+ shareCompat = 0x0000,
+ shareExclusive = 0x0010,
+ shareDenyWrite = 0x0020,
+ shareDenyRead = 0x0030,
+ shareDenyNone = 0x0040,
+ modeNoInherit = 0x0080,
+ modeCreate = 0x1000,
+ modeNoTruncate = 0x2000,
+ typeText = 0x4000, // typeText and typeBinary are used in
+ typeBinary = (int)0x8000 // derived classes only
+ };
+
+ enum Attribute {
+ normal = 0x00,
+ readOnly = 0x01,
+ hidden = 0x02,
+ system = 0x04,
+ volume = 0x08,
+ directory = 0x10,
+ archive = 0x20
+ };
+
+ enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 };
+
+ enum { hFileNull = -1 };
+
+// Constructors
+ CFile();
+ CFile(int hFile);
+ CFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ UINT m_hFile;
+ operator HFILE() const;
+
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual CString GetFileName() const;
+ virtual CString GetFileTitle() const;
+ virtual CString GetFilePath() const;
+ virtual void SetFilePath(LPCTSTR lpszNewName);
+
+// Operations
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+ static void PASCAL Rename(LPCTSTR lpszOldName,
+ LPCTSTR lpszNewName);
+ static void PASCAL Remove(LPCTSTR lpszFileName);
+ static BOOL PASCAL GetStatus(LPCTSTR lpszFileName,
+ CFileStatus& rStatus);
+ static void PASCAL SetStatus(LPCTSTR lpszFileName,
+ const CFileStatus& status);
+
+ DWORD SeekToEnd();
+ void SeekToBegin();
+
+ // backward compatible ReadHuge and WriteHuge
+ DWORD ReadHuge(void* lpBuffer, DWORD dwCount);
+ void WriteHuge(const void* lpBuffer, DWORD dwCount);
+
+// Overridables
+ virtual CFile* Duplicate() const;
+
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ enum BufferCommand { bufferRead, bufferWrite, bufferCommit, bufferCheck };
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+protected:
+ BOOL m_bCloseOnDelete;
+ CString m_strFileName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// STDIO file implementation
+
+class CStdioFile : public CFile
+{
+ DECLARE_DYNAMIC(CStdioFile)
+
+public:
+// Constructors
+ CStdioFile();
+ CStdioFile(FILE* pOpenStream);
+ CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ FILE* m_pStream; // stdio FILE
+ // m_hFile from base class is _fileno(m_pStream)
+
+// Operations
+ // reading and writing strings
+ virtual void WriteString(LPCTSTR lpsz);
+ virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ virtual BOOL ReadString(CString& rString);
+
+// Implementation
+public:
+ virtual ~CStdioFile();
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+ virtual DWORD GetPosition() const;
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+////////////////////////////////////////////////////////////////////////////
+// Memory based file implementation
+
+class CMemFile : public CFile
+{
+ DECLARE_DYNAMIC(CMemFile)
+
+public:
+// Constructors
+ CMemFile(UINT nGrowBytes = 1024);
+ CMemFile(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void Free(BYTE* lpMem);
+ virtual void GrowFile(DWORD dwNewLen);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ DWORD m_nFileSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CMemFile();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+#ifndef _MAC
+
+////////////////////////////////////////////////////////////////////////////
+// Local file searches
+
+class CFileFind : public CObject
+{
+public:
+ CFileFind();
+ virtual ~CFileFind();
+
+// Attributes
+public:
+ DWORD GetLength() const;
+#if defined(_X86_) || defined(_ALPHA_)
+ __int64 GetLength64() const;
+#endif
+ virtual CString GetFileName() const;
+ virtual CString GetFilePath() const;
+ virtual CString GetFileTitle() const;
+ virtual CString GetFileURL() const;
+ virtual CString GetRoot() const;
+
+ virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastWriteTime(CTime& refTime) const;
+ virtual BOOL GetLastAccessTime(CTime& refTime) const;
+ virtual BOOL GetCreationTime(CTime& refTime) const;
+
+ virtual BOOL MatchesMask(DWORD dwMask) const;
+
+ virtual BOOL IsDots() const;
+ // these aren't virtual because they all use MatchesMask(), which is
+ BOOL IsReadOnly() const;
+ BOOL IsDirectory() const;
+ BOOL IsCompressed() const;
+ BOOL IsSystem() const;
+ BOOL IsHidden() const;
+ BOOL IsTemporary() const;
+ BOOL IsNormal() const;
+ BOOL IsArchived() const;
+
+// Operations
+ void Close();
+ virtual BOOL FindFile(LPCTSTR pstrName = NULL, DWORD dwUnused = 0);
+ virtual BOOL FindNextFile();
+
+protected:
+ virtual void CloseContext();
+
+// Implementation
+protected:
+ void* m_pFoundInfo;
+ void* m_pNextInfo;
+ HANDLE m_hContext;
+ BOOL m_bGotLast;
+ CString m_strRoot;
+ TCHAR m_chDirSeparator; // not '\\' for Internet classes
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+ void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFileFind)
+};
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CTimeSpan and CTime
+
+class CTimeSpan
+{
+public:
+
+// Constructors
+ CTimeSpan();
+ CTimeSpan(time_t time);
+ CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
+
+ CTimeSpan(const CTimeSpan& timeSpanSrc);
+ const CTimeSpan& operator=(const CTimeSpan& timeSpanSrc);
+
+// Attributes
+ // extract parts
+ LONG GetDays() const; // total # of days
+ LONG GetTotalHours() const;
+ int GetHours() const;
+ LONG GetTotalMinutes() const;
+ int GetMinutes() const;
+ LONG GetTotalSeconds() const;
+ int GetSeconds() const;
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTimeSpan timeSpan) const;
+ CTimeSpan operator+(CTimeSpan timeSpan) const;
+ const CTimeSpan& operator+=(CTimeSpan timeSpan);
+ const CTimeSpan& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTimeSpan timeSpan) const;
+ BOOL operator!=(CTimeSpan timeSpan) const;
+ BOOL operator<(CTimeSpan timeSpan) const;
+ BOOL operator>(CTimeSpan timeSpan) const;
+ BOOL operator<=(CTimeSpan timeSpan) const;
+ BOOL operator>=(CTimeSpan timeSpan) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+#endif
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,CTimeSpan timeSpan);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTimeSpan timeSpan);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTimeSpan& rtimeSpan);
+
+private:
+ time_t m_timeSpan;
+ friend class CTime;
+};
+
+class CTime
+{
+public:
+
+// Constructors
+ static CTime PASCAL GetCurrentTime();
+
+ CTime();
+ CTime(time_t time);
+ CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec,
+ int nDST = -1);
+ CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
+ CTime(const CTime& timeSrc);
+
+ CTime(const SYSTEMTIME& sysTime, int nDST = -1);
+ CTime(const FILETIME& fileTime, int nDST = -1);
+ const CTime& operator=(const CTime& timeSrc);
+ const CTime& operator=(time_t t);
+
+// Attributes
+ struct tm* GetGmtTm(struct tm* ptm = NULL) const;
+ struct tm* GetLocalTm(struct tm* ptm = NULL) const;
+
+ time_t GetTime() const;
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month
+ int GetHour() const;
+ int GetMinute() const;
+ int GetSecond() const;
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTime time) const;
+ CTime operator-(CTimeSpan timeSpan) const;
+ CTime operator+(CTimeSpan timeSpan) const;
+ const CTime& operator+=(CTimeSpan timeSpan);
+ const CTime& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTime time) const;
+ BOOL operator!=(CTime time) const;
+ BOOL operator<(CTime time) const;
+ BOOL operator>(CTime time) const;
+ BOOL operator<=(CTime time) const;
+ BOOL operator>=(CTime time) const;
+
+ // formatting using "C" strftime
+ CString Format(LPCTSTR pFormat) const;
+ CString FormatGmt(LPCTSTR pFormat) const;
+ CString Format(UINT nFormatID) const;
+ CString FormatGmt(UINT nFormatID) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+ CString FormatGmt(LPCSTR pFormat) const;
+#endif
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc, CTime time);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTime time);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTime& rtime);
+
+private:
+ time_t m_time;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// File status
+
+struct CFileStatus
+{
+ CTime m_ctime; // creation date/time of file
+ CTime m_mtime; // last modification date/time of file
+ CTime m_atime; // last access date/time of file
+ LONG m_size; // logical size of file in bytes
+ BYTE m_attribute; // logical OR of CFile::Attribute enum values
+ BYTE _m_padding; // pad the structure to a WORD
+ TCHAR m_szFullName[_MAX_PATH]; // absolute path name
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic memory management routines
+
+// Low level sanity checks for memory blocks
+BOOL AFXAPI AfxIsValidAddress(const void* lp,
+ UINT nBytes, BOOL bReadWrite = TRUE);
+BOOL AFXAPI AfxIsValidString(LPCWSTR lpsz, int nLength = -1);
+BOOL AFXAPI AfxIsValidString(LPCSTR lpsz, int nLength = -1);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+
+// Memory tracking allocation
+void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#define DEBUG_NEW new(THIS_FILE, __LINE__)
+
+void* AFXAPI AfxAllocMemoryDebug(size_t nSize, BOOL bIsObject,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxFreeMemoryDebug(void* pbData, BOOL bIsObject);
+
+// Dump any memory leaks since program started
+BOOL AFXAPI AfxDumpMemoryLeaks();
+
+// Return TRUE if valid memory block of nBytes
+BOOL AFXAPI AfxIsMemoryBlock(const void* p, UINT nBytes,
+ LONG* plRequestNumber = NULL);
+
+// Return TRUE if memory is sane or print out what is wrong
+BOOL AFXAPI AfxCheckMemory();
+
+#define afxMemDF _crtDbgFlag
+
+enum AfxMemDF // memory debug/diagnostic flags
+{
+ allocMemDF = 0x01, // turn on debugging allocator
+ delayFreeMemDF = 0x02, // delay freeing memory
+ checkAlwaysMemDF = 0x04 // AfxCheckMemory on every alloc/free
+};
+
+#ifdef _UNICODE
+#define AfxOutputDebugString(lpsz) \
+ do \
+ { \
+ int _convert; _convert = 0; \
+ _RPT0(_CRT_WARN, W2CA(lpsz)); \
+ } while (0)
+#else
+#define AfxOutputDebugString(lpsz) _RPT0(_CRT_WARN, lpsz)
+#endif
+
+// turn on/off tracking for a short while
+BOOL AFXAPI AfxEnableMemoryTracking(BOOL bTrack);
+
+// Advanced initialization: for overriding default diagnostics
+BOOL AFXAPI AfxDiagnosticInit(void);
+
+// A failure hook returns whether to permit allocation
+typedef BOOL (AFXAPI* AFX_ALLOC_HOOK)(size_t nSize, BOOL bObject, LONG lRequestNumber);
+
+// Set new hook, return old (never NULL)
+AFX_ALLOC_HOOK AFXAPI AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
+
+// Debugger hook on specified allocation request - Obsolete
+void AFXAPI AfxSetAllocStop(LONG lRequestNumber);
+
+// Memory state for snapshots/leak detection
+struct CMemoryState
+{
+// Attributes
+ enum blockUsage
+ {
+ freeBlock, // memory not used
+ objectBlock, // contains a CObject derived class object
+ bitBlock, // contains ::operator new data
+ crtBlock,
+ ignoredBlock,
+ nBlockUseMax // total number of usages
+ };
+
+ _CrtMemState m_memState;
+ LONG m_lCounts[nBlockUseMax];
+ LONG m_lSizes[nBlockUseMax];
+ LONG m_lHighWaterCount;
+ LONG m_lTotalCount;
+
+ CMemoryState();
+
+// Operations
+ void Checkpoint(); // fill with current state
+ BOOL Difference(const CMemoryState& oldState,
+ const CMemoryState& newState); // fill with difference
+ void UpdateData();
+
+ // Output to afxDump
+ void DumpStatistics() const;
+ void DumpAllObjectsSince() const;
+};
+
+// Enumerate allocated objects or runtime classes
+void AFXAPI AfxDoForAllObjects(void (AFX_CDECL *pfn)(CObject* pObject, void* pContext),
+ void* pContext);
+void AFXAPI AfxDoForAllClasses(void (AFX_CDECL *pfn)(const CRuntimeClass* pClass,
+ void* pContext), void* pContext);
+
+#else
+
+// non-_DEBUG_ALLOC version that assume everything is OK
+#define DEBUG_NEW new
+#define AfxCheckMemory() TRUE
+#define AfxIsMemoryBlock(p, nBytes) TRUE
+#define AfxEnableMemoryTracking(bTrack) FALSE
+#define AfxOutputDebugString(lpsz) ::OutputDebugString(lpsz)
+
+// diagnostic initialization
+#ifndef _DEBUG
+#define AfxDiagnosticInit() TRUE
+#else
+BOOL AFXAPI AfxDiagnosticInit(void);
+#endif
+
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Archives for serializing CObject data
+
+// needed for implementation
+class CPtrArray;
+class CMapPtrToPtr;
+class CDocument;
+
+class CArchive
+{
+public:
+// Flag values
+ enum Mode { store = 0, load = 1, bNoFlushOnDelete = 2, bNoByteSwap = 4 };
+
+ CArchive(CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL);
+ ~CArchive();
+
+// Attributes
+ BOOL IsLoading() const;
+ BOOL IsStoring() const;
+ BOOL IsByteSwapping() const;
+ BOOL IsBufferEmpty() const;
+
+ CFile* GetFile() const;
+ UINT GetObjectSchema(); // only valid when reading a CObject*
+ void SetObjectSchema(UINT nSchema);
+
+ // pointer to document being serialized -- must set to serialize
+ // COleClientItems in a document!
+ CDocument* m_pDocument;
+
+// Operations
+ UINT Read(void* lpBuf, UINT nMax);
+ void Write(const void* lpBuf, UINT nMax);
+ void Flush();
+ void Close();
+ void Abort(); // close and shutdown without exceptions
+
+ // reading and writing strings
+ void WriteString(LPCTSTR lpsz);
+ LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ BOOL ReadString(CString& rString);
+
+public:
+ // Object I/O is pointer based to avoid added construction overhead.
+ // Use the Serialize member function directly for embedded objects.
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb);
+
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb);
+
+ // insertion operations
+ CArchive& operator<<(BYTE by);
+ CArchive& operator<<(WORD w);
+ CArchive& operator<<(LONG l);
+ CArchive& operator<<(DWORD dw);
+ CArchive& operator<<(float f);
+ CArchive& operator<<(double d);
+
+ CArchive& operator<<(int i);
+ CArchive& operator<<(short w);
+ CArchive& operator<<(char ch);
+ CArchive& operator<<(unsigned u);
+
+ // extraction operations
+ CArchive& operator>>(BYTE& by);
+ CArchive& operator>>(WORD& w);
+ CArchive& operator>>(DWORD& dw);
+ CArchive& operator>>(LONG& l);
+ CArchive& operator>>(float& f);
+ CArchive& operator>>(double& d);
+
+ CArchive& operator>>(int& i);
+ CArchive& operator>>(short& w);
+ CArchive& operator>>(char& ch);
+ CArchive& operator>>(unsigned& u);
+
+ // object read/write
+ CObject* ReadObject(const CRuntimeClass* pClass);
+ void WriteObject(const CObject* pOb);
+ // advanced object mapping (used for forced references)
+ void MapObject(const CObject* pOb);
+
+ // advanced versioning support
+ void WriteClass(const CRuntimeClass* pClassRef);
+ CRuntimeClass* ReadClass(const CRuntimeClass* pClassRefRequested = NULL,
+ UINT* pSchema = NULL, DWORD* pObTag = NULL);
+ void SerializeClass(const CRuntimeClass* pClassRef);
+
+ // advanced operations (used when storing/loading many objects)
+ void SetStoreParams(UINT nHashSize = 2053, UINT nBlockSize = 128);
+ void SetLoadParams(UINT nGrowBy = 1024);
+
+// Implementation
+public:
+ BOOL m_bForceFlat; // for COleClientItem implementation (default TRUE)
+ BOOL m_bDirectBuffer; // TRUE if m_pFile supports direct buffering
+ void FillBuffer(UINT nBytesNeeded);
+ void CheckCount(); // throw exception if m_nMapCount is too large
+
+ // special functions for reading and writing (16-bit compatible) counts
+ DWORD ReadCount();
+ void WriteCount(DWORD dwCount);
+
+ // public for advanced use
+ UINT m_nObjectSchema;
+ CString m_strFileName;
+
+protected:
+ // archive objects cannot be copied or assigned
+ CArchive(const CArchive& arSrc);
+ void operator=(const CArchive& arSrc);
+
+ BOOL m_nMode;
+ BOOL m_bUserBuf;
+ int m_nBufSize;
+ CFile* m_pFile;
+ BYTE* m_lpBufCur;
+ BYTE* m_lpBufMax;
+ BYTE* m_lpBufStart;
+
+ // array/map for CObject* and CRuntimeClass* load/store
+ UINT m_nMapCount;
+ union
+ {
+ CPtrArray* m_pLoadArray;
+ CMapPtrToPtr* m_pStoreMap;
+ };
+ // map to keep track of mismatched schemas
+ CMapPtrToPtr* m_pSchemaMap;
+
+ // advanced parameters (controls performance with large archives)
+ UINT m_nGrowSize;
+ UINT m_nHashSize;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic dumping
+
+class CDumpContext
+{
+public:
+ CDumpContext(CFile* pFile = NULL);
+
+// Attributes
+ int GetDepth() const; // 0 => this object, 1 => children objects
+ void SetDepth(int nNewDepth);
+
+// Operations
+ CDumpContext& operator<<(LPCTSTR lpsz);
+#ifdef _UNICODE
+ CDumpContext& operator<<(LPCSTR lpsz); // automatically widened
+#else
+ CDumpContext& operator<<(LPCWSTR lpsz); // automatically thinned
+#endif
+ CDumpContext& operator<<(const void* lp);
+ CDumpContext& operator<<(const CObject* pOb);
+ CDumpContext& operator<<(const CObject& ob);
+ CDumpContext& operator<<(BYTE by);
+ CDumpContext& operator<<(WORD w);
+ CDumpContext& operator<<(UINT u);
+ CDumpContext& operator<<(LONG l);
+ CDumpContext& operator<<(DWORD dw);
+ CDumpContext& operator<<(float f);
+ CDumpContext& operator<<(double d);
+ CDumpContext& operator<<(int n);
+ void HexDump(LPCTSTR lpszLine, BYTE* pby, int nBytes, int nWidth);
+ void Flush();
+
+// Implementation
+protected:
+ // dump context objects cannot be copied or assigned
+ CDumpContext(const CDumpContext& dcSrc);
+ void operator=(const CDumpContext& dcSrc);
+ void OutputString(LPCTSTR lpsz);
+
+ int m_nDepth;
+
+public:
+ CFile* m_pFile;
+};
+
+#ifdef _DEBUG
+extern AFX_DATA CDumpContext afxDump;
+extern AFX_DATA BOOL afxTraceEnabled;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h>
+ #ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for _AFX_APP_STATE and _AFX_THREAD_STATE
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFX_INLINE inline
+#include <afx.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afx.inl b/public/sdk/inc/mfc42/afx.inl
new file mode 100644
index 000000000..546495c27
--- /dev/null
+++ b/public/sdk/inc/mfc42/afx.inl
@@ -0,0 +1,415 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFX.H
+
+#ifdef _AFX_INLINE
+
+// CObject
+_AFX_INLINE CObject::CObject()
+ { }
+_AFX_INLINE CObject::~CObject()
+ { }
+_AFX_INLINE void CObject::Serialize(CArchive&)
+ { /* CObject does not serialize anything by default */ }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t, void* p)
+ { return p; }
+#ifndef _DEBUG
+// _DEBUG versions in memory.cpp
+_AFX_INLINE void PASCAL CObject::operator delete(void* p)
+ { ::operator delete(p); }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t nSize)
+ { return ::operator new(nSize); }
+// _DEBUG versions in objcore.cpp
+_AFX_INLINE void CObject::AssertValid() const
+ { /* no asserts in release builds */ }
+_AFX_INLINE void CObject::Dump(CDumpContext&) const
+ { /* no dumping in release builds */ }
+#endif
+_AFX_INLINE const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (const CObject*)AfxDynamicDownCast(pClass, (CObject*)pObject); }
+#ifdef _DEBUG
+_AFX_INLINE const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (const CObject*)AfxStaticDownCast(pClass, (CObject*)pObject); }
+#endif
+
+// exceptions
+_AFX_INLINE CException::~CException()
+ { }
+_AFX_INLINE CSimpleException::CSimpleException()
+ { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::CSimpleException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::~CSimpleException()
+ { }
+
+_AFX_INLINE CMemoryException::CMemoryException()
+ : CSimpleException() { }
+_AFX_INLINE CMemoryException::CMemoryException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CMemoryException::~CMemoryException()
+ { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException()
+ : CSimpleException() { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CNotSupportedException::~CNotSupportedException()
+ { }
+_AFX_INLINE CArchiveException::CArchiveException(int cause,
+ LPCTSTR lpszFileName /* = NULL */)
+ { m_cause = cause; m_strFileName = lpszFileName; }
+_AFX_INLINE CArchiveException::~CArchiveException()
+ { }
+_AFX_INLINE CFileException::CFileException(int cause, LONG lOsError,
+ LPCTSTR pstrFileName /* = NULL */)
+ { m_cause = cause; m_lOsError = lOsError; m_strFileName = pstrFileName; }
+_AFX_INLINE CFileException::~CFileException()
+ { }
+
+// CFile
+_AFX_INLINE CFile::operator HFILE() const
+ { return m_hFile; }
+_AFX_INLINE DWORD CFile::ReadHuge(void* lpBuffer, DWORD dwCount)
+ { return (DWORD)Read(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE void CFile::WriteHuge(const void* lpBuffer, DWORD dwCount)
+ { Write(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE DWORD CFile::SeekToEnd()
+ { return Seek(0, CFile::end); }
+_AFX_INLINE void CFile::SeekToBegin()
+ { Seek(0, CFile::begin); }
+_AFX_INLINE void CFile::SetFilePath(LPCTSTR lpszNewName)
+{
+ ASSERT_VALID(this);
+ ASSERT(AfxIsValidString(lpszNewName, FALSE));
+ m_strFileName = lpszNewName;
+}
+
+#ifndef _MAC
+// CFileFind
+_AFX_INLINE BOOL CFileFind::IsReadOnly() const
+ { return MatchesMask(FILE_ATTRIBUTE_READONLY); }
+_AFX_INLINE BOOL CFileFind::IsDirectory() const
+ { return MatchesMask(FILE_ATTRIBUTE_DIRECTORY); }
+_AFX_INLINE BOOL CFileFind::IsCompressed() const
+ { return MatchesMask(FILE_ATTRIBUTE_COMPRESSED); }
+_AFX_INLINE BOOL CFileFind::IsSystem() const
+ { return MatchesMask(FILE_ATTRIBUTE_SYSTEM); }
+_AFX_INLINE BOOL CFileFind::IsHidden() const
+ { return MatchesMask(FILE_ATTRIBUTE_HIDDEN); }
+_AFX_INLINE BOOL CFileFind::IsTemporary() const
+ { return MatchesMask(FILE_ATTRIBUTE_TEMPORARY); }
+_AFX_INLINE BOOL CFileFind::IsNormal() const
+ { return MatchesMask(FILE_ATTRIBUTE_NORMAL); }
+_AFX_INLINE BOOL CFileFind::IsArchived() const
+ { return MatchesMask(FILE_ATTRIBUTE_ARCHIVE); }
+#endif //!_MAC
+
+// CString
+_AFX_INLINE CStringData* CString::GetData() const
+ { ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; }
+_AFX_INLINE void CString::Init()
+ { m_pchData = afxEmptyString.m_pchData; }
+_AFX_INLINE CString::CString(const unsigned char* lpsz)
+ { Init(); *this = (LPCSTR)lpsz; }
+_AFX_INLINE const CString& CString::operator=(const unsigned char* lpsz)
+ { *this = (LPCSTR)lpsz; return *this; }
+#ifdef _UNICODE
+_AFX_INLINE const CString& CString::operator+=(char ch)
+ { *this += (TCHAR)ch; return *this; }
+_AFX_INLINE const CString& CString::operator=(char ch)
+ { *this = (TCHAR)ch; return *this; }
+_AFX_INLINE CString AFXAPI operator+(const CString& string, char ch)
+ { return string + (TCHAR)ch; }
+_AFX_INLINE CString AFXAPI operator+(char ch, const CString& string)
+ { return (TCHAR)ch + string; }
+#endif
+
+_AFX_INLINE int CString::GetLength() const
+ { return GetData()->nDataLength; }
+_AFX_INLINE int CString::GetAllocLength() const
+ { return GetData()->nAllocLength; }
+_AFX_INLINE BOOL CString::IsEmpty() const
+ { return GetData()->nDataLength == 0; }
+_AFX_INLINE CString::operator LPCTSTR() const
+ { return m_pchData; }
+_AFX_INLINE int PASCAL CString::SafeStrlen(LPCTSTR lpsz)
+ { return (lpsz == NULL) ? 0 : lstrlen(lpsz); }
+
+// CString support (windows specific)
+_AFX_INLINE int CString::Compare(LPCTSTR lpsz) const
+ { return _tcscmp(m_pchData, lpsz); } // MBCS/Unicode aware
+_AFX_INLINE int CString::CompareNoCase(LPCTSTR lpsz) const
+ { return _tcsicmp(m_pchData, lpsz); } // MBCS/Unicode aware
+// CString::Collate is often slower than Compare but is MBSC/Unicode
+// aware as well as locale-sensitive with respect to sort order.
+_AFX_INLINE int CString::Collate(LPCTSTR lpsz) const
+ { return _tcscoll(m_pchData, lpsz); } // locale sensitive
+
+_AFX_INLINE TCHAR CString::GetAt(int nIndex) const
+{
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE TCHAR CString::operator[](int nIndex) const
+{
+ // same as GetAt
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) == 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) != 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) <= 0; }
+
+// CTime and CTimeSpan
+_AFX_INLINE CTimeSpan::CTimeSpan()
+ { }
+_AFX_INLINE CTimeSpan::CTimeSpan(time_t time)
+ { m_timeSpan = time; }
+_AFX_INLINE CTimeSpan::CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs)
+ { m_timeSpan = nSecs + 60* (nMins + 60* (nHours + 24* lDays)); }
+_AFX_INLINE CTimeSpan::CTimeSpan(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator=(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; return *this; }
+_AFX_INLINE LONG CTimeSpan::GetDays() const
+ { return m_timeSpan / (24*3600L); }
+_AFX_INLINE LONG CTimeSpan::GetTotalHours() const
+ { return m_timeSpan/3600; }
+_AFX_INLINE int CTimeSpan::GetHours() const
+ { return (int)(GetTotalHours() - GetDays()*24); }
+_AFX_INLINE LONG CTimeSpan::GetTotalMinutes() const
+ { return m_timeSpan/60; }
+_AFX_INLINE int CTimeSpan::GetMinutes() const
+ { return (int)(GetTotalMinutes() - GetTotalHours()*60); }
+_AFX_INLINE LONG CTimeSpan::GetTotalSeconds() const
+ { return m_timeSpan; }
+_AFX_INLINE int CTimeSpan::GetSeconds() const
+ { return (int)(GetTotalSeconds() - GetTotalMinutes()*60); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator-(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan - timeSpan.m_timeSpan); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator+(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator+=(CTimeSpan timeSpan)
+ { m_timeSpan += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator-=(CTimeSpan timeSpan)
+ { m_timeSpan -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTimeSpan::operator==(CTimeSpan timeSpan) const
+ { return m_timeSpan == timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator!=(CTimeSpan timeSpan) const
+ { return m_timeSpan != timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<(CTimeSpan timeSpan) const
+ { return m_timeSpan < timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>(CTimeSpan timeSpan) const
+ { return m_timeSpan > timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<=(CTimeSpan timeSpan) const
+ { return m_timeSpan <= timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>=(CTimeSpan timeSpan) const
+ { return m_timeSpan >= timeSpan.m_timeSpan; }
+
+
+_AFX_INLINE CTime::CTime()
+ { }
+_AFX_INLINE CTime::CTime(time_t time)
+ { m_time = time; }
+_AFX_INLINE CTime::CTime(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; }
+_AFX_INLINE const CTime& CTime::operator=(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; return *this; }
+_AFX_INLINE const CTime& CTime::operator=(time_t t)
+ { m_time = t; return *this; }
+_AFX_INLINE time_t CTime::GetTime() const
+ { return m_time; }
+_AFX_INLINE int CTime::GetYear() const
+ { return (GetLocalTm(NULL)->tm_year) + 1900; }
+_AFX_INLINE int CTime::GetMonth() const
+ { return GetLocalTm(NULL)->tm_mon + 1; }
+_AFX_INLINE int CTime::GetDay() const
+ { return GetLocalTm(NULL)->tm_mday; }
+_AFX_INLINE int CTime::GetHour() const
+ { return GetLocalTm(NULL)->tm_hour; }
+_AFX_INLINE int CTime::GetMinute() const
+ { return GetLocalTm(NULL)->tm_min; }
+_AFX_INLINE int CTime::GetSecond() const
+ { return GetLocalTm(NULL)->tm_sec; }
+_AFX_INLINE int CTime::GetDayOfWeek() const
+ { return GetLocalTm(NULL)->tm_wday + 1; }
+_AFX_INLINE CTimeSpan CTime::operator-(CTime time) const
+ { return CTimeSpan(m_time - time.m_time); }
+_AFX_INLINE CTime CTime::operator-(CTimeSpan timeSpan) const
+ { return CTime(m_time - timeSpan.m_timeSpan); }
+_AFX_INLINE CTime CTime::operator+(CTimeSpan timeSpan) const
+ { return CTime(m_time + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTime& CTime::operator+=(CTimeSpan timeSpan)
+ { m_time += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTime& CTime::operator-=(CTimeSpan timeSpan)
+ { m_time -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTime::operator==(CTime time) const
+ { return m_time == time.m_time; }
+_AFX_INLINE BOOL CTime::operator!=(CTime time) const
+ { return m_time != time.m_time; }
+_AFX_INLINE BOOL CTime::operator<(CTime time) const
+ { return m_time < time.m_time; }
+_AFX_INLINE BOOL CTime::operator>(CTime time) const
+ { return m_time > time.m_time; }
+_AFX_INLINE BOOL CTime::operator<=(CTime time) const
+ { return m_time <= time.m_time; }
+_AFX_INLINE BOOL CTime::operator>=(CTime time) const
+ { return m_time >= time.m_time; }
+
+
+// CArchive
+_AFX_INLINE BOOL CArchive::IsLoading() const
+ { return (m_nMode & CArchive::load) != 0; }
+_AFX_INLINE BOOL CArchive::IsStoring() const
+ { return (m_nMode & CArchive::load) == 0; }
+_AFX_INLINE BOOL CArchive::IsByteSwapping() const
+ { return (m_nMode & CArchive::bNoByteSwap) == 0; }
+_AFX_INLINE BOOL CArchive::IsBufferEmpty() const
+ { return m_lpBufCur == m_lpBufMax; }
+_AFX_INLINE CFile* CArchive::GetFile() const
+ { return m_pFile; }
+_AFX_INLINE void CArchive::SetObjectSchema(UINT nSchema)
+ { m_nObjectSchema = nSchema; }
+_AFX_INLINE void CArchive::SetStoreParams(UINT nHashSize, UINT nBlockSize)
+{
+ ASSERT(IsStoring());
+ ASSERT(m_pStoreMap == NULL); // must be before first object written
+ m_nHashSize = nHashSize;
+ m_nGrowSize = nBlockSize;
+}
+_AFX_INLINE void CArchive::SetLoadParams(UINT nGrowBy)
+{
+ ASSERT(IsLoading());
+ ASSERT(m_pLoadArray == NULL); // must be before first object read
+ m_nGrowSize = nGrowBy;
+}
+_AFX_INLINE CArchive& CArchive::operator<<(int i)
+ { return CArchive::operator<<((LONG)i); }
+_AFX_INLINE CArchive& CArchive::operator<<(unsigned u)
+ { return CArchive::operator<<((LONG)u); }
+_AFX_INLINE CArchive& CArchive::operator<<(short w)
+ { return CArchive::operator<<((WORD)w); }
+_AFX_INLINE CArchive& CArchive::operator<<(char ch)
+ { return CArchive::operator<<((BYTE)ch); }
+_AFX_INLINE CArchive& CArchive::operator<<(BYTE by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax) Flush();
+ *(UNALIGNED BYTE*)m_lpBufCur = by; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator<<(WORD w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax) Flush();
+ *(UNALIGNED WORD*)m_lpBufCur = w; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(LONG l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax) Flush();
+ *(UNALIGNED LONG*)m_lpBufCur = l; m_lpBufCur += sizeof(LONG); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(DWORD dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax) Flush();
+ *(UNALIGNED DWORD*)m_lpBufCur = dw; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(float f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_FLOAT*)m_lpBufCur = *(_AFX_FLOAT*)&f; m_lpBufCur += sizeof(float); return *this;
+ }
+_AFX_INLINE CArchive& CArchive::operator<<(double d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur = *(_AFX_DOUBLE*)&d; m_lpBufCur += sizeof(double); return *this; }
+#endif
+_AFX_INLINE CArchive& CArchive::operator>>(int& i)
+ { return CArchive::operator>>((LONG&)i); }
+_AFX_INLINE CArchive& CArchive::operator>>(unsigned& u)
+ { return CArchive::operator>>((LONG&)u); }
+_AFX_INLINE CArchive& CArchive::operator>>(short& w)
+ { return CArchive::operator>>((WORD&)w); }
+_AFX_INLINE CArchive& CArchive::operator>>(char& ch)
+ { return CArchive::operator>>((BYTE&)ch); }
+_AFX_INLINE CArchive& CArchive::operator>>(BYTE& by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax)
+ FillBuffer(sizeof(BYTE) - (UINT)(m_lpBufMax - m_lpBufCur));
+ by = *(UNALIGNED BYTE*)m_lpBufCur; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator>>(WORD& w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax)
+ FillBuffer(sizeof(WORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ w = *(UNALIGNED WORD*)m_lpBufCur; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(DWORD& dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax)
+ FillBuffer(sizeof(DWORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ dw = *(UNALIGNED DWORD*)m_lpBufCur; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(float& f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax)
+ FillBuffer(sizeof(float) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_FLOAT*)&f = *(UNALIGNED _AFX_FLOAT*)m_lpBufCur; m_lpBufCur += sizeof(float); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(double& d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax)
+ FillBuffer(sizeof(double) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_DOUBLE*)&d = *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur; m_lpBufCur += sizeof(double); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(LONG& l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax)
+ FillBuffer(sizeof(LONG) - (UINT)(m_lpBufMax - m_lpBufCur));
+ l = *(UNALIGNED LONG*)m_lpBufCur; m_lpBufCur += sizeof(LONG); return *this; }
+#endif
+_AFX_INLINE CArchive::CArchive(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE void CArchive::operator=(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb)
+ { ar.WriteObject(pOb); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+
+
+// CDumpContext
+_AFX_INLINE int CDumpContext::GetDepth() const
+ { return m_nDepth; }
+_AFX_INLINE void CDumpContext::SetDepth(int nNewDepth)
+ { m_nDepth = nNewDepth; }
+_AFX_INLINE CDumpContext::CDumpContext(const CDumpContext& /* dcSrc */)
+ { }
+_AFX_INLINE void CDumpContext::operator=(const CDumpContext& /* dcSrc */)
+ { }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFX_INLINE
diff --git a/public/sdk/inc/mfc42/afxadv.h b/public/sdk/inc/mfc42/afxadv.h
new file mode 100644
index 000000000..972416d37
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxadv.h
@@ -0,0 +1,181 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXADV_H__
+#define __AFXADV_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXADV - MFC Advanced Classes
+
+// Classes declared in this file
+
+//CObject
+ //CFile
+ //CMemFile
+ class CSharedFile; // Shared memory file
+
+ class CRecentFileList; // used in CWinApp for MRU list
+ class CDockState; // state of docking toolbars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Shared file support
+
+class CSharedFile : public CMemFile
+{
+ DECLARE_DYNAMIC(CSharedFile)
+
+public:
+// Constructors
+ CSharedFile(UINT nAllocFlags = GMEM_DDESHARE|GMEM_MOVEABLE,
+ UINT nGrowBytes = 4096);
+
+// Attributes
+ HGLOBAL Detach();
+ void SetHandle(HGLOBAL hGlobalMemory, BOOL bAllowGrow = TRUE);
+
+// Implementation
+public:
+ virtual ~CSharedFile();
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual void Free(BYTE* lpMem);
+
+ UINT m_nAllocFlags;
+ HGLOBAL m_hGlobalMemory;
+ BOOL m_bAllowGrow;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecentFileList
+
+#define AFX_ABBREV_FILENAME_LEN 30
+
+class CRecentFileList
+{
+// Constructors
+public:
+ CRecentFileList(UINT nStart, LPCTSTR lpszSection,
+ LPCTSTR lpszEntryFormat, int nSize,
+ int nMaxDispLen = AFX_ABBREV_FILENAME_LEN);
+
+// Attributes
+ int GetSize() const;
+ CString& operator[](int nIndex);
+
+// Operations
+ virtual void Remove(int nIndex);
+ virtual void Add(LPCTSTR lpszPathName);
+ BOOL GetDisplayName(CString& strName, int nIndex,
+ LPCTSTR lpszCurDir, int nCurDir, BOOL bAtLeastName = TRUE) const;
+ virtual void UpdateMenu(CCmdUI* pCmdUI);
+ virtual void ReadList(); // reads from registry or ini file
+ virtual void WriteList(); // writes to registry or ini file
+
+// Implementation
+ virtual ~CRecentFileList();
+
+ int m_nSize; // contents of the MRU list
+ CString* m_arrNames;
+ CString m_strSectionName; // for saving
+ CString m_strEntryFormat;
+ UINT m_nStart; // for displaying
+ int m_nMaxDisplayLength;
+ CString m_strOriginal; // original menu item contents
+};
+
+inline int CRecentFileList::GetSize() const
+ { return m_nSize; }
+inline CString& CRecentFileList::operator[](int nIndex)
+ { ASSERT(nIndex < m_nSize); return m_arrNames[nIndex]; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockState - used for docking serialization
+
+class CDockState : public CObject
+{
+ DECLARE_SERIAL(CDockState)
+ CDockState();
+
+public:
+// Attributes
+ CPtrArray m_arrBarInfo;
+
+public:
+// Operations
+ void LoadState(LPCTSTR lpszProfileName);
+ void SaveState(LPCTSTR lpszProfileName);
+ void Clear(); //deletes all the barinfo's
+ DWORD GetVersion();
+
+// Implementation
+protected:
+ BOOL m_bScaling;
+ CRect m_rectDevice;
+ CRect m_rectClip;
+ CSize m_sizeLogical;
+ DWORD m_dwVersion;
+
+public:
+ ~CDockState();
+ virtual void Serialize(CArchive& ar);
+
+ // scaling implementation
+ void ScalePoint(CPoint& pt);
+ void ScaleRectPos(CRect& rect);
+ CSize GetScreenSize();
+ void SetScreenSize(CSize& size);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXADV_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxaete.r b/public/sdk/inc/mfc42/afxaete.r
new file mode 100644
index 000000000..c3aa8d3a7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxaete.r
@@ -0,0 +1,92 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXAETE_R__
+#define __AFXAETE_R__
+
+#include "mrc\Types.r"
+#include "mrc\SysTypes.r"
+#include "mrc\AppleEve.r"
+#include "mrc\AERegist.r"
+#include "mrc\AEUserTe.r"
+
+
+resource 'aete' (0)
+{
+ 1,
+ 0,
+ langEnglish,
+ smRoman,
+ {
+ "Required Suite",
+ "Terms that every application should support",
+ kAERequiredSuite,
+ 1,
+ 1,
+ {}, {}, {}, {},
+
+ "MFC Suite",
+ "Terms supported by MFC applications",
+ '****',
+ 1,
+ 1,
+ {
+ "quit",
+ "Quit an application program",
+ kAERequiredSuite,
+ kAEQuitApplication,
+ noReply,
+ "",
+ replyOptional,
+ singleItem,
+ notEnumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ verbEvent,
+ reserved, reserved, reserved,
+ noParams,
+ "",
+ directParamOptional,
+ singleItem,
+ notEnumerated,
+ changesState,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved,
+ {
+ "saving",
+ keyAESaveOptions,
+ enumSaveOptions,
+ "specifies whether to save currently open documents",
+ optional,
+ singleItem,
+ enumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ prepositionParam,
+ notFeminine,
+ notMasculine,
+ singular
+ },
+ },
+ {}, {},
+ {
+ enumSaveOptions,
+ {
+ "yes", kAEYes, "Save objects now",
+ "no", kAENo, "Do not save objects",
+ "ask", kAEAsk, "Ask the user whether to save"
+ },
+ }
+ }
+};
+
+
+#endif
diff --git a/public/sdk/inc/mfc42/afxcmn.h b/public/sdk/inc/mfc42/afxcmn.h
new file mode 100644
index 000000000..57f99a2fc
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcmn.h
@@ -0,0 +1,919 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCMN_H__
+#define __AFXCMN_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows Common Control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef IMAGE_BITMAP
+#define IMAGE_BITMAP 0
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+// RichEdit requires OLE
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+ #ifdef __AFXOLE_H__ // only include richole if OLE support is included
+ #ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+ #endif
+ #else
+ struct IRichEditOle;
+ struct IRichEditOleCallback;
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCMN - MFC COMCTL32 Control Classes
+
+// Classes declared in this file
+
+//TOOLINFO
+ class CToolInfo;
+
+//CObject
+ class CImageList;
+ //CCmdTarget;
+ //CWnd
+ // class CListBox;
+ class CDragListBox;
+ class CListCtrl;
+ class CTreeCtrl;
+ class CSpinButtonCtrl;
+ class CHeaderCtrl;
+ class CSliderCtrl;
+ class CProgressCtrl;
+ class CHotKeyCtrl;
+ class CToolTipCtrl;
+ class CTabCtrl;
+ class CAnimateCtrl;
+ class CToolBarCtrl;
+ class CStatusBarCtrl;
+ class CRichEditCtrl;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolInfo
+
+#ifdef _UNICODE
+class CToolInfo : public tagTOOLINFOW
+#else
+class CToolInfo : public tagTOOLINFOA
+#endif
+{
+public:
+ TCHAR szText[256];
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDragListBox
+
+class CDragListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CDragListBox)
+
+// Constructors
+public:
+ CDragListBox();
+
+// Attributes
+ int ItemFromPt(CPoint pt, BOOL bAutoScroll = TRUE) const;
+
+// Operations
+ virtual void DrawInsert(int nItem);
+
+// Overridables
+ virtual BOOL BeginDrag(CPoint pt);
+ virtual void CancelDrag(CPoint pt);
+ virtual UINT Dragging(CPoint pt);
+ virtual void Dropped(int nSrcIndex, CPoint pt);
+
+// Implementation
+public:
+ int m_nLast;
+ void DrawSingle(int nIndex);
+ virtual void PreSubclassWindow();
+ virtual ~CDragListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBarCtrl
+
+class CStatusBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CStatusBarCtrl)
+
+// Constructors
+public:
+ CStatusBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
+ CString GetText(int nPane, int* pType = NULL) const;
+ int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL) const;
+ int GetTextLength(int nPane, int* pType = NULL) const;
+ BOOL SetParts(int nParts, int* pWidths);
+ int GetParts(int nParts, int* pParts) const;
+ BOOL GetBorders(int* pBorders) const;
+ BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const;
+ void SetMinHeight(int nMin);
+ BOOL SetSimple(BOOL bSimple = TRUE);
+ BOOL GetRect(int nPane, LPRECT lpRect) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CStatusBarCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CListCtrl
+
+class CListCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CListCtrl)
+
+// Constructors
+public:
+ CListCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ COLORREF GetBkColor() const;
+ BOOL SetBkColor(COLORREF cr);
+ CImageList* GetImageList(int nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ int GetItemCount() const;
+ BOOL GetItem(LV_ITEM* pItem) const;
+ BOOL SetItem(const LV_ITEM* pItem);
+ BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
+ int nImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ UINT GetCallbackMask() const;
+ BOOL SetCallbackMask(UINT nMask);
+ int GetNextItem(int nItem, int nFlags) const;
+ BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode) const;
+ BOOL SetItemPosition(int nItem, POINT pt);
+ BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const;
+ int GetStringWidth(LPCTSTR lpsz) const;
+ CEdit* GetEditControl() const;
+ BOOL GetColumn(int nCol, LV_COLUMN* pColumn) const;
+ BOOL SetColumn(int nCol, const LV_COLUMN* pColumn);
+ int GetColumnWidth(int nCol) const;
+ BOOL SetColumnWidth(int nCol, int cx);
+ BOOL GetViewRect(LPRECT lpRect) const;
+ COLORREF GetTextColor() const;
+ BOOL SetTextColor(COLORREF cr);
+ COLORREF GetTextBkColor() const;
+ BOOL SetTextBkColor(COLORREF cr);
+ int GetTopIndex() const;
+ int GetCountPerPage() const;
+ BOOL GetOrigin(LPPOINT lpPoint) const;
+ BOOL SetItemState(int nItem, LV_ITEM* pItem);
+ BOOL SetItemState(int nItem, UINT nState, UINT nMask);
+ UINT GetItemState(int nItem, UINT nMask) const;
+ CString GetItemText(int nItem, int nSubItem) const;
+ int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const;
+ BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
+ void SetItemCount(int nItems);
+ BOOL SetItemData(int nItem, DWORD dwData);
+ DWORD GetItemData(int nItem) const;
+ UINT GetSelectedCount() const;
+
+// Operations
+ int InsertItem(const LV_ITEM* pItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ int FindItem(LV_FINDINFO* pFindInfo, int nStart = -1) const;
+ int HitTest(LV_HITTESTINFO* pHitTestInfo) const;
+ int HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ BOOL EnsureVisible(int nItem, BOOL bPartialOK);
+ BOOL Scroll(CSize size);
+ BOOL RedrawItems(int nFirst, int nLast);
+ BOOL Arrange(UINT nCode);
+ CEdit* EditLabel(int nItem);
+ int InsertColumn(int nCol, const LV_COLUMN* pColumn);
+ int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
+ int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
+ BOOL DeleteColumn(int nCol);
+ CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
+ BOOL Update(int nItem);
+ BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,
+ UINT nStateMask, int nImage, LPARAM lParam);
+ virtual ~CListCtrl();
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+protected:
+ //{{AFX_MSG(CListCtrl)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeCtrl
+
+class CTreeCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTreeCtrl)
+
+// Constructors
+public:
+ CTreeCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const;
+ UINT GetCount() const;
+ UINT GetIndent() const;
+ void SetIndent(UINT nIndent);
+ CImageList* GetImageList(UINT nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const;
+ HTREEITEM GetChildItem(HTREEITEM hItem) const;
+ HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetParentItem(HTREEITEM hItem) const;
+ HTREEITEM GetFirstVisibleItem() const;
+ HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetSelectedItem() const;
+ HTREEITEM GetDropHilightItem() const;
+ HTREEITEM GetRootItem() const;
+ BOOL GetItem(TV_ITEM* pItem) const;
+ CString GetItemText(HTREEITEM hItem) const;
+ BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const;
+ UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const;
+ DWORD GetItemData(HTREEITEM hItem) const;
+ BOOL SetItem(TV_ITEM* pItem);
+ BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
+ BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage);
+ BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask);
+ BOOL SetItemData(HTREEITEM hItem, DWORD dwData);
+ BOOL ItemHasChildren(HTREEITEM hItem) const;
+ CEdit* GetEditControl() const;
+ UINT GetVisibleCount() const;
+
+// Operations
+ HTREEITEM InsertItem(LPTV_INSERTSTRUCT lpInsertStruct);
+ HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
+ HTREEITEM hParent, HTREEITEM hInsertAfter);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT,
+ HTREEITEM hInsertAfter = TVI_LAST);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage,
+ HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
+ BOOL DeleteItem(HTREEITEM hItem);
+ BOOL DeleteAllItems();
+ BOOL Expand(HTREEITEM hItem, UINT nCode);
+ BOOL Select(HTREEITEM hItem, UINT nCode);
+ BOOL SelectItem(HTREEITEM hItem);
+ BOOL SelectDropTarget(HTREEITEM hItem);
+ BOOL SelectSetFirstVisible(HTREEITEM hItem);
+ CEdit* EditLabel(HTREEITEM hItem);
+ HTREEITEM HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ HTREEITEM HitTest(TV_HITTESTINFO* pHitTestInfo) const;
+ CImageList* CreateDragImage(HTREEITEM hItem);
+ BOOL SortChildren(HTREEITEM hItem);
+ BOOL EnsureVisible(HTREEITEM hItem);
+ BOOL SortChildrenCB(LPTV_SORTCB pSort);
+
+// Implementation
+protected:
+ void RemoveImageList(int nImageList);
+public:
+ virtual ~CTreeCtrl();
+ //{{AFX_MSG(CTreeCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSpinButtonCtrl
+
+class CSpinButtonCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSpinButtonCtrl)
+
+// Constructors
+public:
+ CSpinButtonCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetAccel(int nAccel, UDACCEL* pAccel);
+ UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
+ int SetBase(int nBase);
+ UINT GetBase() const;
+ CWnd* SetBuddy(CWnd* pWndBuddy);
+ CWnd* GetBuddy() const;
+ int SetPos(int nPos);
+ int GetPos() const;
+ void SetRange(int nLower, int nUpper);
+ DWORD GetRange() const;
+ void GetRange(int &lower, int& upper) const;
+
+// Implementation
+public:
+ virtual ~CSpinButtonCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSliderCtrl
+
+class CSliderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSliderCtrl)
+
+// Constructors
+public:
+ CSliderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetLineSize() const;
+ int SetLineSize(int nSize);
+ int GetPageSize() const;
+ int SetPageSize(int nSize);
+ int GetRangeMax() const;
+ int GetRangeMin() const;
+ void GetRange(int& nMin, int& nMax) const;
+ void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
+ void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
+ void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
+ void GetSelection(int& nMin, int& nMax) const;
+ void SetSelection(int nMin, int nMax);
+ void GetChannelRect(LPRECT lprc) const;
+ void GetThumbRect(LPRECT lprc) const;
+ int GetPos() const;
+ void SetPos(int nPos);
+ UINT GetNumTics() const;
+ DWORD* GetTicArray() const;
+ int GetTic(int nTic) const;
+ int GetTicPos(int nTic) const;
+ BOOL SetTic(int nTic);
+ void SetTicFreq(int nFreq);
+
+// Operations
+ void ClearSel(BOOL bRedraw = FALSE);
+ void VerifyPos();
+ void ClearTics(BOOL bRedraw = FALSE);
+
+// Implementation
+public:
+ virtual ~CSliderCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CProgressCtrl
+
+class CProgressCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CProgressCtrl)
+
+// Constructors
+public:
+ CProgressCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetRange(int nLower, int nUpper);
+ int SetPos(int nPos);
+ int OffsetPos(int nPos);
+ int SetStep(int nStep);
+
+// Operations
+ int StepIt();
+
+// Implementation
+public:
+ virtual ~CProgressCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHeaderCtrl
+
+class CHeaderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHeaderCtrl)
+
+// Constructors
+public:
+ CHeaderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetItemCount() const;
+ BOOL GetItem(int nPos, HD_ITEM* pHeaderItem) const;
+ BOOL SetItem(int nPos, HD_ITEM* pHeaderItem);
+
+// Operations
+ int InsertItem(int nPos, HD_ITEM* phdi);
+ BOOL DeleteItem(int nPos);
+ BOOL Layout(HD_LAYOUT* pHeaderLayout);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CHeaderCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHotKeyCtrl
+
+class CHotKeyCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHotKeyCtrl)
+
+// Constructors
+public:
+ CHotKeyCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
+ DWORD GetHotKey() const;
+ void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers) const;
+
+// Operations
+ void SetRules(WORD wInvalidComb, WORD wModifiers);
+
+// Implementation
+public:
+ virtual ~CHotKeyCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolTipCtrl
+
+class CToolTipCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolTipCtrl)
+
+// Constructors
+public:
+ CToolTipCtrl();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = 0);
+
+// Attributes
+ void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0) const;
+ BOOL GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT nIDTool = 0) const;
+ void SetToolInfo(LPTOOLINFO lpToolInfo);
+ void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
+ int GetToolCount() const;
+
+// Operations
+ void Activate(BOOL bActivate);
+
+ BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
+ UINT nIDTool = 0);
+ BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
+ LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
+
+ void DelTool(CWnd* pWnd, UINT nIDTool = 0);
+
+ BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo) const;
+ void RelayEvent(LPMSG lpMsg);
+ void SetDelayTime(UINT nDelay);
+ void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
+ void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
+
+// Implementation
+public:
+ void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool) const;
+ virtual ~CToolTipCtrl();
+ BOOL DestroyToolTipCtrl();
+
+protected:
+ //{{AFX_MSG(CToolTipCtrl)
+ afx_msg LRESULT OnDisableModal(WPARAM, LPARAM);
+ afx_msg LRESULT OnWindowFromPoint(WPARAM, LPARAM);
+ afx_msg LRESULT OnAddTool(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ CMapStringToPtr m_mapString;
+
+ friend class CWnd;
+ friend class CToolBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabCtrl
+
+class CTabCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTabCtrl)
+
+// Constructors
+public:
+ CTabCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ CImageList* GetImageList() const;
+ CImageList* SetImageList(CImageList* pImageList);
+ int GetItemCount() const;
+ BOOL GetItem(int nItem, TC_ITEM* pTabCtrlItem) const;
+ BOOL SetItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL GetItemRect(int nItem, LPRECT lpRect) const;
+ int GetCurSel() const;
+ int SetCurSel(int nItem);
+ CSize SetItemSize(CSize size);
+ void SetPadding(CSize size);
+ int GetRowCount() const;
+ CToolTipCtrl* GetTooltips() const;
+ void SetTooltips(CToolTipCtrl* pWndTip);
+ int GetCurFocus() const;
+
+// Operations
+ BOOL InsertItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ void AdjustRect(BOOL bLarger, LPRECT lpRect);
+ void RemoveImage(int nImage);
+ int HitTest(TC_HITTESTINFO* pHitTestInfo) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CTabCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+ //{{AFX_MSG(CTabCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAnimateCtrl
+
+class CAnimateCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CAnimateCtrl)
+
+// Constructors
+public:
+ CAnimateCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Operations
+ BOOL Open(LPCTSTR lpszFileName);
+ BOOL Open(UINT nID);
+ BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
+ BOOL Stop();
+ BOOL Close();
+ BOOL Seek(UINT nTo);
+
+// Implementation
+public:
+ virtual ~CAnimateCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CImageList
+
+class CImageList : public CObject
+{
+ DECLARE_DYNCREATE(CImageList)
+
+// Constructors
+public:
+ CImageList();
+ BOOL Create(int cx, int cy, UINT nFlags, int nInitial, int nGrow);
+ BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
+ int nImage2, int dx, int dy);
+
+// Attributes
+ HIMAGELIST m_hImageList; // must be first data member
+ operator HIMAGELIST() const;
+ HIMAGELIST GetSafeHandle() const;
+
+ static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
+ static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HIMAGELIST hImageList);
+ HIMAGELIST Detach();
+
+ int GetImageCount() const;
+ COLORREF SetBkColor(COLORREF cr);
+ COLORREF GetBkColor() const;
+ BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const;
+
+// Operations
+ BOOL DeleteImageList();
+
+ int Add(CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(CBitmap* pbmImage, COLORREF crMask);
+ BOOL Remove(int nImage);
+ BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(HICON hIcon);
+ int Replace(int nImage, HICON hIcon);
+ HICON ExtractIcon(int nImage);
+ BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
+ BOOL SetOverlayImage(int nImage, int nOverlay);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ BOOL Read(CArchive* pArchive);
+ BOOL Write(CArchive* pArchive);
+#endif
+
+// Drag APIs
+ BOOL BeginDrag(int nImage, CPoint ptHotSpot);
+ static void PASCAL EndDrag();
+ static BOOL PASCAL DragMove(CPoint pt);
+ BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
+ static BOOL PASCAL DragShowNolock(BOOL bShow);
+ static CImageList* PASCAL GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
+ static BOOL PASCAL DragEnter(CWnd* pWndLock, CPoint point);
+ static BOOL PASCAL DragLeave(CWnd* pWndLock);
+
+// Implementation
+public:
+ virtual ~CImageList();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBarCtrl
+
+class CToolBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolBarCtrl)
+// Construction
+public:
+ CToolBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+public:
+ BOOL IsButtonEnabled(int nID) const;
+ BOOL IsButtonChecked(int nID) const;
+ BOOL IsButtonPressed(int nID) const;
+ BOOL IsButtonHidden(int nID) const;
+ BOOL IsButtonIndeterminate(int nID) const;
+ BOOL SetState(int nID, UINT nState);
+ int GetState(int nID) const;
+ BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const;
+ int GetButtonCount() const;
+ BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
+ void SetButtonStructSize(int nSize);
+ BOOL SetButtonSize(CSize size);
+ BOOL SetBitmapSize(CSize size);
+ CToolTipCtrl* GetToolTips() const;
+ void SetToolTips(CToolTipCtrl* pTip);
+ void SetOwner(CWnd* pWnd);
+ void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
+ int GetRows() const;
+ BOOL SetCmdID(int nIndex, UINT nID);
+ UINT GetBitmapFlags() const;
+
+// Operations
+public:
+ BOOL EnableButton(int nID, BOOL bEnable = TRUE);
+ BOOL CheckButton(int nID, BOOL bCheck = TRUE);
+ BOOL PressButton(int nID, BOOL bPress = TRUE);
+ BOOL HideButton(int nID, BOOL bHide = TRUE);
+ BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
+ int AddBitmap(int nNumButtons, UINT nBitmapID);
+ int AddBitmap(int nNumButtons, CBitmap* pBitmap);
+ BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
+ BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
+ BOOL DeleteButton(int nIndex);
+ UINT CommandToIndex(UINT nID) const;
+ void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+ void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+
+ void Customize();
+ int AddString(UINT nStringID);
+ int AddStrings(LPCTSTR lpszStrings);
+ void AutoSize();
+
+// Implementation
+public:
+ virtual ~CToolBarCtrl();
+
+protected:
+ //{{AFX_MSG(CToolBarCtrl)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCtrl
+
+class CRichEditCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CRichEditCtrl)
+
+// Constructors
+public:
+ CRichEditCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ CPoint GetCharPos(long lChar) const;
+ void SetOptions(WORD wOp, DWORD dwFlags);
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+ BOOL CanPaste(UINT nFormat = 0) const;
+ void GetSel(long& nStartChar, long& nEndChar) const;
+ void GetSel(CHARRANGE &cr) const;
+ void LimitText(long nChars = 0);
+ long LineFromChar(long nIndex) const;
+ void SetSel(long nStartChar, long nEndChar);
+ void SetSel(CHARRANGE &cr);
+ DWORD GetDefaultCharFormat(CHARFORMAT &cf) const;
+ DWORD GetSelectionCharFormat(CHARFORMAT &cf) const;
+ long GetEventMask() const;
+ long GetLimitText() const;
+ DWORD GetParaFormat(PARAFORMAT &pf) const;
+ // richedit EM_GETSELTEXT is ANSI
+ long GetSelText(LPSTR lpBuf) const;
+ CString GetSelText() const;
+ WORD GetSelectionType() const;
+ COLORREF SetBackgroundColor(BOOL bSysColor, COLORREF cr);
+ BOOL SetDefaultCharFormat(CHARFORMAT &cf);
+ BOOL SetSelectionCharFormat(CHARFORMAT &cf);
+ BOOL SetWordCharFormat(CHARFORMAT &cf);
+ DWORD SetEventMask(DWORD dwEventMask);
+ BOOL SetParaFormat(PARAFORMAT &pf);
+ BOOL SetTargetDevice(HDC hDC, long lLineWidth);
+ BOOL SetTargetDevice(CDC &dc, long lLineWidth);
+ long GetTextLength() const;
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+
+// Operations
+ void EmptyUndoBuffer();
+
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
+ void SetRect(LPCRECT lpRect);
+
+ BOOL DisplayBand(LPRECT pDisplayRect);
+ long FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const;
+ long FormatRange(FORMATRANGE* pfr, BOOL bDisplay = TRUE);
+ void HideSelection(BOOL bHide, BOOL bPerm);
+ void PasteSpecial(UINT nClipFormat, DWORD dvAspect = 0, HMETAFILE hMF = 0);
+ void RequestResize();
+ long StreamIn(int nFormat, EDITSTREAM &es);
+ long StreamOut(int nFormat, EDITSTREAM &es);
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// OLE support
+ IRichEditOle* GetIRichEditOle() const;
+ BOOL SetOLECallback(IRichEditOleCallback* pCallback);
+
+// Implementation
+public:
+ virtual ~CRichEditCtrl();
+};
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCMN_INLINE inline
+#include <afxcmn.inl>
+#undef _AFXCMN_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCMN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcmn.inl b/public/sdk/inc/mfc42/afxcmn.inl
new file mode 100644
index 000000000..df6dc04ab
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcmn.inl
@@ -0,0 +1,643 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCMN.H
+
+#ifdef _AFXCMN_INLINE
+
+_AFXCMN_INLINE CDragListBox::CDragListBox()
+ { m_nLast = -1;}
+_AFXCMN_INLINE int CDragListBox::ItemFromPt(CPoint pt, BOOL bAutoScroll) const
+ {ASSERT(::IsWindow(m_hWnd)); return ::LBItemFromPt(m_hWnd, pt, bAutoScroll); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::CheckButton(int nID, BOOL bCheck)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::PressButton(int nID, BOOL bPress)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::HideButton(int nID, BOOL bHide)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::Indeterminate(int nID, BOOL bIndeterminate)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonEnabled(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonChecked(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonPressed(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonHidden(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonIndeterminate(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetState(int nID, UINT nState)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0)); }
+_AFXCMN_INLINE int CToolBarCtrl::GetState(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::AddButtons(int nNumButtons, LPTBBUTTON lpButtons)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::InsertButton(int nIndex, LPTBBUTTON lpButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::DeleteButton(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetButton(int nIndex, LPTBBUTTON lpButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE int CToolBarCtrl::GetButtonCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L); }
+_AFXCMN_INLINE UINT CToolBarCtrl::CommandToIndex(UINT nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::Customize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L); }
+// lpszStrings are separated by zeroes, last one is marked by two zeroes
+_AFXCMN_INLINE int CToolBarCtrl::AddStrings(LPCTSTR lpszStrings)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXCMN_INLINE void CToolBarCtrl::SetButtonStructSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetButtonSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetBitmapSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE void CToolBarCtrl::AutoSize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CToolBarCtrl::GetToolTips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CToolBarCtrl::SetToolTips(CToolTipCtrl* pTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)pTip->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetOwner(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)pWnd->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetRows(int nRows, BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect); }
+_AFXCMN_INLINE int CToolBarCtrl::GetRows() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETROWS, 0, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetCmdID(int nIndex, UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID); }
+_AFXCMN_INLINE UINT CToolBarCtrl::GetBitmapFlags() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CStatusBarCtrl::CStatusBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetText(LPCTSTR lpszText, int nPane, int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(nPane < 256); return (BOOL) ::SendMessage(m_hWnd, SB_SETTEXT, (nPane|nType), (LPARAM)lpszText); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetParts(int nParts, int* pWidths)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths); }
+_AFXCMN_INLINE int CStatusBarCtrl::GetParts(int nParts, int* pParts) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetBorders(int* pBorders) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders); }
+_AFXCMN_INLINE void CStatusBarCtrl::SetMinHeight(int nMin)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetSimple(BOOL bSimple)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetRect(int nPane, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CListCtrl::CListCtrl()
+ { }
+_AFXCMN_INLINE COLORREF CListCtrl::GetBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr); }
+_AFXCMN_INLINE CImageList* CListCtrl::GetImageList(int nImageListType) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageListType, 0L)); }
+_AFXCMN_INLINE CImageList* CListCtrl::SetImageList(CImageList* pImageList, int nImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CListCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItem(LV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_STATE, NULL, 0, nState, nStateMask, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, nSubItem, LVIF_TEXT, lpszText, 0, 0, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemData(int nItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_PARAM, NULL, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem, int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT|LVIF_IMAGE, nItem, lpszItem, 0, 0, nImage, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE UINT CListCtrl::GetCallbackMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetCallbackMask(UINT nMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0); }
+_AFXCMN_INLINE int CListCtrl::GetNextItem(int nItem, int nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0)); }
+_AFXCMN_INLINE int CListCtrl::FindItem(LV_FINDINFO* pFindInfo, int nStart) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo); }
+_AFXCMN_INLINE int CListCtrl::HitTest(LV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemPosition(int nItem, POINT pt)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItemPosition(int nItem, LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint); }
+_AFXCMN_INLINE int CListCtrl::GetStringWidth(LPCTSTR lpsz) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz); }
+_AFXCMN_INLINE BOOL CListCtrl::EnsureVisible(int nItem, BOOL bPartialOK)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::Scroll(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy); }
+_AFXCMN_INLINE BOOL CListCtrl::RedrawItems(int nFirst, int nLast)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_REDRAWITEMS, nFirst, nLast); }
+_AFXCMN_INLINE BOOL CListCtrl::Arrange(UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L); }
+_AFXCMN_INLINE CEdit* CListCtrl::EditLabel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L)); }
+_AFXCMN_INLINE CEdit* CListCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetColumn(int nCol, LV_COLUMN* pColumn) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE int CListCtrl::InsertColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteColumn(int nCol)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0); }
+_AFXCMN_INLINE int CListCtrl::GetColumnWidth(int nCol) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumnWidth(int nCol, int cx)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetViewRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr); }
+_AFXCMN_INLINE int CListCtrl::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::GetCountPerPage() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::GetOrigin(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint); }
+_AFXCMN_INLINE BOOL CListCtrl::Update(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem); }
+_AFXCMN_INLINE UINT CListCtrl::GetItemState(int nItem, UINT nMask) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask); }
+_AFXCMN_INLINE void CListCtrl::SetItemCount(int nItems)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SORTITEMS, dwData, (LPARAM)pfnCompare); }
+_AFXCMN_INLINE UINT CListCtrl::GetSelectedCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTreeCtrl::CTreeCtrl()
+ { }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPTV_INSERTSTRUCT lpInsertStruct)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem); }
+#pragma warning(disable: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); }
+#pragma warning(default: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::Expand(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetIndent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0); }
+_AFXCMN_INLINE void CTreeCtrl::SetIndent(UINT nIndent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::GetImageList(UINT nImageList) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (UINT)nImageList, 0)); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::SetImageList(CImageList* pImageList, int nImageListType)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (UINT)nImageListType, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextItem(HTREEITEM hItem, UINT nCode) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetChildItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetParentItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetFirstVisibleItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetSelectedItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetDropHilightItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetRootItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); }
+_AFXCMN_INLINE BOOL CTreeCtrl::Select(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectDropTarget(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectSetFirstVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::GetItem(TV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItem(TV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_TEXT, lpszItem, 0, 0, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_IMAGE|TVIF_SELECTEDIMAGE, NULL, nImage, nSelectedImage, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_STATE, NULL, 0, 0, nState, nStateMask, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemData(HTREEITEM hItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_PARAM, NULL, 0, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::EditLabel(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::HitTest(TV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0)); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetVisibleCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildren(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::EnsureVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildrenCB(LPTV_SORTCB pSort)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, 0, (LPARAM)pSort); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHotKeyCtrl::CHotKeyCtrl()
+ { }
+_AFXCMN_INLINE void CHotKeyCtrl::SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0L); }
+_AFXCMN_INLINE DWORD CHotKeyCtrl::GetHotKey() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L); }
+_AFXCMN_INLINE void CHotKeyCtrl::SetRules(WORD wInvalidComb, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE void CToolTipCtrl::Activate(BOOL bActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L); }
+_AFXCMN_INLINE void CToolTipCtrl::SetToolInfo(LPTOOLINFO lpToolInfo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo); }
+_AFXCMN_INLINE void CToolTipCtrl::RelayEvent(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg); }
+_AFXCMN_INLINE void CToolTipCtrl::SetDelayTime(UINT nDelay)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETDELAYTIME, 0, nDelay); }
+_AFXCMN_INLINE int CToolTipCtrl::GetToolCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSpinButtonCtrl::CSpinButtonCtrl()
+ { }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetAccel(int nAccel, UDACCEL* pAccel) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetBase() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0l)); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::GetBuddy() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0l)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, UDM_GETPOS, 0, 0l)); }
+_AFXCMN_INLINE DWORD CSpinButtonCtrl::GetRange() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0l); }
+_AFXCMN_INLINE BOOL CSpinButtonCtrl::SetAccel(int nAccel, UDACCEL* pAccel)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetBase(int nBase)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::SetBuddy(CWnd* pWndBuddy)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)pWndBuddy->m_hWnd, 0L)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) (short) LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0))); }
+_AFXCMN_INLINE void CSpinButtonCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSliderCtrl::CSliderCtrl()
+ { }
+_AFXCMN_INLINE int CSliderCtrl::GetLineSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetLineSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetPageSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetPageSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMax() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMin() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMin(int nMin, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMax(int nMax, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax); }
+_AFXCMN_INLINE void CSliderCtrl::ClearSel(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::GetChannelRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE void CSliderCtrl::GetThumbRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE int CSliderCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPOS, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos); }
+_AFXCMN_INLINE void CSliderCtrl::VerifyPos()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L); }
+_AFXCMN_INLINE void CSliderCtrl::ClearTics(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0l); }
+_AFXCMN_INLINE UINT CSliderCtrl::GetNumTics() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0l); }
+_AFXCMN_INLINE DWORD* CSliderCtrl::GetTicArray() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD*) ::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetTic(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L); }
+_AFXCMN_INLINE int CSliderCtrl::GetTicPos(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L); }
+_AFXCMN_INLINE BOOL CSliderCtrl::SetTic(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic); }
+_AFXCMN_INLINE void CSliderCtrl::SetTicFreq(int nFreq)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CProgressCtrl::CProgressCtrl()
+ { }
+_AFXCMN_INLINE void CProgressCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper)); }
+_AFXCMN_INLINE int CProgressCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::OffsetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::SetStep(int nStep)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::StepIt()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHeaderCtrl::CHeaderCtrl()
+ { }
+_AFXCMN_INLINE int CHeaderCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE int CHeaderCtrl::InsertItem(int nPos, HD_ITEM* phdi)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, HDM_INSERTITEM, nPos, (LPARAM)phdi); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::DeleteItem(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nPos, 0L); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::GetItem(int nPos, HD_ITEM* pHeaderItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::SetItem(int nPos, HD_ITEM* pHeaderItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::Layout(HD_LAYOUT* pHeaderLayout)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CImageList::operator HIMAGELIST() const
+ { return m_hImageList;}
+_AFXCMN_INLINE HIMAGELIST CImageList::GetSafeHandle() const
+ { return (this == NULL) ? NULL : m_hImageList; }
+_AFXCMN_INLINE int CImageList::GetImageCount() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageCount(m_hImageList); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Add(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, COLORREF crMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddMasked(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), crMask); }
+_AFXCMN_INLINE BOOL CImageList::Remove(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_Remove(m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Replace(m_hImageList, nImage, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
+_AFXCMN_INLINE int CImageList::Replace(int nImage, HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon); }
+_AFXCMN_INLINE HICON CImageList::ExtractIcon(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_ExtractIcon(NULL, m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle)
+ { ASSERT(m_hImageList != NULL); ASSERT(pDC != NULL); return ImageList_Draw(m_hImageList, nImage, pDC->GetSafeHdc(), pt.x, pt.y, nStyle); }
+_AFXCMN_INLINE COLORREF CImageList::SetBkColor(COLORREF cr)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetBkColor(m_hImageList, cr); }
+_AFXCMN_INLINE COLORREF CImageList::GetBkColor() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetBkColor(m_hImageList); }
+_AFXCMN_INLINE BOOL CImageList::SetOverlayImage(int nImage, int nOverlay)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay); }
+_AFXCMN_INLINE BOOL CImageList::GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo); }
+_AFXCMN_INLINE BOOL CImageList::BeginDrag(int nImage, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE void PASCAL CImageList::EndDrag()
+ { ImageList_EndDrag(); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragMove(CPoint pt)
+ { return ImageList_DragMove(pt.x, pt.y); }
+_AFXCMN_INLINE BOOL CImageList::SetDragCursorImage(int nDrag, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragShowNolock(BOOL bShow)
+ {return ImageList_DragShowNolock(bShow);}
+_AFXCMN_INLINE CImageList* PASCAL CImageList::GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
+ {return CImageList::FromHandle(ImageList_GetDragImage(lpPoint, lpPointHotSpot));}
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragEnter(CWnd* pWndLock, CPoint point)
+ { return ImageList_DragEnter(pWndLock->GetSafeHwnd(), point.x, point.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragLeave(CWnd* pWndLock)
+ { return ImageList_DragLeave(pWndLock->GetSafeHwnd()); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTabCtrl::CTabCtrl()
+ { }
+_AFXCMN_INLINE CImageList* CTabCtrl::GetImageList() const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L)); }
+_AFXCMN_INLINE CImageList* CTabCtrl::SetImageList(CImageList* pImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CTabCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItem(int nItem, TC_ITEM* pTabCtrlItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::SetItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::InsertItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItemRect(int nItem, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect); }
+_AFXCMN_INLINE int CTabCtrl::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L); }
+_AFXCMN_INLINE int CTabCtrl::SetCurSel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L); }
+_AFXCMN_INLINE int CTabCtrl::HitTest(TC_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM) pHitTestInfo); }
+_AFXCMN_INLINE void CTabCtrl::AdjustRect(BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect); }
+_AFXCMN_INLINE CSize CTabCtrl::SetItemSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (CSize)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx,size.cy)); }
+_AFXCMN_INLINE void CTabCtrl::RemoveImage(int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L); }
+_AFXCMN_INLINE void CTabCtrl::SetPadding(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE int CTabCtrl::GetRowCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CTabCtrl::GetTooltips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CTabCtrl::SetTooltips(CToolTipCtrl* pWndTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)pWndTip->m_hWnd, 0L); }
+_AFXCMN_INLINE int CTabCtrl::GetCurFocus() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CAnimateCtrl::CAnimateCtrl()
+ { }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(LPCTSTR lpszName)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)lpszName); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, nID); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Play(UINT nFrom, UINT nTo, UINT nRep)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo)); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Stop()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Close()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Seek(UINT nTo)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+_AFXCMN_INLINE CRichEditCtrl::CRichEditCtrl()
+ { }
+_AFXCMN_INLINE BOOL CRichEditCtrl::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXCMN_INLINE int CRichEditCtrl::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::SetModify(BOOL bModified /* = TRUE */)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0);}
+_AFXCMN_INLINE void CRichEditCtrl::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE CPoint CRichEditCtrl::GetCharPos(long lChar) const
+ { ASSERT(::IsWindow(m_hWnd)); CPoint pt; ::SendMessage(m_hWnd, EM_POSFROMCHAR, (WPARAM)&pt, (LPARAM)lChar); return pt;}
+_AFXCMN_INLINE void CRichEditCtrl::SetOptions(WORD wOp, DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETOPTIONS, (WPARAM)wOp, (LPARAM)dwFlags); }
+_AFXCMN_INLINE void CRichEditCtrl::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo)
+ {ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText); }
+_AFXCMN_INLINE void CRichEditCtrl::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetReadOnly(BOOL bReadOnly /* = TRUE */ )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXCMN_INLINE int CRichEditCtrl::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::DisplayBand(LPRECT pDisplayRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_DISPLAYBAND, 0, (LPARAM)pDisplayRect); }
+_AFXCMN_INLINE void CRichEditCtrl::GetSel(CHARRANGE &cr) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE void CRichEditCtrl::LimitText(long nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXLIMITTEXT, 0, nChars); }
+
+_AFXCMN_INLINE long CRichEditCtrl::LineFromChar(long nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_EXLINEFROMCHAR, 0, nIndex); }
+
+_AFXCMN_INLINE void CRichEditCtrl::SetSel(CHARRANGE &cr)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FINDTEXTEX, dwFlags, (LPARAM)pFindText); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FormatRange(FORMATRANGE* pfr, BOOL bDisplay)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FORMATRANGE, (WPARAM)bDisplay, (LPARAM)pfr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetEventMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETEVENTMASK, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetSelText(LPSTR lpBuf) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpBuf); }
+
+_AFXCMN_INLINE void CRichEditCtrl::HideSelection(BOOL bHide, BOOL bPerm)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_HIDESELECTION, bHide, bPerm); }
+
+_AFXCMN_INLINE void CRichEditCtrl::RequestResize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REQUESTRESIZE, 0, 0L); }
+
+_AFXCMN_INLINE WORD CRichEditCtrl::GetSelectionType() const
+ { ASSERT(::IsWindow(m_hWnd)); return (WORD)::SendMessage(m_hWnd, EM_SELECTIONTYPE, 0, 0L); }
+
+_AFXCMN_INLINE COLORREF CRichEditCtrl::SetBackgroundColor(BOOL bSysColor, COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, bSysColor, cr); }
+
+_AFXCMN_INLINE DWORD CRichEditCtrl::SetEventMask(DWORD dwEventMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_SETEVENTMASK, 0, dwEventMask); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetOLECallback(IRichEditOleCallback* pCallback)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETOLECALLBACK, 0, (LPARAM)pCallback); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(HDC hDC, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)hDC, lLineWidth); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(CDC &dc, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)dc.m_hDC, lLineWidth); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamIn(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMIN, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamOut(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMOUT, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, NULL, NULL); }
+
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCMN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcoll.h b/public/sdk/inc/mfc42/afxcoll.h
new file mode 100644
index 000000000..042d43f06
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcoll.h
@@ -0,0 +1,1446 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCOLL_H__
+#define __AFXCOLL_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CObject
+ // Arrays
+ class CByteArray; // array of BYTE
+ class CWordArray; // array of WORD
+ class CDWordArray; // array of DWORD
+ class CUIntArray; // array of UINT
+ class CPtrArray; // array of void*
+ class CObArray; // array of CObject*
+
+ // Lists
+ class CPtrList; // list of void*
+ class CObList; // list of CObject*
+
+ // Maps (aka Dictionaries)
+ class CMapWordToOb; // map from WORD to CObject*
+ class CMapWordToPtr; // map from WORD to void*
+ class CMapPtrToWord; // map from void* to WORD
+ class CMapPtrToPtr; // map from void* to void*
+
+ // Special String variants
+ class CStringArray; // array of CStrings
+ class CStringList; // list of CStrings
+ class CMapStringToPtr; // map from CString to void*
+ class CMapStringToOb; // map from CString to CObject*
+ class CMapStringToString; // map from CString to CString
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+////////////////////////////////////////////////////////////////////////////
+
+class CByteArray : public CObject
+{
+
+ DECLARE_SERIAL(CByteArray)
+public:
+
+// Construction
+ CByteArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ BYTE GetAt(int nIndex) const;
+ void SetAt(int nIndex, BYTE newElement);
+ BYTE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const BYTE* GetData() const;
+ BYTE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, BYTE newElement);
+ int Add(BYTE newElement);
+ int Append(const CByteArray& src);
+ void Copy(const CByteArray& src);
+
+ // overloaded operator helpers
+ BYTE operator[](int nIndex) const;
+ BYTE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, BYTE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CByteArray* pNewArray);
+
+// Implementation
+protected:
+ BYTE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CByteArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef BYTE BASE_TYPE;
+ typedef BYTE BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CWordArray)
+public:
+
+// Construction
+ CWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ WORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, WORD newElement);
+ WORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const WORD* GetData() const;
+ WORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, WORD newElement);
+ int Add(WORD newElement);
+ int Append(const CWordArray& src);
+ void Copy(const CWordArray& src);
+
+ // overloaded operator helpers
+ WORD operator[](int nIndex) const;
+ WORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, WORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CWordArray* pNewArray);
+
+// Implementation
+protected:
+ WORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef WORD BASE_TYPE;
+ typedef WORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CDWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CDWordArray)
+public:
+
+// Construction
+ CDWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ DWORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, DWORD newElement);
+ DWORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const DWORD* GetData() const;
+ DWORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, DWORD newElement);
+ int Add(DWORD newElement);
+ int Append(const CDWordArray& src);
+ void Copy(const CDWordArray& src);
+
+ // overloaded operator helpers
+ DWORD operator[](int nIndex) const;
+ DWORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, DWORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CDWordArray* pNewArray);
+
+// Implementation
+protected:
+ DWORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CDWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef DWORD BASE_TYPE;
+ typedef DWORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CUIntArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CUIntArray)
+public:
+
+// Construction
+ CUIntArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ UINT GetAt(int nIndex) const;
+ void SetAt(int nIndex, UINT newElement);
+ UINT& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const UINT* GetData() const;
+ UINT* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, UINT newElement);
+ int Add(UINT newElement);
+ int Append(const CUIntArray& src);
+ void Copy(const CUIntArray& src);
+
+ // overloaded operator helpers
+ UINT operator[](int nIndex) const;
+ UINT& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, UINT newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CUIntArray* pNewArray);
+
+// Implementation
+protected:
+ UINT* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CUIntArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef UINT BASE_TYPE;
+ typedef UINT BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CPtrArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrArray)
+public:
+
+// Construction
+ CPtrArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ void* GetAt(int nIndex) const;
+ void SetAt(int nIndex, void* newElement);
+ void*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const void** GetData() const;
+ void** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, void* newElement);
+ int Add(void* newElement);
+ int Append(const CPtrArray& src);
+ void Copy(const CPtrArray& src);
+
+ // overloaded operator helpers
+ void* operator[](int nIndex) const;
+ void*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, void* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CPtrArray* pNewArray);
+
+// Implementation
+protected:
+ void** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CPtrArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CObArray : public CObject
+{
+
+ DECLARE_SERIAL(CObArray)
+public:
+
+// Construction
+ CObArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CObject* GetAt(int nIndex) const;
+ void SetAt(int nIndex, CObject* newElement);
+ CObject*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CObject** GetData() const;
+ CObject** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, CObject* newElement);
+ int Add(CObject* newElement);
+ int Append(const CObArray& src);
+ void Copy(const CObArray& src);
+
+ // overloaded operator helpers
+ CObject* operator[](int nIndex) const;
+ CObject*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, CObject* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CObArray* pNewArray);
+
+// Implementation
+protected:
+ CObject** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CObArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CStringArray : public CObject
+{
+
+ DECLARE_SERIAL(CStringArray)
+public:
+
+// Construction
+ CStringArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CString GetAt(int nIndex) const;
+ void SetAt(int nIndex, LPCTSTR newElement);
+ CString& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CString* GetData() const;
+ CString* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, LPCTSTR newElement);
+ int Add(LPCTSTR newElement);
+ int Append(const CStringArray& src);
+ void Copy(const CStringArray& src);
+
+ // overloaded operator helpers
+ CString operator[](int nIndex) const;
+ CString& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, LPCTSTR newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CStringArray* pNewArray);
+
+// Implementation
+protected:
+ CString* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CStringArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CPtrList : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ void* data;
+ };
+public:
+
+// Construction
+ CPtrList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ void*& GetHead();
+ void* GetHead() const;
+ void*& GetTail();
+ void* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ void* RemoveHead();
+ void* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(void* newElement);
+ POSITION AddTail(void* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CPtrList* pNewList);
+ void AddTail(CPtrList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ void*& GetNext(POSITION& rPosition); // return *Position++
+ void* GetNext(POSITION& rPosition) const; // return *Position++
+ void*& GetPrev(POSITION& rPosition); // return *Position--
+ void* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ void*& GetAt(POSITION position);
+ void* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, void* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, void* newElement);
+ POSITION InsertAfter(POSITION position, void* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(void* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CPtrList();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CObList : public CObject
+{
+
+ DECLARE_SERIAL(CObList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CObject* data;
+ };
+public:
+
+// Construction
+ CObList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CObject*& GetHead();
+ CObject* GetHead() const;
+ CObject*& GetTail();
+ CObject* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CObject* RemoveHead();
+ CObject* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(CObject* newElement);
+ POSITION AddTail(CObject* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CObList* pNewList);
+ void AddTail(CObList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CObject*& GetNext(POSITION& rPosition); // return *Position++
+ CObject* GetNext(POSITION& rPosition) const; // return *Position++
+ CObject*& GetPrev(POSITION& rPosition); // return *Position--
+ CObject* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CObject*& GetAt(POSITION position);
+ CObject* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, CObject* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, CObject* newElement);
+ POSITION InsertAfter(POSITION position, CObject* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(CObject* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CObList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CStringList : public CObject
+{
+
+ DECLARE_SERIAL(CStringList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CString data;
+ };
+public:
+
+// Construction
+ CStringList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CString& GetHead();
+ CString GetHead() const;
+ CString& GetTail();
+ CString GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CString RemoveHead();
+ CString RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(LPCTSTR newElement);
+ POSITION AddTail(LPCTSTR newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CStringList* pNewList);
+ void AddTail(CStringList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CString& GetNext(POSITION& rPosition); // return *Position++
+ CString GetNext(POSITION& rPosition) const; // return *Position++
+ CString& GetPrev(POSITION& rPosition); // return *Position--
+ CString GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CString& GetAt(POSITION position);
+ CString GetAt(POSITION position) const;
+ void SetAt(POSITION pos, LPCTSTR newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, LPCTSTR newElement);
+ POSITION InsertAfter(POSITION position, LPCTSTR newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(LPCTSTR searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CStringList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapWordToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ WORD key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToWord : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToWord)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ void* key;
+ WORD value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToWord(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, WORD& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ WORD& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, WORD newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, WORD& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToWord();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef WORD BASE_VALUE;
+ typedef WORD BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ void* key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+ void* GetValueAt(void* key) const;
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapWordToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ WORD key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, CObject*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapStringToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, void*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CObject*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToString : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToString)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CString value;
+ };
+
+public:
+
+// Construction
+ CMapStringToString(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CString& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CString& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, LPCTSTR newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CString& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToString();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CString BASE_VALUE;
+ typedef LPCTSTR BASE_ARG_VALUE;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for MFC private state structures
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCOLL_INLINE inline
+#include <afxcoll.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //!__AFXCOLL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcoll.inl b/public/sdk/inc/mfc42/afxcoll.inl
new file mode 100644
index 000000000..171167c9a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcoll.inl
@@ -0,0 +1,496 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCOLL.H
+
+#ifdef _AFXCOLL_INLINE
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CByteArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CByteArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CByteArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE BYTE CByteArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CByteArray::SetAt(int nIndex, BYTE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE BYTE& CByteArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const BYTE* CByteArray::GetData() const
+ { return (const BYTE*)m_pData; }
+_AFXCOLL_INLINE BYTE* CByteArray::GetData()
+ { return (BYTE*)m_pData; }
+_AFXCOLL_INLINE int CByteArray::Add(BYTE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE BYTE CByteArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE BYTE& CByteArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE WORD CWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CWordArray::SetAt(int nIndex, WORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE WORD& CWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const WORD* CWordArray::GetData() const
+ { return (const WORD*)m_pData; }
+_AFXCOLL_INLINE WORD* CWordArray::GetData()
+ { return (WORD*)m_pData; }
+_AFXCOLL_INLINE int CWordArray::Add(WORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE WORD CWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE WORD& CWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CDWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CDWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CDWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE DWORD CDWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CDWordArray::SetAt(int nIndex, DWORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const DWORD* CDWordArray::GetData() const
+ { return (const DWORD*)m_pData; }
+_AFXCOLL_INLINE DWORD* CDWordArray::GetData()
+ { return (DWORD*)m_pData; }
+_AFXCOLL_INLINE int CDWordArray::Add(DWORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE DWORD CDWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE DWORD& CDWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CUIntArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CUIntArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CUIntArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE UINT CUIntArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CUIntArray::SetAt(int nIndex, UINT newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE UINT& CUIntArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const UINT* CUIntArray::GetData() const
+ { return (const UINT*)m_pData; }
+_AFXCOLL_INLINE UINT* CUIntArray::GetData()
+ { return (UINT*)m_pData; }
+_AFXCOLL_INLINE int CUIntArray::Add(UINT newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE UINT CUIntArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE UINT& CUIntArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CPtrArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CPtrArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE void* CPtrArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CPtrArray::SetAt(int nIndex, void* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE void*& CPtrArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const void** CPtrArray::GetData() const
+ { return (const void**)m_pData; }
+_AFXCOLL_INLINE void** CPtrArray::GetData()
+ { return (void**)m_pData; }
+_AFXCOLL_INLINE int CPtrArray::Add(void* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE void* CPtrArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE void*& CPtrArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CObArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CObArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CObject* CObArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CObArray::SetAt(int nIndex, CObject* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CObject*& CObArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CObject** CObArray::GetData() const
+ { return (const CObject**)m_pData; }
+_AFXCOLL_INLINE CObject** CObArray::GetData()
+ { return (CObject**)m_pData; }
+_AFXCOLL_INLINE int CObArray::Add(CObject* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CObject* CObArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CObject*& CObArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CStringArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CStringArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CString CStringArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CStringArray::SetAt(int nIndex, LPCTSTR newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CString& CStringArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CString* CStringArray::GetData() const
+ { return (const CString*)m_pData; }
+_AFXCOLL_INLINE CString* CStringArray::GetData()
+ { return (CString*)m_pData; }
+_AFXCOLL_INLINE int CStringArray::Add(LPCTSTR newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CString CStringArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CString& CStringArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CPtrList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void*& CPtrList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void* CPtrList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE void* CPtrList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CPtrList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CPtrList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE void*& CPtrList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CPtrList::SetAt(POSITION pos, void* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CObList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CObject*& CObList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject* CObList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CObject* CObList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CObList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CObList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CObject*& CObList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CObList::SetAt(POSITION pos, CObject* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CStringList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CString& CStringList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString CStringList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString& CStringList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CString CStringList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CStringList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CStringList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CString& CStringList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CStringList::SetAt(POSITION pos, LPCTSTR newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToPtr::SetAt(WORD key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToWord::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToWord::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToWord::SetAt(void* key, WORD newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToWord::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToWord::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToPtr::SetAt(void* key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToOb::SetAt(WORD key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToPtr::SetAt(LPCTSTR key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToOb::SetAt(LPCTSTR key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToString::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToString::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToString::SetAt(LPCTSTR key, LPCTSTR newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToString::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToString::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCOLL_INLINE
diff --git a/public/sdk/inc/mfc42/afxcom_.h b/public/sdk/inc/mfc42/afxcom_.h
new file mode 100644
index 000000000..26de5fd26
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcom_.h
@@ -0,0 +1,463 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCOM_.H
+//
+// THIS FILE IS FOR MFC IMPLEMENTATION ONLY.
+
+#ifndef __AFXCOM_H__
+#define __AFXCOM_H__
+
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFX_NOFORCE_LIBS
+#pragma comment(lib, "uuid.lib")
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef ASSERT
+#ifndef _INC_CRTDBG
+#include <crtdbg.h>
+#endif // _INC_CRTDBG
+#define ASSERT(x) _ASSERT(x)
+#endif // ASSERT
+
+/////////////////////////////////////////////////////////////////////////////
+
+template<class _Interface, const IID* _IID>
+class _CIP
+{
+public:
+ // Declare interface type so that the type may be available outside
+ // the scope of this template.
+ typedef _Interface Interface;
+
+ // When the compiler supports references in template params,
+ // _CLSID will be changed to a reference. To avoid conversion
+ // difficulties this function should be used to obtain the
+ // CLSID.
+ static const IID& GetIID()
+ { ASSERT(_IID != NULL); return *_IID; }
+
+ // Construct empty in preperation for assignment.
+ _CIP() : _pInterface(NULL) { }
+
+ // Copy the pointer and AddRef().
+ _CIP(const _CIP& cp) : _pInterface(cp._pInterface)
+ { _AddRef(); }
+
+ // Saves and AddRef()'s the interface
+ _CIP(Interface* pInterface) : _pInterface(pInterface)
+ { _AddRef(); }
+
+ // Copies the pointer. If bAddRef is TRUE, the interface will
+ // be AddRef()ed.
+ _CIP(Interface* pInterface, BOOL bAddRef)
+ : _pInterface(pInterface)
+ {
+ if (bAddRef)
+ {
+ ASSERT(pInterface != NULL);
+ _AddRef();
+ }
+ }
+
+ // Calls CoCreateClass with the provided CLSID.
+ _CIP(const CLSID& clsid, DWORD dwClsContext = CLSCTX_INPROC_SERVER)
+ : _pInterface(NULL)
+ {
+ HRESULT hr = CreateObject(clsid, dwClsContext);
+ ASSERT(SUCCEEDED(hr));
+ }
+
+ // Calls CoCreateClass with the provided CLSID retrieved from
+ // the string.
+ _CIP(LPOLESTR str, DWORD dwClsContext = CLSCTX_INPROC_SERVER)
+ : _pInterface(NULL)
+ {
+ HRESULT hr = CreateObject(str, dwClsContext);
+ ASSERT(SUCCEEDED(hr));
+ }
+
+ // Saves and AddRef()s the interface.
+ _CIP& operator=(Interface* pInterface)
+ {
+ if (_pInterface != pInterface)
+ {
+ Interface* pOldInterface = _pInterface;
+ _pInterface = pInterface;
+ _AddRef();
+ if (pOldInterface != NULL)
+ pOldInterface->Release();
+ }
+ return *this;
+ }
+
+ // Copies and AddRef()'s the interface.
+ _CIP& operator=(const _CIP& cp)
+ { return operator=(cp._pInterface); }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ _CIP& operator=(const CLSID& clsid)
+ {
+ HRESULT hr = CreateObject(clsid);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // Calls CoCreateClass with the provided CLSID retrieved from
+ // the string.
+ _CIP& operator=(LPOLESTR str)
+ {
+ HRESULT hr = CreateObject(str);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // If we still have an interface then Release() it. The interface
+ // may be NULL if Detach() has previosly been called, or if it was
+ // never set.
+ ~_CIP()
+ { _Release(); }
+
+ // Saves/sets the interface without AddRef()ing. This call
+ // will release any previously aquired interface.
+ void Attach(Interface* pInterface)
+ {
+ _Release();
+ _pInterface = pInterface;
+ }
+
+ // Saves/sets the interface only AddRef()ing if bAddRef is TRUE.
+ // This call will release any previously aquired interface.
+ void Attach(Interface* pInterface, BOOL bAddRef)
+ {
+ _Release();
+ _pInterface = pInterface;
+ if (bAddRef)
+ {
+ ASSERT(pInterface != NULL);
+ pInterface->AddRef();
+ }
+ }
+
+ // Simply NULL the interface pointer so that it isn't Released()'ed.
+ void Detach()
+ {
+ ASSERT(_pInterface);
+ _pInterface = NULL;
+ }
+
+ // Return the interface. This value may be NULL
+ operator Interface*() const
+ { return _pInterface; }
+
+ // Queries for the unknown and return it
+ operator IUnknown*()
+ { return _pInterface; }
+
+ // Provides minimal level assertion before use.
+ operator Interface&() const
+ { ASSERT(_pInterface); return *_pInterface; }
+
+ // Allows an instance of this class to act as though it were the
+ // actual interface. Also provides minimal assertion verification.
+ Interface& operator*() const
+ { ASSERT(_pInterface); return *_pInterface; }
+
+ // Returns the address of the interface pointer contained in this
+ // class. This is useful when using the COM/OLE interfaces to create
+ // this interface.
+ Interface** operator&()
+ {
+ _Release();
+ _pInterface = NULL;
+ return &_pInterface;
+ }
+
+ // Allows this class to be used as the interface itself.
+ // Also provides simple assertion verification.
+ Interface* operator->() const
+ { ASSERT(_pInterface != NULL); return _pInterface; }
+
+ // This operator is provided so that simple boolean expressions will
+ // work. For example: "if (p) ...".
+ // Returns TRUE if the pointer is not NULL.
+ operator BOOL() const
+ { return _pInterface != NULL; }
+
+ // Returns TRUE if the interface is NULL.
+ // This operator will be removed when support for type bool
+ // is added to the compiler.
+ BOOL operator!()
+ { return _pInterface == NULL; }
+
+ // Provides assertion verified, Release()ing of this interface.
+ void Release()
+ {
+ ASSERT(_pInterface != NULL);
+ _pInterface->Release();
+ _pInterface = NULL;
+ }
+
+ // Provides assertion verified AddRef()ing of this interface.
+ void AddRef()
+ { ASSERT(_pInterface != NULL); _pInterface->AddRef(); }
+
+ // Another way to get the interface pointer without casting.
+ Interface* GetInterfacePtr() const
+ { return _pInterface; }
+
+ // Loads an interface for the provided CLSID.
+ // Returns an HRESULT. Any previous interface is released.
+ HRESULT CreateObject(
+ const CLSID& clsid, DWORD dwClsContext=CLSCTX_INPROC_SERVER)
+ {
+ _Release();
+ HRESULT hr = CoCreateInstance(clsid, NULL, dwClsContext,
+ GetIID(), reinterpret_cast<void**>(&_pInterface));
+ ASSERT(SUCCEEDED(hr));
+ return hr;
+ }
+
+ // Creates the class specified by clsidString. clsidString may
+ // contain a class id, or a prog id string.
+ HRESULT CreateObject(
+ LPOLESTR clsidString, DWORD dwClsContext=CLSCTX_INPROC_SERVER)
+ {
+ ASSERT(clsidString != NULL);
+ CLSID clsid;
+ HRESULT hr;
+ if (clsidString[0] == '{')
+ hr = CLSIDFromString(clsidString, &clsid);
+ else
+ hr = CLSIDFromProgID(clsidString, &clsid);
+ ASSERT(SUCCEEDED(hr));
+ if (FAILED(hr))
+ return hr;
+ return CreateObject(clsid, dwClsContext);
+ }
+
+ // Performs a QI on pUnknown for the interface type returned
+ // for this class. The interface is stored. If pUnknown is
+ // NULL, or the QI fails, E_NOINTERFACE is returned and
+ // _pInterface is set to NULL.
+ HRESULT QueryInterface(IUnknown* pUnknown)
+ {
+ if (pUnknown == NULL) // Can't QI NULL
+ {
+ operator=(static_cast<Interface*>(NULL));
+ return E_NOINTERFACE;
+ }
+
+ // Query for this interface
+ Interface* pInterface;
+ HRESULT hr = pUnknown->QueryInterface(GetIID(),
+ reinterpret_cast<void**>(&pInterface));
+ if (FAILED(hr))
+ {
+ // If failed intialize interface to NULL and return HRESULT.
+ Attach(NULL);
+ return hr;
+ }
+
+ // Save the interface without AddRef()ing.
+ Attach(pInterface);
+ return hr;
+ }
+
+private:
+ // Releases only if the interface is not null.
+ // The interface is not set to NULL.
+ void _Release()
+ {
+ if (_pInterface != NULL)
+ _pInterface->Release();
+ }
+
+ // AddRefs only if the interface is not NULL
+ void _AddRef()
+ {
+ if (_pInterface != NULL)
+ _pInterface->AddRef();
+ }
+
+ // The Interface.
+ Interface* _pInterface;
+}; // class _CIP
+
+template<class _Interface, const IID* _IID>
+class CIP : public _CIP<_Interface, _IID>
+{
+public:
+ // Simplified name for base class and provide derived classes
+ // access to base type
+ typedef _CIP<_Interface, _IID> BC;
+
+ // Provideds derived classes access to the interface type.
+ typedef _Interface Interface;
+
+ // Construct empty in preperation for assignment.
+ CIP() { }
+
+ // Copy the pointer and AddRef().
+ CIP(const CIP& cp) : _CIP<_Interface, _IID>(cp) { }
+
+ // Saves and AddRef()s the interface.
+ CIP(Interface* pInterface) : _CIP<_Interface, _IID>(pInterface) { }
+
+ // Saves the interface and AddRef()s only if bAddRef is TRUE.
+ CIP(Interface* pInterface, BOOL bAddRef)
+ : _CIP<_Interface, _IID>(pInterface, bAddRef) { }
+
+ // Queries for this interface.
+ CIP(IUnknown* pUnknown)
+ {
+ if (pUnknown == NULL)
+ return;
+ Interface* pInterface;
+ HRESULT hr = pUnknown->QueryInterface(GetIID(),
+ reinterpret_cast<void**>(&pInterface));
+ ASSERT(SUCCEEDED(hr));
+ Attach(pInterface);
+ }
+
+ // Creates the interface from the CLSID.
+ CIP(const CLSID& clsid) : _CIP<_Interface, _IID>(clsid) { }
+
+ // Creates the interface from the CLSID.
+ CIP(LPOLESTR str) : _CIP<_Interface, _IID>(str) { }
+
+ // Copies and AddRef()'s the interface.
+ CIP& operator=(const CIP& cp)
+ { _CIP<_Interface, _IID>::operator=(cp); return *this; }
+
+ // Saves and AddRef()s the interface.
+ CIP& operator=(Interface* pInterface)
+ { _CIP<_Interface, _IID>::operator=(pInterface); return *this; }
+
+ CIP& operator=(IUnknown* pUnknown)
+ {
+ HRESULT hr = QueryInterface(pUnknown);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(const CLSID& clsid)
+ { _CIP<_Interface, _IID>::operator=(clsid); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(LPOLESTR str)
+ { _CIP<_Interface, _IID>::operator=(str); return *this; }
+}; // class CIP
+
+class CIP<IUnknown, &IID_IUnknown> : public _CIP<IUnknown, &IID_IUnknown>
+{
+public:
+ // Simplified name for base class and provide derived classes
+ // access to base type
+ typedef _CIP<IUnknown, &IID_IUnknown> BC;
+
+ // Provideds derived classes access to the interface type.
+ typedef IUnknown Interface;
+
+ // Construct empty in preperation for assignment.
+ CIP() { }
+
+ // Copy the pointer and AddRef().
+ CIP(const CIP& cp) : _CIP<IUnknown, &IID_IUnknown>(cp) { }
+
+ // Saves and AddRef()s the interface.
+ CIP(Interface* pInterface)
+ : _CIP<IUnknown, &IID_IUnknown>(pInterface) { }
+
+ // Saves and then AddRef()s only if bAddRef is TRUE.
+ CIP(Interface* pInterface, BOOL bAddRef)
+ : _CIP<IUnknown, &IID_IUnknown>(pInterface, bAddRef) { }
+
+ // Creates the interface from the CLSID.
+ CIP(const CLSID& clsid) : _CIP<IUnknown, &IID_IUnknown>(clsid) { }
+
+ // Creates the interface from the CLSID.
+ CIP(LPOLESTR str) : _CIP<IUnknown, &IID_IUnknown>(str) { }
+
+ // Copies and AddRef()'s the interface.
+ CIP& operator=(const CIP& cp)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(cp); return *this; }
+
+ // Saves and AddRef()s the interface. The previously saved
+ // interface is released.
+ CIP& operator=(Interface* pInterface)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(pInterface); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(const CLSID& clsid)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(clsid); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(LPOLESTR str)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(str); return *this; }
+
+ // Queries for the unknown and return it
+ operator IUnknown*()
+ { return GetInterfacePtr(); }
+
+ // Verifies that pUnknown is not null and performs assignment.
+ HRESULT QueryInterface(IUnknown* pUnknown)
+ {
+ _CIP<IUnknown, &IID_IUnknown>::operator=(pUnknown);
+ return pUnknown != NULL ? S_OK : E_NOINTERFACE;
+ }
+}; // CIP<IUnknown, &IID_IUnknown>
+
+#define IPTR(x) CIP<x, &IID_##x>
+#define DEFINE_IPTR(x) typedef IPTR(x) x##Ptr;
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXCOM_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxconv.h b/public/sdk/inc/mfc42/afxconv.h
new file mode 100644
index 000000000..a401555d4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxconv.h
@@ -0,0 +1,148 @@
+#ifndef __AFXCONV_H__
+#define __AFXCONV_H__
+
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPWSTR AFXAPI AfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
+LPSTR AFXAPI AfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
+
+#define A2CW(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ (LPCWSTR)AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define A2W(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define W2CA(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ (LPCSTR)AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#define W2A(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#ifndef _DEBUG
+#define USES_CONVERSION int _convert; _convert
+#else
+#define USES_CONVERSION int _convert = 0;
+#endif
+
+#ifdef _UNICODE
+ #define T2A W2A
+ #define T2CA W2CA
+ #define A2T A2W
+ #define A2CT A2CW
+ inline LPWSTR T2W(LPTSTR lp) { return lp; }
+ inline LPCWSTR T2CW(LPCTSTR lp) { return lp; }
+ inline LPTSTR W2T(LPWSTR lp) { return lp; }
+ inline LPCTSTR W2CT(LPCWSTR lp) { return lp; }
+#else
+ #define T2W A2W
+ #define T2CW A2CW
+ #define W2T W2A
+ #define W2CT W2CA
+ inline LPSTR T2A(LPTSTR lp) { return lp; }
+ inline LPCSTR T2CA(LPCTSTR lp) { return lp; }
+ inline LPTSTR A2T(LPSTR lp) { return lp; }
+ inline LPCTSTR A2CT(LPCSTR lp) { return lp; }
+#endif
+
+#define OLESTDDELIMOLE OLESTR("\\")
+
+#if defined(_UNICODE)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
+ inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
+#elif defined(OLE2ANSI)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEA
+ #define LPDEVMODEOLE LPDEVMODEA
+ #define TEXTMETRICOLE TEXTMETRICA
+ #define LPTEXTMETRICOLE LPTEXTMETRICA
+ inline size_t ocslen(LPCOLESTR x) { return lstrlenA(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return lstrcpyA(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
+ inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
+#else
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ #define T2COLE(lpa) A2CW(lpa)
+ #define T2OLE(lpa) A2W(lpa)
+ #define OLE2CT(lpo) W2CA(lpo)
+ #define OLE2T(lpo) W2A(lpo)
+ #define TASKSTRINGT2OLE(lpa) AfxTaskStringA2W(lpa)
+ #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
+ #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
+ #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
+ #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
+ #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
+ #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
+#endif
+
+#ifdef OLE2ANSI
+ #define W2OLE W2A
+ #define W2COLE W2CA
+ #define OLE2W A2W
+ #define OLE2CW A2CW
+ inline LPOLESTR A2OLE(LPSTR lp) { return lp; }
+ inline LPCOLESTR A2COLE(LPCSTR lp) { return lp; }
+ inline LPSTR OLE2A(LPOLESTR lp) { return lp; }
+ inline LPCSTR OLE2CA(LPCOLESTR lp) { return lp; }
+#else
+ #define A2OLE A2W
+ #define A2COLE A2CW
+ #define OLE2A W2A
+ #define OLE2CA W2CA
+ inline LPOLESTR W2OLE(LPWSTR lp) { return lp; }
+ inline LPCOLESTR W2COLE(LPCWSTR lp) { return lp; }
+ inline LPWSTR OLE2W(LPOLESTR lp) { return lp; }
+ inline LPCWSTR OLE2CW(LPCOLESTR lp) { return lp; }
+#endif
+
+#endif //__AFXCONV_H__
diff --git a/public/sdk/inc/mfc42/afxctl.h b/public/sdk/inc/mfc42/afxctl.h
new file mode 100644
index 000000000..16cc70aa0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.h
@@ -0,0 +1,1673 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCTL.H - MFC OLE Control support
+
+#ifndef __AFXCTL_H__
+#define __AFXCTL_H__
+
+// make sure afxole.h is included first
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+// REVIEW: integration of INetSDK with main SDK may make this unnecessary
+#if (!defined(DISPID_READYSTATE)) || (!defined(DISPID_READYSTATECHANGE))
+ #include <idispids.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CWinApp
+ class COleControlModule; // Module housekeeping for an .OCX
+
+class CFontHolder; // For manipulating font objects
+class CPictureHolder; // For manipulating picture objects
+
+//CWnd
+ class COleControl; // OLE Control
+
+//CDialog
+ class COlePropertyPage; // OLE Property page
+
+class CPropExchange; // Abstract base for property exchange
+
+#ifndef _MAC
+//CAsyncMonikerFile
+ class CDataPathProperty; // Asynchronous properties for OLE Controls
+ class CCachedDataPathProperty; // Cached asynchronous properties for OLE Controls
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Set structure packing
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC data definition for data exported from the runtime DLL
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlModule - base class for .OCX module
+// This object is statically linked into the control.
+
+class COleControlModule : public CWinApp
+{
+ DECLARE_DYNAMIC(COleControlModule)
+public:
+ virtual BOOL InitInstance();
+ virtual int ExitInstance();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Module state macro
+
+#define AfxGetControlModuleContext AfxGetStaticModuleState
+#define _afxModuleAddrThis AfxGetStaticModuleState()
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection helper functions
+
+BOOL AFXAPI AfxConnectionAdvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD* pdwCookie);
+
+BOOL AFXAPI AfxConnectionUnadvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD dwCookie);
+
+/////////////////////////////////////////////////////////////////////////////
+// Event maps
+
+enum AFX_EVENTMAP_FLAGS
+{
+ afxEventCustom = 0,
+ afxEventStock = 1,
+};
+
+struct AFX_EVENTMAP_ENTRY
+{
+ AFX_EVENTMAP_FLAGS flags;
+ DISPID dispid;
+ LPCTSTR pszName;
+ LPCSTR lpszParams;
+};
+
+struct AFX_EVENTMAP
+{
+ const AFX_EVENTMAP* lpBaseEventMap;
+ const AFX_EVENTMAP_ENTRY* lpEntries;
+ DWORD* lpStockEventMask;
+};
+
+#define DECLARE_EVENT_MAP() \
+private: \
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[]; \
+ static DWORD _dwStockEventMask; \
+protected: \
+ static const AFX_DATA AFX_EVENTMAP eventMap; \
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+
+#define BEGIN_EVENT_MAP(theClass, baseClass) \
+ const AFX_EVENTMAP* theClass::GetEventMap() const \
+ { return &eventMap; } \
+ const AFX_DATADEF AFX_EVENTMAP theClass::eventMap = \
+ { &(baseClass::eventMap), theClass::_eventEntries, \
+ &theClass::_dwStockEventMask }; \
+ DWORD theClass::_dwStockEventMask = (DWORD)-1; \
+ const AFX_DATADEF AFX_EVENTMAP_ENTRY theClass::_eventEntries[] = \
+ {
+
+#define END_EVENT_MAP() \
+ { afxEventCustom, DISPID_UNKNOWN, NULL, NULL }, \
+ };
+
+#define EVENT_CUSTOM(pszName, pfnFire, vtsParams) \
+ { afxEventCustom, DISPID_UNKNOWN, _T(pszName), vtsParams },
+
+#define EVENT_CUSTOM_ID(pszName, dispid, pfnFire, vtsParams) \
+ { afxEventCustom, dispid, _T(pszName), vtsParams },
+
+#define EVENT_PARAM(vtsParams) (BYTE*)(vtsParams)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock events
+
+#define EVENT_STOCK_CLICK() \
+ { afxEventStock, DISPID_CLICK, _T("Click"), VTS_NONE },
+
+#define EVENT_STOCK_DBLCLICK() \
+ { afxEventStock, DISPID_DBLCLICK, _T("DblClick"), VTS_NONE },
+
+#define EVENT_STOCK_KEYDOWN() \
+ { afxEventStock, DISPID_KEYDOWN, _T("KeyDown"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_KEYPRESS() \
+ { afxEventStock, DISPID_KEYPRESS, _T("KeyPress"), VTS_PI2 },
+
+#define EVENT_STOCK_KEYUP() \
+ { afxEventStock, DISPID_KEYUP, _T("KeyUp"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_MOUSEDOWN() \
+ { afxEventStock, DISPID_MOUSEDOWN, _T("MouseDown"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEMOVE() \
+ { afxEventStock, DISPID_MOUSEMOVE, _T("MouseMove"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEUP() \
+ { afxEventStock, DISPID_MOUSEUP, _T("MouseUp"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_ERROREVENT() \
+ { afxEventStock, DISPID_ERROREVENT, _T("Error"), \
+ VTS_I2 VTS_PBSTR VTS_SCODE VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL },
+
+#define EVENT_STOCK_READYSTATECHANGE() \
+ { afxEventStock, DISPID_READYSTATECHANGE, _T("ReadyStateChange"), \
+ VTS_I4 },
+
+// Shift state values for mouse and keyboard events
+#define SHIFT_MASK 0x01
+#define CTRL_MASK 0x02
+#define ALT_MASK 0x04
+
+// Button values for mouse events
+#define LEFT_BUTTON 0x01
+#define RIGHT_BUTTON 0x02
+#define MIDDLE_BUTTON 0x04
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock properties
+
+#define DISP_PROPERTY_STOCK(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispStock }, \
+
+#define DISP_STOCKPROP_APPEARANCE() \
+ DISP_PROPERTY_STOCK(COleControl, "Appearance", DISPID_APPEARANCE, \
+ COleControl::GetAppearance, COleControl::SetAppearance, VT_I2)
+
+#define DISP_STOCKPROP_BACKCOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "BackColor", DISPID_BACKCOLOR, \
+ COleControl::GetBackColor, COleControl::SetBackColor, VT_COLOR)
+
+#define DISP_STOCKPROP_BORDERSTYLE() \
+ DISP_PROPERTY_STOCK(COleControl, "BorderStyle", DISPID_BORDERSTYLE, \
+ COleControl::GetBorderStyle, COleControl::SetBorderStyle, VT_I2)
+
+#define DISP_STOCKPROP_CAPTION() \
+ DISP_PROPERTY_STOCK(COleControl, "Caption", DISPID_CAPTION, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+#define DISP_STOCKPROP_ENABLED() \
+ DISP_PROPERTY_STOCK(COleControl, "Enabled", DISPID_ENABLED, \
+ COleControl::GetEnabled, COleControl::SetEnabled, VT_BOOL)
+
+#define DISP_STOCKPROP_FONT() \
+ DISP_PROPERTY_STOCK(COleControl, "Font", DISPID_FONT, \
+ COleControl::GetFont, COleControl::SetFont, VT_FONT)
+
+#define DISP_STOCKPROP_FORECOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "ForeColor", DISPID_FORECOLOR, \
+ COleControl::GetForeColor, COleControl::SetForeColor, VT_COLOR)
+
+#define DISP_STOCKPROP_HWND() \
+ DISP_PROPERTY_STOCK(COleControl, "hWnd", DISPID_HWND, \
+ COleControl::GetHwnd, SetNotSupported, VT_HANDLE)
+
+#define DISP_STOCKPROP_TEXT() \
+ DISP_PROPERTY_STOCK(COleControl, "Text", DISPID_TEXT, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+#define DISP_STOCKPROP_READYSTATE() \
+ DISP_PROPERTY_STOCK(COleControl, "ReadyState", DISPID_READYSTATE, \
+ COleControl::GetReadyState, SetNotSupported, VT_I4)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock methods
+
+#define DISP_FUNCTION_STOCK(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispStock }, \
+
+#define DISP_STOCKFUNC_REFRESH() \
+ DISP_FUNCTION_STOCK(COleControl, "Refresh", DISPID_REFRESH, \
+ COleControl::Refresh, VT_EMPTY, VTS_NONE)
+
+#define DISP_STOCKFUNC_DOCLICK() \
+ DISP_FUNCTION_STOCK(COleControl, "DoClick", DISPID_DOCLICK, \
+ COleControl::DoClick, VT_EMPTY, VTS_NONE)
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for object factory and class ID
+
+#define BEGIN_OLEFACTORY(class_name) \
+protected: \
+ class class_name##Factory : public COleObjectFactoryEx \
+ { \
+ public: \
+ class_name##Factory(REFCLSID clsid, CRuntimeClass* pRuntimeClass, \
+ BOOL bMultiInstance, LPCTSTR lpszProgID) : \
+ COleObjectFactoryEx(clsid, pRuntimeClass, bMultiInstance, \
+ lpszProgID) {} \
+ virtual BOOL UpdateRegistry(BOOL);
+
+#define END_OLEFACTORY(class_name) \
+ }; \
+ friend class class_name##Factory; \
+ static AFX_DATA class_name##Factory factory; \
+public: \
+ static AFX_DATA const GUID guid; \
+ virtual HRESULT GetClassID(LPCLSID pclsid);
+
+#define DECLARE_OLECREATE_EX(class_name) \
+ BEGIN_OLEFACTORY(class_name) \
+ END_OLEFACTORY(class_name)
+
+#define IMPLEMENT_OLECREATE_EX(class_name, external_name, \
+ l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ static const TCHAR _szProgID_##class_name[] = _T(external_name); \
+ AFX_DATADEF class_name::class_name##Factory class_name::factory( \
+ class_name::guid, RUNTIME_CLASS(class_name), FALSE, \
+ _szProgID_##class_name); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+ HRESULT class_name::GetClassID(LPCLSID pclsid) \
+ { *pclsid = guid; return NOERROR; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type name and misc status
+
+#define DECLARE_OLECTLTYPE(class_name) \
+ virtual UINT GetUserTypeNameID(); \
+ virtual DWORD GetMiscStatus();
+
+#define IMPLEMENT_OLECTLTYPE(class_name, idsUserTypeName, dwOleMisc) \
+ UINT class_name::GetUserTypeNameID() { return idsUserTypeName; } \
+ DWORD class_name::GetMiscStatus() { return dwOleMisc; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for property page IDs
+
+#define DECLARE_PROPPAGEIDS(class_name) \
+ protected: \
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+#define BEGIN_PROPPAGEIDS(class_name, count) \
+ static CLSID _rgPropPageIDs_##class_name[count]; \
+ static ULONG _cPropPages_##class_name = (ULONG)-1; \
+ LPCLSID class_name::GetPropPageIDs(ULONG& cPropPages) { \
+ if (_cPropPages_##class_name == (ULONG)-1) { \
+ _cPropPages_##class_name = count; \
+ LPCLSID pIDs = _rgPropPageIDs_##class_name; \
+ ULONG iPageMax = count; \
+ ULONG iPage = 0;
+
+#define PROPPAGEID(clsid) \
+ ASSERT(iPage < iPageMax); \
+ if (iPage < iPageMax) \
+ pIDs[iPage++] = clsid;
+
+#define END_PROPPAGEIDS(class_name) \
+ ASSERT(iPage == iPageMax); \
+ } \
+ cPropPages = _cPropPages_##class_name; \
+ return _rgPropPageIDs_##class_name; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontHolder - helper class for dealing with font objects
+
+class CFontHolder
+{
+// Constructors
+public:
+ CFontHolder(LPPROPERTYNOTIFYSINK pNotify);
+
+// Attributes
+ LPFONT m_pFont;
+
+// Operations
+ void InitializeFont(
+ const FONTDESC* pFontDesc = NULL,
+ LPDISPATCH pFontDispAmbient = NULL);
+ void SetFont(LPFONT pNewFont);
+ void ReleaseFont();
+ HFONT GetFontHandle();
+ HFONT GetFontHandle(long cyLogical, long cyHimetric);
+ CFont* Select(CDC* pDC, long cyLogical, long cyHimetric);
+ BOOL GetDisplayString(CString& strValue);
+ LPFONTDISP GetFontDispatch();
+ void QueryTextMetrics(LPTEXTMETRIC lptm);
+
+// Implementation
+public:
+ ~CFontHolder();
+
+protected:
+ DWORD m_dwConnectCookie;
+ LPPROPERTYNOTIFYSINK m_pNotify;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPictureHolder - helper class for dealing with picture objects
+
+class CPictureHolder
+{
+// Constructors
+public:
+ CPictureHolder();
+
+// Attributes
+ LPPICTURE m_pPict;
+
+// Operations
+ BOOL CreateEmpty();
+
+ BOOL CreateFromBitmap(UINT idResource);
+ BOOL CreateFromBitmap(CBitmap* pBitmap, CPalette* pPal = NULL,
+ BOOL bTransferOwnership = TRUE);
+ BOOL CreateFromBitmap(HBITMAP hbm, HPALETTE hpal = NULL,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromMetafile(HMETAFILE hmf, int xExt, int yExt,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromIcon(UINT idResource);
+ BOOL CreateFromIcon(HICON hIcon, BOOL bTransferOwnership = FALSE);
+
+ short GetType();
+ BOOL GetDisplayString(CString& strValue);
+ LPPICTUREDISP GetPictureDispatch();
+ void SetPictureDispatch(LPPICTUREDISP pDisp);
+ void Render(CDC* pDC, const CRect& rcRender, const CRect& rcWBounds);
+
+// Implementation
+public:
+ ~CPictureHolder();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDataPathProperty - Asynchonous properties for OLE Controls
+
+#ifndef _MAC
+
+class CDataPathProperty: public CAsyncMonikerFile
+{
+ DECLARE_DYNAMIC(CDataPathProperty)
+// Constructors
+public:
+ CDataPathProperty(COleControl* pControl = NULL);
+ CDataPathProperty(LPCTSTR lpszPath, COleControl* pControl = NULL);
+ // Calls SetPath(pControl) and SetPath(lpszPath) as appropriate.
+
+// Attributes
+public:
+ void SetPath(LPCTSTR lpszPath);
+ // Sets the path to be opened by Open(COleControl*) and Open()
+ // lpszPath may be NULL.
+
+ CString GetPath() const;
+ // Returns the current path setting. Result may be empty.
+
+ COleControl* GetControl();
+ // Returns a Pointer to the control. Result may be NULL.
+
+ void SetControl(COleControl* pControl);
+ // Sets the control which will be used with Open. pControl may be NULL.
+
+// Operations
+public:
+ //REVIEW: Is this really appropriate?
+ using CAsyncMonikerFile::Open;
+ // Any of the above opens are valid.
+
+ // Overloads of Open takings some or all of: a path, a control,
+ // and a CFileException
+ // Overloads taking a COleControl call SetControl(pControl)
+ // Overloads taking an LPCTSTR cal SetPath(lpszPath)
+ virtual BOOL Open(COleControl* pControl, CFileException* pError = NULL);
+ virtual BOOL Open(LPCTSTR lpszPath, COleControl* pControl,
+ CFileException* pError = NULL);
+ virtual BOOL Open(LPCTSTR lpszPath, CFileException* pError = NULL);
+ virtual BOOL Open(CFileException* pError = NULL);
+ // Attempts to obtain an IBindHost* from the control returned by
+ // GetControl(). Calls CAsyncMonikerFile::Open with the path returned by
+ // GetPath() and, if it was obtained, the IBindHost*.
+ // Returns TRUE if successful.
+
+// Overridables
+public:
+ virtual void ResetData();
+ // Derived classes should overide this.
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ COleControl* m_pControl;
+ CString m_strPath;
+};
+
+#endif // !_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// CCachedDataPathProperty - Cached asynchonous properties for OLE Controls
+
+#ifndef _MAC
+
+class CCachedDataPathProperty : public CDataPathProperty
+{
+ DECLARE_DYNAMIC(CCachedDataPathProperty)
+//Constructors
+public:
+ CCachedDataPathProperty(COleControl* pControl = NULL);
+ CCachedDataPathProperty(LPCTSTR lpszPath, COleControl* pControl = NULL);
+
+// Attributes
+public:
+ CMemFile m_Cache;
+
+// Implementation
+public:
+ virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
+ virtual void Close();
+ virtual void ResetData();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControl - base class for a control implemented in C++ with MFC
+
+struct _AFXCTL_ADVISE_INFO; // implementation class
+struct _AFXCTL_UIACTIVE_INFO; // implementation class
+
+class COleControl : public CWnd
+{
+ DECLARE_DYNAMIC(COleControl)
+
+// Constructors
+public:
+ COleControl();
+
+// Operations
+
+ // Initialization
+ void SetInitialSize(int cx, int cy);
+ void InitializeIIDs(const IID* piidPrimary, const IID* piidEvents);
+
+ // Invalidating
+ void InvalidateControl(LPCRECT lpRect = NULL, BOOL bErase = TRUE);
+
+ // Modified flag
+ BOOL IsModified();
+ void SetModifiedFlag(BOOL bModified = TRUE);
+
+ // Drawing operations
+ void DoSuperclassPaint(CDC* pDC, const CRect& rcBounds);
+ BOOL IsOptimizedDraw();
+
+ // Property exchange
+ BOOL ExchangeVersion(CPropExchange* pPX, DWORD dwVersionDefault,
+ BOOL bConvert = TRUE);
+ BOOL ExchangeExtent(CPropExchange* pPX);
+ void ExchangeStockProps(CPropExchange* pPX);
+ BOOL IsConvertingVBX();
+
+ DWORD SerializeVersion(CArchive& ar, DWORD dwVersionDefault,
+ BOOL bConvert = TRUE);
+ void SerializeExtent(CArchive& ar);
+ void SerializeStockProps(CArchive& ar);
+
+ void ResetVersion(DWORD dwVersionDefault);
+ void ResetStockProps();
+
+ // Stock methods
+ void Refresh();
+ void DoClick();
+
+ // Stock properties
+ short GetAppearance();
+ void SetAppearance(short);
+ OLE_COLOR GetBackColor();
+ void SetBackColor(OLE_COLOR);
+ short GetBorderStyle();
+ void SetBorderStyle(short);
+ BOOL GetEnabled();
+ void SetEnabled(BOOL);
+ CFontHolder& InternalGetFont();
+ LPFONTDISP GetFont();
+ void SetFont(LPFONTDISP);
+ OLE_COLOR GetForeColor();
+ void SetForeColor(OLE_COLOR);
+ OLE_HANDLE GetHwnd();
+ const CString& InternalGetText();
+ BSTR GetText();
+ void SetText(LPCTSTR);
+ long GetReadyState();
+ void InternalSetReadyState(long lNewReadyState);
+
+ // Using colors
+ COLORREF TranslateColor(OLE_COLOR clrColor, HPALETTE hpal = NULL);
+
+ // Using fonts
+ CFont* SelectStockFont(CDC* pDC);
+ CFont* SelectFontObject(CDC* pDC, CFontHolder& fontHolder);
+ void GetStockTextMetrics(LPTEXTMETRIC lptm);
+ void GetFontTextMetrics(LPTEXTMETRIC lptm, CFontHolder& fontHolder);
+
+ // Client site access
+ LPOLECLIENTSITE GetClientSite();
+
+ // Generic ambient property access
+ BOOL GetAmbientProperty(DISPID dispid, VARTYPE vtProp, void* pvProp);
+ BOOL WillAmbientsBeValidDuringLoad();
+
+ // Specific ambient properties
+ short AmbientAppearance();
+ OLE_COLOR AmbientBackColor();
+ CString AmbientDisplayName();
+ LPFONTDISP AmbientFont();
+ OLE_COLOR AmbientForeColor();
+ LCID AmbientLocaleID();
+ CString AmbientScaleUnits();
+ short AmbientTextAlign();
+ BOOL AmbientUserMode();
+ BOOL AmbientUIDead();
+ BOOL AmbientShowGrabHandles();
+ BOOL AmbientShowHatching();
+
+ // Firing events
+ void AFX_CDECL FireEvent(DISPID dispid, BYTE* pbParams, ...);
+
+ // Firing functions for stock events
+ void FireKeyDown(USHORT* pnChar, short nShiftState);
+ void FireKeyUp(USHORT* pnChar, short nShiftState);
+ void FireKeyPress(USHORT* pnChar);
+ void FireMouseDown(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseUp(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseMove(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireClick();
+ void FireDblClick();
+ void FireError(SCODE scode, LPCTSTR lpszDescription, UINT nHelpID = 0);
+ void FireReadyStateChange();
+
+ // Changing size and/or rectangle
+ BOOL GetRectInContainer(LPRECT lpRect);
+ BOOL SetRectInContainer(LPCRECT lpRect);
+ void GetControlSize(int* pcx, int* pcy);
+ BOOL SetControlSize(int cx, int cy);
+
+ // Window management
+ void RecreateControlWindow();
+
+ // Modal dialog operations
+ void PreModalDialog(HWND hWndParent = NULL);
+ void PostModalDialog(HWND hWndParent = NULL);
+
+ // Data binding operations
+ void BoundPropertyChanged(DISPID dispid);
+ BOOL BoundPropertyRequestEdit(DISPID dispid);
+
+ // Dispatch exceptions
+ void ThrowError(SCODE sc, UINT nDescriptionID, UINT nHelpID = -1);
+ void ThrowError(SCODE sc, LPCTSTR pszDescription = NULL, UINT nHelpID = 0);
+ void GetNotSupported();
+ void SetNotSupported();
+ void SetNotPermitted();
+
+ // Communication with the control site
+ void ControlInfoChanged();
+ BOOL LockInPlaceActive(BOOL bLock);
+ LPDISPATCH GetExtendedControl();
+ void TransformCoords(POINTL* lpptlHimetric,
+ POINTF* lpptfContainer, DWORD flags);
+
+ // Simple frame
+ void EnableSimpleFrame();
+
+ // Windowless operations
+ CWnd* SetCapture();
+ BOOL ReleaseCapture();
+ CWnd* GetCapture();
+ CWnd* SetFocus();
+ CWnd* GetFocus();
+ CDC* GetDC(LPCRECT lprcRect = NULL, DWORD dwFlags = OLEDC_PAINTBKGND);
+ int ReleaseDC(CDC* pDC);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ BOOL ClipCaretRect(LPRECT lpRect);
+ virtual void GetClientRect(LPRECT lpRect) const;
+
+// Overridables
+ virtual void DoPropExchange(CPropExchange* pPX);
+ virtual void OnResetState();
+ virtual void OnDraw(
+ CDC* pDC, const CRect& rcBounds, const CRect& rcInvalid);
+ virtual void OnDrawMetafile(CDC* pDC, const CRect& rcBounds);
+
+ // Class ID (implemented by IMPLEMENT_OLECREATE_EX macro)
+ virtual HRESULT GetClassID(LPCLSID pclsid) = 0;
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ // Display of error events to user
+ virtual void DisplayError(SCODE scode, LPCTSTR lpszDescription,
+ LPCTSTR lpszSource, LPCTSTR lpszHelpFile, UINT nHelpID);
+
+ // IOleObject notifications
+ virtual void OnSetClientSite();
+ virtual BOOL OnSetExtent(LPSIZEL lpSizeL);
+ virtual void OnClose(DWORD dwSaveOption);
+
+ // IOleInPlaceObject notifications
+ virtual BOOL OnSetObjectRects(LPCRECT lpRectPos, LPCRECT lpRectClip);
+
+ // Event connection point notifications
+ virtual void OnEventAdvise(BOOL bAdvise);
+
+ // Override to hook firing of Click event
+ virtual void OnClick(USHORT iButton);
+
+ // Override to get character after key events have been processed.
+ virtual void OnKeyDownEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyUpEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyPressEvent(USHORT nChar);
+
+ // Change notifications
+ virtual void OnAppearanceChanged();
+ virtual void OnBackColorChanged();
+ virtual void OnBorderStyleChanged();
+ virtual void OnEnabledChanged();
+ virtual void OnTextChanged();
+ virtual void OnFontChanged();
+ virtual void OnForeColorChanged();
+
+ // IOleControl notifications
+ virtual void OnGetControlInfo(LPCONTROLINFO pControlInfo);
+ virtual void OnMnemonic(LPMSG pMsg);
+ virtual void OnAmbientPropertyChange(DISPID dispid);
+ virtual void OnFreezeEvents(BOOL bFreeze);
+
+ // In-place activation
+ virtual HMENU OnGetInPlaceMenu();
+ virtual void OnShowToolBars();
+ virtual void OnHideToolBars();
+
+ // IViewObject
+ virtual BOOL OnGetColorSet(DVTARGETDEVICE* ptd, HDC hicTargetDev,
+ LPLOGPALETTE* ppColorSet);
+ virtual BOOL OnGetViewExtent(DWORD dwDrawAspect, LONG lindex,
+ DVTARGETDEVICE* ptd, LPSIZEL lpsizel);
+ virtual BOOL OnGetViewRect(DWORD dwAspect, LPRECTL pRect);
+ virtual DWORD OnGetViewStatus();
+ virtual BOOL OnQueryHitPoint(DWORD dwAspect, LPCRECT pRectBounds,
+ POINT ptlLoc, LONG lCloseHint, DWORD* pHitResult);
+ virtual BOOL OnQueryHitRect(DWORD dwAspect, LPCRECT pRectBounds,
+ LPCRECT prcLoc, LONG lCloseHint, DWORD* pHitResult);
+ virtual BOOL OnGetNaturalExtent(DWORD dwAspect, LONG lindex,
+ DVTARGETDEVICE* ptd, HDC hicTargetDev, DVEXTENTINFO* pExtentInfo,
+ LPSIZEL psizel);
+
+ // IDataObject - see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+
+ // Verbs
+ virtual BOOL OnEnumVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ virtual BOOL OnDoVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnEdit(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnProperties(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+
+ // IPerPropertyBrowsing overrides
+ virtual BOOL OnGetDisplayString(DISPID dispid, CString& strValue);
+ virtual BOOL OnMapPropertyToPage(DISPID dispid, LPCLSID lpclsid,
+ BOOL* pbPageOptional);
+ virtual BOOL OnGetPredefinedStrings(DISPID dispid,
+ CStringArray* pStringArray, CDWordArray* pCookieArray);
+ virtual BOOL OnGetPredefinedValue(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+
+ // Subclassing
+ virtual BOOL IsSubclassedControl();
+
+ // Window reparenting
+ virtual void ReparentControlWindow(HWND hWndOuter, HWND hWndParent);
+
+ // Window procedure
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // General-purpose flags
+ enum ControlFlags {
+ fastBeginPaint = 0x0001,
+ clipPaintDC = 0x0002,
+ pointerInactive = 0x0004,
+ noFlickerActivate = 0x0008,
+ windowlessActivate = 0x0010,
+ canOptimizeDraw = 0x0020,
+ };
+ virtual DWORD GetControlFlags();
+
+ // Inactive pointer handling
+ virtual DWORD GetActivationPolicy();
+ virtual BOOL OnInactiveSetCursor(LPCRECT lprcBounds, long x, long y,
+ DWORD dwMouseMsg, BOOL bSetAlways);
+ virtual void OnInactiveMouseMove(LPCRECT lprcBounds, long x, long y,
+ DWORD dwKeyState);
+
+ // Windowless activation handling
+ virtual BOOL OnWindowlessMessage(UINT msg, WPARAM wParam, LPARAM lParam,
+ LRESULT* plResult);
+ virtual IDropTarget* GetWindowlessDropTarget();
+
+ // Inactive/windowless helper functions
+ virtual void GetClientOffset(long* pdxOffset, long* pdyOffset) const;
+ virtual UINT ParentToClient(LPCRECT lprcBounds, LPPOINT pPoint,
+ BOOL bHitTest = FALSE) const;
+ virtual void ClientToParent(LPCRECT lprcBounds, LPPOINT pPoint) const;
+
+#ifndef _MAC
+ // Asynchronous properties
+ void Load(LPCTSTR strNewPath, CDataPathProperty& prop);
+#endif
+
+// Implementation
+public:
+ ~COleControl();
+
+#ifndef _MAC
+ void RequestAsynchronousExchange(DWORD dwVersion);
+#endif
+
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif // _DEBUG
+
+protected:
+ // Friend classes
+ friend class COleControlInnerUnknown;
+ friend class CReflectorWnd;
+ friend class CControlFrameWnd;
+
+ // Interface hook for primary automation interface
+ LPUNKNOWN GetInterfaceHook(const void* piid);
+
+ // Shutdown
+ virtual void OnFinalRelease();
+
+ // Window management
+ virtual BOOL CreateControlWindow(HWND hWndParent, const CRect& rcPos,
+ LPCRECT prcClipped = NULL);
+ void CreateWindowForSubclassedControl();
+ BOOL IgnoreWindowMessage(UINT msg, WPARAM wParam, LPARAM lParam,
+ LRESULT* plResult);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+
+ // Serialization
+ HRESULT SaveState(IStream* pStm);
+ HRESULT LoadState(IStream* pStm);
+ virtual void Serialize(CArchive& ar);
+
+ // Drawing
+ void DrawContent(CDC* pDC, CRect& rc);
+ void DrawMetafile(CDC* pDC, CRect& rc);
+ BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+
+ // Implementation of IDataObject
+ // CControlDataSource implements OnRender reflections to COleControl
+ class CControlDataSource : public COleDataSource
+ {
+ public:
+ CControlDataSource(COleControl* pCtrl);
+ protected:
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ COleControl* m_pCtrl;
+ };
+ friend class CControlDataSource;
+
+ // IDataObject formats
+ CControlDataSource* GetDataSource();
+ virtual void SetInitialDataFormats();
+ BOOL GetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+ BOOL SetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+
+ // Type library
+ BOOL GetDispatchIID(IID* pIID);
+
+ // Connection point container
+ virtual LPCONNECTIONPOINT GetConnectionHook(REFIID iid);
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+
+ // Events
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[];
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+ static const AFX_DATA AFX_EVENTMAP eventMap;
+ const AFX_EVENTMAP_ENTRY* GetEventMapEntry(LPCTSTR pszName,
+ DISPID* pDispid) const;
+ void FireEventV(DISPID dispid, BYTE* pbParams, va_list argList);
+
+ // Stock events
+ void KeyDown(USHORT* pnChar);
+ void KeyUp(USHORT* pnChar);
+ void ButtonDown(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonUp(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonDblClk(USHORT iButton, UINT nFlags, CPoint point);
+
+ // Masks to identify which stock events and properties are used
+ void InitStockEventMask();
+ void InitStockPropMask();
+ DWORD GetStockEventMask() const;
+ DWORD GetStockPropMask() const;
+
+ // Support for subclassing a Windows control
+ CWnd* GetOuterWindow() const; // m_pReflect if any, otherwise this
+ virtual void OnReflectorDestroyed();
+
+ // Aggregation of default handler
+ virtual BOOL OnCreateAggregates();
+ LPVOID QueryDefHandler(REFIID iid);
+
+ // State change notifications
+ void SendAdvise(UINT uCode);
+
+ // Non-in-place activation
+ virtual HRESULT OnOpen(BOOL bTryInPlace, LPMSG pMsg);
+ void ResizeOpenControl(int cx, int cy);
+ virtual CControlFrameWnd* CreateFrameWindow();
+ virtual void ResizeFrameWindow(int cx, int cy);
+ virtual void OnFrameClose();
+ virtual HRESULT OnHide();
+
+ // In-place activation
+ virtual HRESULT OnActivateInPlace(BOOL bUIActivate, LPMSG pMsg);
+ void ForwardActivationMsg(LPMSG pMsg);
+ virtual void AddFrameLevelUI();
+ virtual void RemoveFrameLevelUI();
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+
+ // Property sheet
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+ // IOleObject implementation
+ void GetUserType(LPTSTR pszUserType);
+ virtual UINT GetUserTypeNameID() = 0;
+ virtual DWORD GetMiscStatus() = 0;
+
+ // Rectangle tracker
+ void CreateTracker(BOOL bHandles, BOOL bHatching);
+ void DestroyTracker();
+
+ // Automation
+ BOOL IsInvokeAllowed(DISPID dispid);
+
+ // Ambient property interface initialization
+ COleDispatchDriver* GetAmbientDispatchDriver();
+
+ // Data members
+ const IID* m_piidPrimary; // IID for control automation
+ const IID* m_piidEvents; // IID for control events
+ DWORD m_dwVersionLoaded; // Version number of loaded state
+ COleDispatchDriver m_ambientDispDriver; // Driver for ambient properties
+ ULONG m_cEventsFrozen; // Event freeze count (>0 means frozen)
+ union
+ {
+ CControlFrameWnd* m_pWndOpenFrame; // Open frame window.
+ CRectTracker* m_pRectTracker; // Tracker for UI active control
+ };
+ CRect m_rcPos; // Control's position rectangle
+ CRect m_rcBounds; // Bounding rectangle for drawing
+ CPoint m_ptOffset; // Child window origin
+ long m_cxExtent; // Control's width in HIMETRIC units
+ long m_cyExtent; // Control's height in HIMETRIC units
+ class CReflectorWnd* m_pReflect; // Reflector window
+ UINT m_nIDTracking; // Tracking command ID or string IDS
+ UINT m_nIDLastMessage; // Last displayed message string IDS
+ unsigned m_bAutoMenuEnable : 1; // Disable menu items without handlers?
+ unsigned m_bFinalReleaseCalled : 1; // Are we handling the final Release?
+ unsigned m_bModified : 1; // "Dirty" bit.
+ unsigned m_bCountOnAmbients : 1; // Can we count on Ambients during load?
+ unsigned m_iButtonState : 3; // Which buttons are down?
+ unsigned m_iDblClkState : 3; // Which buttons involved in dbl click?
+ unsigned m_bInPlaceActive : 1; // Are we in-place active?
+ unsigned m_bUIActive : 1; // Are we UI active?
+ unsigned m_bPendingUIActivation : 1; // Are we about to become UI active?
+ unsigned m_bOpen : 1; // Are we open (non-in-place)?
+ unsigned m_bChangingExtent : 1; // Extent is currently being changed
+ unsigned m_bConvertVBX : 1; // VBX conversion in progress
+ unsigned m_bSimpleFrame : 1; // Simple frame support
+ unsigned m_bUIDead : 1; // UIDead ambient property value
+ unsigned m_bInitialized : 1; // Was IPersist*::{InitNew,Load} called?
+ unsigned m_bAutoClip : 1; // Does container automatically clip?
+ unsigned m_bMsgReflect : 1; // Does container reflect messages?
+ unsigned m_bInPlaceSiteEx : 1; // Extended in-place site?
+ unsigned m_bInPlaceSiteWndless : 1; // Windowless in-place site?
+ unsigned m_bNoRedraw : 1; // Should we skip OnPaint this time?
+ unsigned m_bOptimizedDraw : 1; // Is optimized drawing possible?
+
+ // Stock properties
+ OLE_COLOR m_clrBackColor; // BackColor
+ OLE_COLOR m_clrForeColor; // ForeColor
+ CString m_strText; // Text/Caption
+ CFontHolder m_font; // Font
+ HFONT m_hFontPrev; // Previously selected font object
+ short m_sAppearance; // Appearance
+ short m_sBorderStyle; // BorderStyle
+ BOOL m_bEnabled; // Enabled
+ long m_lReadyState; // ReadyState
+
+ // UI Active info (shared OLE menu data)
+ _AFXCTL_UIACTIVE_INFO* m_pUIActiveInfo;
+
+ // Default Handler aggregation
+ LPUNKNOWN m_pDefIUnknown;
+ _AFXCTL_ADVISE_INFO* m_pAdviseInfo;
+ LPPERSISTSTORAGE m_pDefIPersistStorage;
+ LPVIEWOBJECT m_pDefIViewObject;
+ LPOLECACHE m_pDefIOleCache;
+
+ // OLE client site interfaces
+ LPOLECLIENTSITE m_pClientSite; // Client site
+ union
+ {
+ LPOLEINPLACESITE m_pInPlaceSite; // In-place site
+ LPOLEINPLACESITEEX m_pInPlaceSiteEx;
+ LPOLEINPLACESITEWINDOWLESS m_pInPlaceSiteWndless;
+ };
+ LPOLECONTROLSITE m_pControlSite; // Control site
+ LPOLEADVISEHOLDER m_pOleAdviseHolder; // Advise holder
+ LPDATAADVISEHOLDER m_pDataAdviseHolder; // Data advise holder
+ LPSIMPLEFRAMESITE m_pSimpleFrameSite; // Simple frame site
+
+ // OLE in-place activation info
+ LPOLEINPLACEFRAME m_pInPlaceFrame;
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEUIWINDOW m_pInPlaceDoc;
+
+ // OLE data source
+ CControlDataSource* m_pDataSource;
+
+ // OLE data path load data
+ BOOL m_bDataPathPropertiesLoaded;
+ DWORD m_dwDataPathVersionToReport;
+
+// Message Maps
+protected:
+ //{{AFX_MSG(COleControl)
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnCancelMode();
+ afx_msg void OnPaint(CDC* pDC);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ //}}AFX_MSG
+
+ afx_msg LRESULT OnOcmCtlColorBtn(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorDlg(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorEdit(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorListBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorMsgBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorScrollBar(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorStatic(WPARAM wParam, LPARAM lParam);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ // IPersistStorage
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleControl, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ // IPersistStreamInit
+ BEGIN_INTERFACE_PART(PersistStreamInit, IPersistStreamInit)
+ INIT_INTERFACE_PART(COleControl, PersistStreamInit)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPSTREAM);
+ STDMETHOD(Save)(LPSTREAM, BOOL);
+ STDMETHOD(GetSizeMax)(ULARGE_INTEGER *);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistStreamInit)
+
+ // IPersistMemory
+ BEGIN_INTERFACE_PART(PersistMemory, IPersistMemory)
+ INIT_INTERFACE_PART(COleControl, PersistMemory)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPVOID, ULONG);
+ STDMETHOD(Save)(LPVOID, BOOL, ULONG);
+ STDMETHOD(GetSizeMax)(ULONG*);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistMemory)
+
+ // IPersistPropertyBag
+ BEGIN_INTERFACE_PART(PersistPropertyBag, IPersistPropertyBag)
+ INIT_INTERFACE_PART(COleControl, PersistPropertyBag)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(InitNew)();
+ STDMETHOD(Load)(LPPROPERTYBAG, LPERRORLOG);
+ STDMETHOD(Save)(LPPROPERTYBAG, BOOL, BOOL);
+ END_INTERFACE_PART(PersistPropertyBag)
+
+ // IOleObject
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleControl, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ // IViewObjectEx
+ BEGIN_INTERFACE_PART(ViewObject, IViewObjectEx)
+ INIT_INTERFACE_PART(COleControl, ViewObject)
+ STDMETHOD(Draw)(DWORD, LONG, void*, DVTARGETDEVICE*, HDC, HDC,
+ LPCRECTL, LPCRECTL, BOOL (CALLBACK*)(DWORD), DWORD);
+ STDMETHOD(GetColorSet)(DWORD, LONG, void*, DVTARGETDEVICE*,
+ HDC, LPLOGPALETTE*);
+ STDMETHOD(Freeze)(DWORD, LONG, void*, DWORD*);
+ STDMETHOD(Unfreeze)(DWORD);
+ STDMETHOD(SetAdvise)(DWORD, DWORD, LPADVISESINK);
+ STDMETHOD(GetAdvise)(DWORD*, DWORD*, LPADVISESINK*);
+ STDMETHOD(GetExtent) (DWORD, LONG, DVTARGETDEVICE*, LPSIZEL);
+ STDMETHOD(GetRect)(DWORD, LPRECTL);
+ STDMETHOD(GetViewStatus)(DWORD*);
+ STDMETHOD(QueryHitPoint)(DWORD, LPCRECT, POINT, LONG, DWORD*);
+ STDMETHOD(QueryHitRect)(DWORD, LPCRECT, LPCRECT, LONG, DWORD*);
+ STDMETHOD(GetNaturalExtent)(DWORD, LONG, DVTARGETDEVICE*, HDC,
+ DVEXTENTINFO*, LPSIZEL);
+ END_INTERFACE_PART(ViewObject)
+
+ // IDataObject
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleControl, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ // IOleInPlaceObject
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObjectWindowless)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ STDMETHOD(OnWindowMessage)(UINT msg, WPARAM wParam, LPARAM lparam,
+ LRESULT* plResult);
+ STDMETHOD(GetDropTarget)(IDropTarget **ppDropTarget);
+
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ // IOleInPlaceActiveObject
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ // IOleCache
+ BEGIN_INTERFACE_PART(OleCache, IOleCache)
+ INIT_INTERFACE_PART(COleControl, OleCache)
+ STDMETHOD(Cache)(LPFORMATETC, DWORD, LPDWORD);
+ STDMETHOD(Uncache)(DWORD);
+ STDMETHOD(EnumCache)(LPENUMSTATDATA*);
+ STDMETHOD(InitCache)(LPDATAOBJECT);
+ STDMETHOD(SetData)(LPFORMATETC, STGMEDIUM*, BOOL);
+ END_INTERFACE_PART(OleCache)
+
+ // IOleControl
+ BEGIN_INTERFACE_PART(OleControl, IOleControl)
+ INIT_INTERFACE_PART(COleControl, OleControl)
+ STDMETHOD(GetControlInfo)(LPCONTROLINFO pCI);
+ STDMETHOD(OnMnemonic)(LPMSG pMsg);
+ STDMETHOD(OnAmbientPropertyChange)(DISPID dispid);
+ STDMETHOD(FreezeEvents)(BOOL bFreeze);
+ END_INTERFACE_PART(OleControl)
+
+ // IProvideClassInfo2
+ BEGIN_INTERFACE_PART(ProvideClassInfo, IProvideClassInfo2)
+ INIT_INTERFACE_PART(COleControl, ProvideClassInfo)
+ STDMETHOD(GetClassInfo)(LPTYPEINFO* ppTypeInfo);
+ STDMETHOD(GetGUID)(DWORD dwGuidKind, GUID* pGUID);
+ END_INTERFACE_PART(ProvideClassInfo)
+
+ // ISpecifyPropertyPages
+ BEGIN_INTERFACE_PART(SpecifyPropertyPages, ISpecifyPropertyPages)
+ INIT_INTERFACE_PART(COleControl, SpecifyPropertyPages)
+ STDMETHOD(GetPages)(CAUUID*);
+ END_INTERFACE_PART(SpecifyPropertyPages)
+
+ // IPerPropertyBrowsing
+ BEGIN_INTERFACE_PART(PerPropertyBrowsing, IPerPropertyBrowsing)
+ INIT_INTERFACE_PART(COleControl, PerPropertyBrowsing)
+ STDMETHOD(GetDisplayString)(DISPID dispid, BSTR* lpbstr);
+ STDMETHOD(MapPropertyToPage)(DISPID dispid, LPCLSID lpclsid);
+ STDMETHOD(GetPredefinedStrings)(DISPID dispid,
+ CALPOLESTR* lpcaStringsOut, CADWORD* lpcaCookiesOut);
+ STDMETHOD(GetPredefinedValue)(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+ END_INTERFACE_PART(PerPropertyBrowsing)
+
+ // IPropertyNotifySink for font updates (not exposed via QueryInterface)
+ BEGIN_INTERFACE_PART(FontNotification, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COleControl, FontNotification)
+ STDMETHOD(OnChanged)(DISPID dispid);
+ STDMETHOD(OnRequestEdit)(DISPID dispid);
+ END_INTERFACE_PART(FontNotification)
+
+ // IQuickActivate
+ BEGIN_INTERFACE_PART(QuickActivate, IQuickActivate)
+ STDMETHOD(QuickActivate)(QACONTAINER *pQAContainer, QACONTROL *pqacontrol);
+ STDMETHOD(SetContentExtent)(LPSIZEL lpsizel);
+ STDMETHOD(GetContentExtent)(LPSIZEL lpsizel);
+ END_INTERFACE_PART(QuickActivate)
+
+ // IPointerInactive
+ BEGIN_INTERFACE_PART(PointerInactive, IPointerInactive)
+ STDMETHOD(GetActivationPolicy)(DWORD* pdwPolicy);
+ STDMETHOD(OnInactiveSetCursor)(LPCRECT lprcBounds, long x, long y,
+ DWORD dwMouseMsg, BOOL bSetAlways);
+ STDMETHOD(OnInactiveMouseMove)(LPCRECT lprcBounds, long x, long y,
+ DWORD dwKeyState);
+ END_INTERFACE_PART(PointerInactive)
+
+ DECLARE_INTERFACE_MAP()
+
+// Connection maps
+protected:
+ // Connection point for events
+ BEGIN_CONNECTION_PART(COleControl, EventConnPt)
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual REFIID GetIID();
+ virtual LPUNKNOWN QuerySinkInterface(LPUNKNOWN pUnkSink);
+ END_CONNECTION_PART(EventConnPt)
+
+ // Connection point for property notifications
+ BEGIN_CONNECTION_PART(COleControl, PropConnPt)
+ CONNECTION_IID(IID_IPropertyNotifySink)
+ END_CONNECTION_PART(PropConnPt)
+
+ DECLARE_CONNECTION_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Registry functions
+
+enum AFX_REG_FLAGS
+{
+ afxRegDefault = 0x0000,
+ afxRegInsertable = 0x0001,
+ afxRegApartmentThreading = 0x0002,
+};
+
+BOOL AFXAPI AfxOleRegisterTypeLib(HINSTANCE hInstance, REFGUID tlid,
+ LPCTSTR pszFileName = NULL, LPCTSTR pszHelpDir = NULL);
+
+BOOL AFXAPI AfxOleUnregisterTypeLib(REFGUID tlid, WORD wVerMajor = 0,
+ WORD wVerMinor = 0, LCID lcid = 0);
+
+BOOL AFXAPI AfxOleRegisterControlClass(HINSTANCE hInstance, REFCLSID clsid,
+ LPCTSTR pszProgID, UINT idTypeName, UINT idBitmap, int nRegFlags,
+ DWORD dwMiscStatus, REFGUID tlid, WORD wVerMajor, WORD wVerMinor);
+
+BOOL AFXAPI AfxOleUnregisterClass(REFCLSID clsid, LPCTSTR pszProgID);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName, int nRegFlags);
+
+/////////////////////////////////////////////////////////////////////////////
+// Licensing functions
+
+BOOL AFXAPI AfxVerifyLicFile(HINSTANCE hInstance, LPCTSTR pszLicFileName,
+ LPCOLESTR pszLicFileContents, UINT cch=-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// CPropExchange - Abstract base class for property exchange
+
+class CPropExchange
+{
+// Operations
+public:
+ BOOL IsLoading();
+ DWORD GetVersion();
+
+ BOOL IsAsynchronous();
+ // FALSE -> Do Sync stuff, and start async stuff if possible
+ // TRUE -> Do not do Sync stuff. Always start Async stuff
+
+ virtual BOOL ExchangeVersion(DWORD& dwVersionLoaded, DWORD dwVersionDefault,
+ BOOL bConvert);
+
+ virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
+ void* pvProp, const void* pvDefault = NULL) = 0;
+ virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
+ HGLOBAL hBlobDefault = NULL) = 0;
+ virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc,
+ LPFONTDISP pFontDispAmbient) = 0;
+ virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
+ LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault) = 0;
+
+// Implementation
+protected:
+ CPropExchange();
+ BOOL m_bLoading;
+ BOOL m_bAsync;
+ DWORD m_dwVersion;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property-exchange (PX_) helper functions
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue);
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue,
+ short sDefault);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue,
+ USHORT usDefault);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue,
+ long lDefault);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue,
+ ULONG ulDefault);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue,
+ OLE_COLOR clrDefault);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue,
+ BOOL bDefault);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
+ const CString& strDefault);
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
+ LPCTSTR lpszDefault);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue,
+ CY cyDefault);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue,
+ float floatDefault);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue,
+ double doubleDefault);
+
+BOOL AFX_CDECL PX_Blob(CPropExchange* pPX, LPCTSTR pszPropName, HGLOBAL& hBlob,
+ HGLOBAL hBlobDefault = NULL);
+
+BOOL AFX_CDECL PX_Font(CPropExchange* pPX, LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc = NULL,
+ LPFONTDISP pFontDispAmbient = NULL);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict, CPictureHolder& pictDefault);
+
+BOOL AFX_CDECL PX_IUnknown(CPropExchange* pPX, LPCTSTR pszPropName, LPUNKNOWN& pUnk,
+ REFIID iid, LPUNKNOWN pUnkDefault = NULL);
+
+BOOL AFX_CDECL PX_VBXFontConvert(CPropExchange* pPX, CFontHolder& font);
+
+#ifndef _MAC
+BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
+ CDataPathProperty& dataPathProp, LPCTSTR pszDefault = NULL);
+
+BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
+ CDataPathProperty& dataPathProp, const CString& strDefault);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Structures used by COlePropertyPage
+
+typedef struct tagAFX_PPFIELDSTATUS
+{
+ UINT nID;
+ BOOL bDirty;
+
+} AFX_PPFIELDSTATUS;
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Class
+
+class COlePropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(COlePropertyPage)
+
+// Constructors
+public:
+ COlePropertyPage(UINT idDlg, UINT idCaption);
+
+// Operations
+ LPDISPATCH* GetObjectArray(ULONG* pnObjects);
+ void SetModifiedFlag(BOOL bModified = TRUE);
+ BOOL IsModified();
+ LPPROPERTYPAGESITE GetPageSite();
+ void SetDialogResource(HGLOBAL hDialog);
+ void SetPageName(LPCTSTR lpszPageName);
+ void SetHelpInfo(LPCTSTR lpszDocString, LPCTSTR lpszHelpFile = NULL,
+ DWORD dwHelpContext = 0);
+
+ BOOL GetControlStatus(UINT nID);
+ BOOL SetControlStatus(UINT nID, BOOL bDirty);
+ void IgnoreApply(UINT nID);
+
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+ // note that this is a non-virtual override of CWnd::MessageBox()
+
+// Overridables
+ virtual void OnSetPageSite();
+ virtual void OnObjectsChanged();
+ virtual BOOL OnHelp(LPCTSTR lpszHelpDir);
+ virtual BOOL OnInitDialog();
+ virtual BOOL OnEditProperty(DISPID dispid);
+
+// Implementation
+
+ // DDP_ property get/set helper routines
+ BOOL SetPropText(LPCTSTR pszPropName, BYTE &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, BYTE* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, short &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, short* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, int &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, UINT &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, UINT* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, long &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, long* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, DWORD &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, DWORD* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, CString &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, CString* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, float &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, float* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, double &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, double* pValue);
+ BOOL SetPropCheck(LPCTSTR pszPropName, int Value);
+ BOOL GetPropCheck(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropRadio(LPCTSTR pszPropName, int Value);
+ BOOL GetPropRadio(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropIndex(LPCTSTR pszPropName, int Value);
+ BOOL GetPropIndex(LPCTSTR pszPropName, int* pValue);
+ CPtrArray m_arrayDDP; // pending DDP data
+
+ // Destructors
+ ~COlePropertyPage();
+
+protected:
+ LRESULT WindowProc(UINT msg, WPARAM wParam, LPARAM lParam);
+ BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ BOOL PreTranslateMessage(LPMSG lpMsg);
+ virtual void OnFinalRelease();
+ void CleanupObjectArray();
+ static BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam);
+ static BOOL CALLBACK EnumControls(HWND hWnd, LPARAM lParam);
+
+private:
+ BOOL m_bDirty;
+ UINT m_idDlg;
+ UINT m_idCaption;
+ CString m_strPageName;
+ SIZE m_sizePage;
+ CString m_strDocString;
+ CString m_strHelpFile;
+ DWORD m_dwHelpContext;
+ LPPROPERTYPAGESITE m_pPageSite;
+
+ LPDISPATCH* m_ppDisp; // Array of IDispatch pointers, used to
+ // access the properties of each control
+
+ LPDWORD m_pAdvisors; // Array of connection tokens used by
+ // IConnecitonPoint::Advise/UnAdvise.
+
+ BOOL m_bPropsChanged; // IPropertyNotifySink::OnChanged has been
+ // called, but not acted upon yet.
+
+ ULONG m_nObjects; // Objects in m_ppDisp, m_ppDataObj, m_pAdvisors
+
+ BOOL m_bInitializing; // TRUE if the contents of the fields of
+ // the dialog box are being initialized
+
+ int m_nControls; // Number of fields on this property page
+
+ AFX_PPFIELDSTATUS* m_pStatus; // Array containing information on
+ // which fields are dirty
+
+ CDWordArray m_IDArray; // Array containing information on which
+ // controls to ignore when deciding if
+ // the apply button is to be enabled
+
+ HGLOBAL m_hDialog; // Handle of the dialog resource
+
+#ifdef _DEBUG
+ BOOL m_bNonStandardSize;
+#endif
+
+protected:
+ // Generated message map functions
+ //{{AFX_MSG(COlePropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PropertyPage, IPropertyPage2)
+ INIT_INTERFACE_PART(COlePropertyPage, PropertyPage)
+ STDMETHOD(SetPageSite)(LPPROPERTYPAGESITE);
+ STDMETHOD(Activate)(HWND, LPCRECT, BOOL);
+ STDMETHOD(Deactivate)();
+ STDMETHOD(GetPageInfo)(LPPROPPAGEINFO);
+ STDMETHOD(SetObjects)(ULONG, LPUNKNOWN*);
+ STDMETHOD(Show)(UINT);
+ STDMETHOD(Move)(LPCRECT);
+ STDMETHOD(IsPageDirty)();
+ STDMETHOD(Apply)();
+ STDMETHOD(Help)(LPCOLESTR);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(EditProperty)(DISPID);
+ END_INTERFACE_PART(PropertyPage)
+
+ BEGIN_INTERFACE_PART(PropNotifySink, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COlePropertyPage, PropNotifySink)
+ STDMETHOD(OnRequestEdit)(DISPID);
+ STDMETHOD(OnChanged)(DISPID);
+ END_INTERFACE_PART(PropNotifySink)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Data Exchange routines
+
+// simple text operations
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, BYTE& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, short& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, UINT& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, long& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, DWORD& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, float& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, double& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Check(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Radio(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_PostProcessing(CDataExchange *pDX);
+
+////////////////////////////////////////////////////////////////////////////
+// AfxOleTypeMatchGuid - Tests whether a given TYPEDESC matches a type with a
+// given GUID, when all aliases have been expanded.
+
+BOOL AFXAPI AfxOleTypeMatchGuid(LPTYPEINFO pTypeInfo,
+ TYPEDESC* pTypeDesc, REFGUID guidType, ULONG cIndirectionLevels);
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCTL_INLINE inline
+#include <afxctl.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXCTL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxctl.inl b/public/sdk/inc/mfc42/afxctl.inl
new file mode 100644
index 000000000..85927c3d5
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.inl
@@ -0,0 +1,117 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCTL.H
+
+#ifdef _AFXCTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// COleControl inlines
+_AFXCTL_INLINE BOOL COleControl::IsOptimizedDraw()
+ { return m_bOptimizedDraw; }
+_AFXCTL_INLINE BOOL COleControl::IsConvertingVBX()
+ { return m_bConvertVBX; }
+_AFXCTL_INLINE void COleControl::FireKeyDown(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYDOWN, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyUp(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYUP, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyPress(USHORT* pnChar)
+ { FireEvent(DISPID_KEYPRESS, EVENT_PARAM(VTS_PI2), pnChar); }
+_AFXCTL_INLINE void COleControl::FireMouseDown(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEDOWN,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseUp(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEUP,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseMove(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEMOVE,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireClick()
+ { FireEvent(DISPID_CLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE void COleControl::FireDblClick()
+ { FireEvent(DISPID_DBLCLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE void COleControl::FireReadyStateChange()
+ { FireEvent(DISPID_READYSTATECHANGE, EVENT_PARAM(VTS_I4), m_lReadyState); }
+_AFXCTL_INLINE void COleControl::InternalSetReadyState(long lNewReadyState)
+ { ASSERT((lNewReadyState >=0) && (lNewReadyState <= READYSTATE_COMPLETE));
+ if (m_lReadyState != lNewReadyState)
+ {m_lReadyState = lNewReadyState; FireReadyStateChange(); } }
+_AFXCTL_INLINE BOOL COleControl::ExchangeVersion(
+ CPropExchange* pPX, DWORD dwVersionDefault, BOOL bConvert)
+ { return pPX->ExchangeVersion(m_dwVersionLoaded, dwVersionDefault, bConvert); }
+_AFXCTL_INLINE DWORD COleControl::GetStockEventMask() const
+ { return *GetEventMap()->lpStockEventMask; }
+_AFXCTL_INLINE DWORD COleControl::GetStockPropMask() const
+ { return *GetDispatchMap()->lpStockPropMask; }
+_AFXCTL_INLINE void COleControl::RequestAsynchronousExchange(DWORD dwVersion)
+ { m_bDataPathPropertiesLoaded = FALSE; m_dwDataPathVersionToReport = dwVersion; }
+
+// CPropExchange inlines
+_AFXCTL_INLINE CPropExchange::CPropExchange() : m_dwVersion(0), m_bAsync(FALSE)
+ { }
+_AFXCTL_INLINE BOOL CPropExchange::IsLoading()
+ { return m_bLoading; }
+_AFXCTL_INLINE DWORD CPropExchange::GetVersion()
+ { return m_dwVersion; }
+_AFXCTL_INLINE BOOL CPropExchange::IsAsynchronous()
+ { return m_bAsync; }
+
+#ifndef _MAC
+// CDataPathProperty inlines
+_AFXCTL_INLINE CDataPathProperty::CDataPathProperty(COleControl* pControl)
+ : m_pControl(pControl) {}
+_AFXCTL_INLINE CDataPathProperty::CDataPathProperty(LPCTSTR lpszPath, COleControl* pControl)
+ : m_pControl(pControl), m_strPath(lpszPath) {}
+_AFXCTL_INLINE void CDataPathProperty::SetPath(LPCTSTR lpszPath)
+ { ASSERT_VALID(this); m_strPath = lpszPath; }
+_AFXCTL_INLINE CString CDataPathProperty::GetPath() const
+ { ASSERT_VALID(this); return m_strPath; }
+_AFXCTL_INLINE COleControl* CDataPathProperty::GetControl()
+ { ASSERT_VALID(this); return m_pControl; }
+_AFXCTL_INLINE void CDataPathProperty::SetControl(COleControl* pControl)
+ { ASSERT_VALID(this); m_pControl=pControl; }
+
+// CCachedDataPathProperty inlines
+_AFXCTL_INLINE CCachedDataPathProperty::CCachedDataPathProperty(COleControl* pControl)
+ : CDataPathProperty(pControl) {}
+_AFXCTL_INLINE CCachedDataPathProperty::CCachedDataPathProperty(LPCTSTR lpszPath, COleControl* pControl)
+ : CDataPathProperty(lpszPath, pControl) {}
+#endif // !_MAC
+
+// inline DDP_ routines
+_AFXCTL_INLINE void AFXAPI DDP_LBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+
+#endif //_AFXCTL_INLINE
diff --git a/public/sdk/inc/mfc42/afxctl.rc b/public/sdk/inc/mfc42/afxctl.rc
new file mode 100644
index 000000000..0173b2420
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Font:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Font St&yle:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Size:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effects",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Stri&keout",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Underline",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Sample",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System &Color:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Browse...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Clear",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Preview:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Application Workspace"
+ AFX_IDS_COLOR_WNDBACKGND "Window Background"
+ AFX_IDS_COLOR_WNDTEXT "Window Text"
+ AFX_IDS_COLOR_MENUBAR "Menu Bar"
+ AFX_IDS_COLOR_MENUTEXT "Menu Text"
+ AFX_IDS_COLOR_ACTIVEBAR "Active Title Bar"
+ AFX_IDS_COLOR_INACTIVEBAR "Inactive Title Bar"
+ AFX_IDS_COLOR_ACTIVETEXT "Active Title Bar Text"
+ AFX_IDS_COLOR_INACTIVETEXT "Inactive Title Bar Text"
+ AFX_IDS_COLOR_ACTIVEBORDER "Active Border"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inactive Border"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Window Frame"
+ AFX_IDS_COLOR_SCROLLBARS "Scroll Bars"
+ AFX_IDS_COLOR_BTNFACE "Button Face"
+ AFX_IDS_COLOR_BTNSHADOW "Button Shadow"
+ AFX_IDS_COLOR_BTNTEXT "Button Text"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Button Highlight"
+ AFX_IDS_COLOR_DISABLEDTEXT "Disabled Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Highlight"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Highlighted Text"
+ AFX_IDS_REGULAR "Regular"
+ AFX_IDS_BOLD "Bold"
+ AFX_IDS_ITALIC "Italic"
+ AFX_IDS_BOLDITALIC "Bold Italic"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Font)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Picture - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "None"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icon"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Color Property Page"
+ AFX_IDS_COLOR_PPG_CAPTION "Colors"
+ AFX_IDS_FONT_PPG "Font Property Page"
+ AFX_IDS_FONT_PPG_CAPTION "Fonts"
+ AFX_IDS_PICTURE_PPG "Picture Property Page"
+ AFX_IDS_PICTURE_PPG_CAPTION "Pictures"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Edit"
+ AFX_IDS_VERB_PROPERTIES "&Properties..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Unable to open the picture file %1. The file may not exist, or may not be readable."
+ AFX_IDP_PICTURECANTLOAD "Unable to load the picture file %1. The file may have an invalid format."
+ AFX_IDP_PICTURETOOLARGE "Unable to load the picture file %1. The file is too large to fit in memory."
+ AFX_IDP_PICTUREREADFAILED
+ "Unable to load the picture file %1. Unexplained read failure."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Browse Pictures"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Illegal function call"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Out of memory"
+ AFX_IDP_E_DIVISIONBYZERO "Division by zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Out of string space"
+ AFX_IDP_E_OUTOFSTACKSPACE "Out of stack space"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Bad file name or number"
+ AFX_IDP_E_FILENOTFOUND "File not found"
+ AFX_IDP_E_BADFILEMODE "Bad file mode"
+ AFX_IDP_E_FILEALREADYOPEN "File already open"
+ AFX_IDP_E_DEVICEIOERROR "Device I/O error"
+ AFX_IDP_E_FILEALREADYEXISTS "File already exists"
+ AFX_IDP_E_BADRECORDLENGTH "Bad record length"
+ AFX_IDP_E_DISKFULL "Disk full"
+ AFX_IDP_E_BADRECORDNUMBER "Bad record number"
+ AFX_IDP_E_BADFILENAME "Bad file name"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Too many files"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Device unavailable"
+ AFX_IDP_E_PERMISSIONDENIED "Permission denied"
+ AFX_IDP_E_DISKNOTREADY "Disk not ready"
+ AFX_IDP_E_PATHFILEACCESSERROR "Path/File access error"
+ AFX_IDP_E_PATHNOTFOUND "Path not found"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Invalid pattern string"
+ AFX_IDP_E_INVALIDUSEOFNULL "Invalid use of null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Invalid file format"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Invalid property value"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Invalid array index"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Property cannot be set at run time"
+ AFX_IDP_E_SETNOTSUPPORTED "Property is read-only"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Must specify array index when using property array"
+ AFX_IDP_E_SETNOTPERMITTED "Property cannot be set on this control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Property cannot be read at run time"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Property is write-only"
+ AFX_IDP_E_PROPERTYNOTFOUND "Property not found"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Invalid clipboard format"
+ AFX_IDP_E_INVALIDPICTURE "Invalid picture"
+ AFX_IDP_E_PRINTERERROR "Printer error"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Cannot create temporary file necessary to save"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Search text not found"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Replacement text too long"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/afxcview.h b/public/sdk/inc/mfc42/afxcview.h
new file mode 100644
index 000000000..a53a580b1
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcview.h
@@ -0,0 +1,135 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCVIEW_H__
+#define __AFXCVIEW_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows common control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef __AFXCMN_H__
+ #include <afxcmn.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CListView;// list control view
+ class CTreeView;// tree control view
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CListView
+
+class CListView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CListView)
+
+// Construction
+public:
+ CListView();
+
+// Attributes
+public:
+ CListCtrl& GetListCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CListView)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeView
+
+class CTreeView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CTreeView)
+
+// Construction
+public:
+ CTreeView();
+
+// Attributes
+public:
+ CTreeCtrl& GetTreeCtrl() const;
+
+protected:
+ void RemoveImageList(int nImageList);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CTreeView)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCVIEW_INLINE inline
+#include <afxcview.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCVIEW_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcview.inl b/public/sdk/inc/mfc42/afxcview.inl
new file mode 100644
index 000000000..40274d4c0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcview.inl
@@ -0,0 +1,29 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCVIEW.H
+
+#ifdef _AFXCVIEW_INLINE
+
+// CListView
+_AFXCVIEW_INLINE CListView::CListView() : CCtrlView(WC_LISTVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CListCtrl& CListView::GetListCtrl() const
+ { return *(CListCtrl*)this; }
+_AFXCVIEW_INLINE CTreeView::CTreeView() : CCtrlView(WC_TREEVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CTreeCtrl& CTreeView::GetTreeCtrl() const
+ { return *(CTreeCtrl*)this; }
+
+#endif //_AFXCVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdao.h b/public/sdk/inc/mfc42/afxdao.h
new file mode 100644
index 000000000..7475c9f13
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdao.h
@@ -0,0 +1,1325 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDAO_H
+#define __AFXDAO_H
+
+#ifdef _AFX_NO_DAO_SUPPORT
+ #error DAO Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h> // Must include this before dao headers
+#endif
+#ifndef _DBDAOINT_H_
+ #include <dbdaoint.h>
+#endif
+#ifndef _DAOGETRW_H_
+ #include <daogetrw.h>
+#endif
+#ifndef _DBDAOID_H_
+ #include <dbdaoid.h>
+#endif
+#ifndef _DBDAOERR_H_
+ #include <dbdaoerr.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header with ODBC database classes
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h> // for CFormView
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco42d.lib")
+ #pragma comment(lib, "mfcd42d.lib")
+ #else
+ #pragma comment(lib, "mfco42ud.lib")
+ #pragma comment(lib, "mfcd42ud.lib")
+ #endif
+ #endif
+
+#endif
+
+#pragma comment(lib, "daouuid.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+////////////////////////////////////////////////////////////////////////
+// AFXDAO - MFC Database support using DAO
+
+// Classes declared in this file
+
+ // CException
+ class CDaoException; // DAO error/exception handling
+
+ // CObject
+ class CDaoRecordView;
+ class CDaoWorkspace; // DAO engine/transaction/security manager
+ class CDaoDatabase; // DAO database manager
+ class CDaoRecordset; // DAO result set manager
+ class CDaoTableDef; // DAO base table manager
+ class CDaoQueryDef; // DAO query manager
+
+ // Non-CObject classes
+ class CDaoFieldExchange;
+ struct CDaoFieldCache;
+ struct CDaoErrorInfo;
+ struct CDaoWorkspaceInfo;
+ struct CDaoDatabaseInfo;
+ struct CDaoTableDefInfo;
+ struct CDaoFieldInfo;
+ struct CDaoIndexInfo;
+ struct CDaoRelationInfo;
+ struct CDaoQueryDefInfo;
+ struct CDaoParameterInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLL support
+
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+////////////////////////////////////////////////////////////////////////
+// Data caching structures
+struct CDaoFieldCache
+{
+ void* m_pvData; // Pointer to cached data of any supported type.
+ BYTE m_nStatus; // (NULL) status cache.
+ BYTE m_nDataType; // Type of data cached.
+};
+
+////////////////////////////////////////////////////////////////////////
+// Info structures
+
+struct CDaoErrorInfo
+{
+// Attributes
+ long m_lErrorCode;
+ CString m_strSource;
+ CString m_strDescription;
+ CString m_strHelpFile;
+ long m_lHelpContext;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoWorkspaceInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strUserName; // Secondary
+ BOOL m_bIsolateODBCTrans; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoDatabaseInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ BOOL m_bTransactions; // Primary
+ CString m_strVersion; // Secondary
+ long m_lCollatingOrder; // Secondary
+ short m_nQueryTimeout; // Secondary
+ CString m_strConnect; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoTableDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ long m_lAttributes; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ CString m_strSrcTableName; // Secondary
+ CString m_strConnect; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ long m_lRecordCount; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ long m_lSize; // Primary
+ long m_lAttributes; // Primary
+ short m_nOrdinalPosition; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bAllowZeroLength; // Secondary
+ long m_lCollatingOrder; // Secondary
+ CString m_strForeignName; // Secondary
+ CString m_strSourceField; // Secondary
+ CString m_strSourceTable; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ CString m_strDefaultValue; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bDescending; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexInfo
+{
+// Constructors
+ CDaoIndexInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CDaoIndexFieldInfo* m_pFieldInfos; // Primary
+ short m_nFields; // Primary
+ BOOL m_bPrimary; // Secondary
+ BOOL m_bUnique; // Secondary
+ BOOL m_bClustered; // Secondary
+ BOOL m_bIgnoreNulls; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bForeign; // Secondary
+ long m_lDistinctCount; // All
+
+// Implementation
+ virtual ~CDaoIndexInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strForeignName; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationInfo
+{
+// Constructor
+ CDaoRelationInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CString m_strTable; // Primary
+ CString m_strForeignTable; // Primary
+ long m_lAttributes; // Secondary
+ CDaoRelationFieldInfo* m_pFieldInfos; // Secondary
+ short m_nFields; // Secondary
+
+// Implementation
+ virtual ~CDaoRelationInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoQueryDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ BOOL m_bUpdatable; // Secondary
+ BOOL m_bReturnsRecords; // Secondary
+ CString m_strSQL; // All
+ CString m_strConnect; // All
+ short m_nODBCTimeout; // See readme
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoParameterInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleVariant m_varValue; // Secondary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+////////////////////////////////////////////////////////////////////////
+// DAO Helpers
+//
+
+// Flags for getting and/or setting object properties
+#define AFX_DAO_PRIMARY_INFO 0x00000001 // Get only primary
+#define AFX_DAO_SECONDARY_INFO 0x00000002 // Get primary & secondary
+#define AFX_DAO_ALL_INFO 0x00000004 // Get All info
+
+// Jet engine TRUE/FALSE definitions
+#define AFX_DAO_TRUE (-1L)
+#define AFX_DAO_FALSE 0
+
+// Set CDaoRecordset::Open option to use m_nDefaultType
+#define AFX_DAO_USE_DEFAULT_TYPE (-1L)
+
+// Flags used for Move/Find
+#define AFX_DAO_NEXT (+1L)
+#define AFX_DAO_PREV (-1L)
+#define AFX_DAO_FIRST LONG_MIN
+#define AFX_DAO_LAST LONG_MAX
+
+// Default sizes for DFX function PreAlloc sizes
+#define AFX_DAO_TEXT_DEFAULT_SIZE 255
+#define AFX_DAO_BINARY_DEFAULT_SIZE 2048
+#define AFX_DAO_LONGBINARY_DEFAULT_SIZE 32768
+
+// Flag used for DFX functions dwBindOptions bitmask
+#define AFX_DAO_ENABLE_FIELD_CACHE 0x01
+#define AFX_DAO_DISABLE_FIELD_CACHE 0
+#define AFX_DAO_CACHE_BY_VALUE 0x80 // MFC Internal
+
+// Field Flags, used to indicate status of fields
+#define AFX_DAO_FIELD_FLAG_DIRTY 0x01
+#define AFX_DAO_FIELD_FLAG_NULL 0x02
+#define AFX_DAO_FIELD_FLAG_NULLABLE_KNOWN 0x04
+#define AFX_DAO_FIELD_FLAG_NULLABLE 0x08
+
+// Extended error codes
+#define NO_AFX_DAO_ERROR 0
+#define AFX_DAO_ERROR_MIN 2000
+#define AFX_DAO_ERROR_ENGINE_INITIALIZATION AFX_DAO_ERROR_MIN + 0
+#define AFX_DAO_ERROR_DFX_BIND AFX_DAO_ERROR_MIN + 1
+#define AFX_DAO_ERROR_OBJECT_NOT_OPEN AFX_DAO_ERROR_MIN + 2
+#define AFX_DAO_ERROR_MAX AFX_DAO_ERROR_MIN + 2
+
+// Object status flags
+#define AFX_DAO_IMPLICIT_WS 0x01
+#define AFX_DAO_IMPLICIT_DB 0x02
+#define AFX_DAO_IMPLICIT_QD 0x04
+#define AFX_DAO_IMPLICIT_TD 0x08
+#define AFX_DAO_IMPLICIT_CLOSE 0x40
+#define AFX_DAO_DEFAULT_WS 0x80
+
+// CDaoRecordView status flags
+#define AFX_DAOVIEW_SCROLL_NEXT 0x01
+#define AFX_DAOVIEW_SCROLL_LAST 0x02
+#define AFX_DAOVIEW_SCROLL_BACKWARD 0x04
+
+// Logging helpers
+void AFXAPI AfxDaoCheck(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine, int nError = NO_AFX_DAO_ERROR,
+ BOOL bMemOnly = FALSE);
+
+#ifdef _DEBUG
+void AFXAPI AfxDaoTrace(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine);
+#endif
+
+#ifdef _DEBUG
+#define DAO_CHECK(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) AfxDaoTrace(f, #f, THIS_FILE, __LINE__)
+#else
+#define DAO_CHECK(f) AfxDaoCheck(f, NULL, NULL, 0)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, NULL, NULL, 0, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, NULL, NULL, 0, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) f
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoFieldExchange - for field exchange
+class CDaoFieldExchange
+{
+// Attributes
+public:
+ enum DFX_Operation
+ {
+ AddToParameterList, // builds PARAMETERS clause
+ AddToSelectList, // builds SELECT clause
+ BindField, // sets up binding structure
+ BindParam, // sets parameter values
+ Fixup, // sets NULL status
+ AllocCache, // allocates cache used for dirty check
+ StoreField, // saves current record to cache
+ LoadField, // restores cached data to member vars
+ FreeCache, // frees cache
+ SetFieldNull, // sets field status & value to NULL
+ MarkForAddNew, // marks fields dirty if not PSEUDO NULL
+ MarkForEdit, // marks fields dirty if don't match cache
+ SetDirtyField, // sets field values marked as dirty
+#ifdef _DEBUG
+ DumpField,
+#endif
+ MaxDFXOperation, // dummy operation type for input checking
+ };
+
+ UINT m_nOperation; // type of exchange operation
+ CDaoRecordset* m_prs; // recordset handle
+
+// Operations
+public:
+ enum FieldType
+ {
+ none,
+ outputColumn,
+ param,
+ };
+
+ void SetFieldType(UINT nFieldType);
+ BOOL IsValidOperation();
+
+// Implementation
+public:
+ CDaoFieldExchange(UINT nOperation, CDaoRecordset* prs,
+ void* pvField = NULL);
+
+ void Default(LPCTSTR lpszName, void* pv, DWORD dwFieldType,
+ DWORD dwBindOptions = 0);
+
+ static void PASCAL AppendParamType(CString& strParamList, DWORD dwParamType);
+ static CDaoFieldCache* PASCAL GetCacheValue(CDaoRecordset* prs, void* pv);
+ static void PASCAL SetNullValue(void* pv, DWORD dwDataType);
+ static BOOL PASCAL IsNullValue(void* pv, DWORD dwDataType);
+ static void PASCAL AllocCacheValue(CDaoFieldCache*& pCache, DWORD dwDataType);
+ static void PASCAL DeleteCacheValue(CDaoFieldCache* pCache, DWORD dwDataType);
+ static void PASCAL CopyValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static BOOL PASCAL CompareValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static void PASCAL FillVariant(void* pvValue, DWORD dwDataType, COleVariant** ppVar);
+
+ // Current type of field
+ UINT m_nFieldType;
+ void* m_pvField;
+ UINT m_nField;
+ UINT m_nParam;
+ UINT m_nFieldFound;
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// variable length data
+void AFXAPI DFX_Text(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CString& value, int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
+ DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Binary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CByteArray& value, int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
+ DWORD dwBindOptions = 0);
+void AFXAPI DFX_LongBinary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CLongBinary& value, DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
+ DWORD dwBndOptions = 0);
+
+//fixed length data
+void AFXAPI DFX_Bool(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BOOL& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Byte(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BYTE& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Short(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ short& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Long(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ long& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Currency(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleCurrency& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Single(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ float& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Double(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ double& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_DateTime(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleDateTime& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+
+//////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BOOL& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, short& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleCurrency& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleDateTime& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+
+////////////////////////////////////////////////////////////////////////
+// CDaoWorkspace - a DAO Workspace
+
+class CDaoWorkspace : public CObject
+{
+ DECLARE_DYNAMIC(CDaoWorkspace)
+
+// Constructors
+public:
+ CDaoWorkspace();
+
+ virtual void Create(LPCTSTR lpszName, LPCTSTR lpszUserName,
+ LPCTSTR lpszPassword);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ DAOWorkspace* m_pDAOWorkspace;
+
+ static CString PASCAL GetVersion();
+ static CString PASCAL GetIniPath();
+ static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
+ static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
+ static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
+ static short PASCAL GetLoginTimeout();
+ static void PASCAL SetLoginTimeout(short nSeconds);
+
+ CString GetName();
+ CString GetUserName();
+ void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
+ BOOL GetIsolateODBCTrans();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ void BeginTrans();
+ void CommitTrans();
+ void Rollback();
+
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale = dbLangGeneral,
+ int nOptions = 0);
+ // Password parameter added late in dev cycle, new interface req'd
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale, int nOptions,
+ LPCTSTR lpszPassword);
+ static void PASCAL RepairDatabase(LPCTSTR lpszName);
+
+ static void PASCAL Idle(int nAction = dbFreeLocks);
+
+ short GetWorkspaceCount();
+ void GetWorkspaceInfo(int nIndex, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetWorkspaceInfo(LPCTSTR lpszName, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetDatabaseCount();
+ void GetDatabaseInfo(int nIndex, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetDatabaseInfo(LPCTSTR lpszName, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoWorkspace();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOWorkspaces* m_pDAOWorkspaces;
+ DAODatabases* m_pDAODatabases;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapDatabases; // Map of all Open CDaoDatabases
+ BOOL IsNew() const;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ static void AFX_CDECL InitializeEngine();
+
+ void InitWorkspacesCollection();
+ void FillWorkspaceInfo(DAOWorkspace* pDAOWorkspace,
+ CDaoWorkspaceInfo& wsinfo, DWORD dwOptions);
+
+ void InitDatabasesCollection();
+ void FillDatabaseInfo(DAODatabase* pDAODatabase,
+ CDaoDatabaseInfo& dbinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+////////////////////////////////////////////////////////////////////////
+// CDaoException - DAO error trapping mechanism
+class CDaoException : public CException
+{
+ DECLARE_DYNAMIC(CDaoException)
+
+// Constructors
+public:
+ CDaoException();
+
+// Attributes
+public:
+ CDaoErrorInfo* m_pErrorInfo;
+
+ SCODE m_scode;
+ int m_nAfxDaoError; // DAO class extended error code
+
+// Operations
+public:
+ short GetErrorCount();
+ void GetErrorInfo(int nIndex);
+
+// Implementation
+public:
+ virtual ~CDaoException();
+
+ DAOError* m_pDAOError;
+ DAOErrors* m_pDAOErrors;
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+protected:
+ void InitErrorsCollection();
+ void FillErrorInfo();
+};
+
+void AFXAPI AfxThrowDaoException(int nAfxDaoError = NO_AFX_DAO_ERROR,
+ SCODE scode = S_OK);
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoDatabase - a DAO Database
+
+class CDaoDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDaoDatabase)
+
+// Constructors
+public:
+ CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
+
+ virtual void Create(LPCTSTR lpszName,
+ LPCTSTR lpszLocale = dbLangGeneral, int dwOptions = 0);
+
+ virtual void Open(LPCTSTR lpszName, BOOL bExclusive = FALSE,
+ BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T(""));
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoWorkspace* m_pWorkspace;
+ DAODatabase* m_pDAODatabase;
+
+ BOOL IsOpen() const;
+
+ BOOL CanUpdate();
+ BOOL CanTransact();
+
+ CString GetName();
+ CString GetConnect();
+
+ CString GetVersion();
+ short GetQueryTimeout();
+ void SetQueryTimeout(short nSeconds);
+ long GetRecordsAffected();
+
+// Operations
+public:
+ void Execute(LPCTSTR lpszSQL, int nOptions = dbFailOnError);
+
+ void DeleteTableDef(LPCTSTR lpszName);
+ void DeleteQueryDef(LPCTSTR lpszName);
+
+ void CreateRelation(LPCTSTR lpszName, LPCTSTR lpszTable,
+ LPCTSTR lpszForeignTable, long lAttributes,
+ LPCTSTR lpszField, LPCTSTR lpszForeignField);
+ void CreateRelation(CDaoRelationInfo& relinfo);
+ void DeleteRelation(LPCTSTR lpszName);
+
+ short GetTableDefCount();
+ void GetTableDefInfo(int nIndex, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetTableDefInfo(LPCTSTR lpszName, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetRelationCount();
+ void GetRelationInfo(int nIndex, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetRelationInfo(LPCTSTR lpszName, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetQueryDefCount();
+ void GetQueryDefInfo(int nIndex, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetQueryDefInfo(LPCTSTR lpszName, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOTableDefs* m_pDAOTableDefs;
+ DAORelations* m_pDAORelations;
+ DAOQueryDefs* m_pDAOQueryDefs;
+ DAORecordsets* m_pDAORecordsets;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapTableDefs; // Map of all Open CDaoTableDefs
+ CMapPtrToPtr m_mapQueryDefs; // Map of all Open CDaoQueryDefs
+ CMapPtrToPtr m_mapRecordsets; // Map of all Open CDaoRecordsets
+
+protected:
+ BOOL m_bOpen;
+
+ void InitWorkspace();
+ void InitTableDefsCollection();
+ void FillTableDefInfo(DAOTableDef* pDAOTableDef,
+ CDaoTableDefInfo& tabledefinfo, DWORD dwOptions);
+ void InitRelationsCollection();
+ void FillRelationInfo(DAORelation* pDAORelation,
+ CDaoRelationInfo& relinfo, DWORD dwOptions);
+ void InitQueryDefsCollection();
+ void FillQueryDefInfo(DAOQueryDef* pDAOQueryDef,
+ CDaoQueryDefInfo& querydefinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoTableDef - a DAO TableDef
+
+class CDaoTableDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoTableDef)
+
+// Constructors
+public:
+ CDaoTableDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName, long lAttributes = 0,
+ LPCTSTR lpszSrcTable = NULL, LPCTSTR lpszConnect = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOTableDef* m_pDAOTableDef;
+
+ BOOL IsOpen() const;
+ BOOL CanUpdate();
+
+ void SetName(LPCTSTR lpszName);
+ CString GetName();
+ void SetSourceTableName(LPCTSTR lpszSrcTableName);
+ CString GetSourceTableName();
+ void SetConnect(LPCTSTR lpszConnect);
+ CString GetConnect();
+ void SetAttributes(long lAttributes);
+ long GetAttributes();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ void SetValidationRule(LPCTSTR lpszValidationRule);
+ CString GetValidationRule();
+ void SetValidationText(LPCTSTR lpszValidationText);
+ CString GetValidationText();
+ long GetRecordCount();
+
+// Overridables
+public:
+
+// Operations
+public:
+ void CreateField(LPCTSTR lpszName, short nType, long lSize,
+ long lAttributes = 0);
+ void CreateField(CDaoFieldInfo& fieldinfo);
+ void DeleteField(LPCTSTR lpszName);
+ void DeleteField(int nIndex);
+
+ void CreateIndex(CDaoIndexInfo& indexinfo);
+ void DeleteIndex(LPCTSTR lpszName);
+ void DeleteIndex(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ void RefreshLink();
+
+// Implementation
+public:
+ ~CDaoTableDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoQueryDef - a DAO QueryDef
+
+class CDaoQueryDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoQueryDef)
+
+// Constructors
+public:
+ CDaoQueryDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName = NULL,
+ LPCTSTR lpszSQL = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOQueryDef* m_pDAOQueryDef;
+
+ BOOL CanUpdate();
+
+ CString GetName();
+ void SetName(LPCTSTR lpszName);
+ CString GetSQL();
+ void SetSQL(LPCTSTR lpszSQL);
+ short GetType();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ CString GetConnect();
+ void SetConnect(LPCTSTR lpszConnect);
+ short GetODBCTimeout();
+ void SetODBCTimeout(short nODBCTimeout);
+ BOOL GetReturnsRecords();
+ void SetReturnsRecords(BOOL bReturnsRecords);
+ long GetRecordsAffected();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ virtual void Execute(int nOptions = dbFailOnError);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetParameterCount();
+ void GetParameterInfo(int nIndex, CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetParameterInfo(LPCTSTR lpszName,
+ CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ ~CDaoQueryDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOParameters* m_pDAOParameters;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitParametersCollection();
+ void FillParameterInfo(DAOParameter* pDAOParameter,
+ CDaoParameterInfo& paraminfo, DWORD dwInfoOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoRecordset - the result of a query or base table browse
+
+class CDaoRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CDaoRecordset)
+
+// Constructor
+public:
+ CDaoRecordset(CDaoDatabase* pDatabase = NULL);
+
+ virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, int nOptions = 0);
+ virtual void Open(CDaoQueryDef* pQueryDef,
+ int nOpenType = dbOpenDynaset, int nOptions = 0);
+ virtual void Open(CDaoTableDef* pTableDef,
+ int nOpenType = dbOpenTable, int nOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase; // Source database for this result set
+ DAORecordset* m_pDAORecordset;
+
+ CString m_strFilter; // Filter string used when constructing SQL
+ CString m_strSort; // Sort string used when constructing SQL
+
+ int m_nFields;
+ int m_nParams;
+
+ BOOL m_bCheckCacheForDirtyFields; // Switch for dirty field checking.
+
+ BOOL CanUpdate() const;
+ BOOL CanAppend() const;
+ BOOL CanScroll() const;
+ BOOL CanRestart();
+ BOOL CanTransact();
+ BOOL CanBookmark();
+
+ BOOL IsOpen() const;
+ BOOL IsBOF();
+ BOOL IsEOF();
+ BOOL IsDeleted() const;
+
+ BOOL IsFieldDirty(void* pv);
+ BOOL IsFieldNull(void* pv);
+ BOOL IsFieldNullable(void* pv);
+
+ CString GetName();
+ short GetType();
+ short GetEditMode();
+ CString GetSQL() const;
+
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ COleVariant GetLastModifiedBookmark();
+ CString GetValidationRule();
+ CString GetValidationText();
+ CString GetCurrentIndex();
+ void SetCurrentIndex(LPCTSTR lpszIndex);
+
+ long GetRecordCount();
+
+// Operations
+public:
+ // Cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ BOOL FindNext(LPCTSTR lpszFilter);
+ BOOL FindPrev(LPCTSTR lpszFilter);
+ BOOL FindFirst(LPCTSTR lpszFilter);
+ BOOL FindLast(LPCTSTR lpszFilter);
+ virtual BOOL Find(long lFindType, LPCTSTR lpszFilter);
+
+ COleVariant GetBookmark();
+ void SetBookmark(COleVariant varBookmark);
+ long GetAbsolutePosition();
+ void SetAbsolutePosition(long lPosition);
+ float GetPercentPosition();
+ void SetPercentPosition(float fPosition);
+
+ // seek allowed on recordset opened as tables (max keys = 13)
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKey1,
+ COleVariant* pKey2 = NULL, COleVariant* pKey3 = NULL);
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKeyArray, WORD nKeys);
+
+ // edit buffer operations
+ virtual void AddNew();
+ virtual void Edit();
+ virtual void Update();
+ virtual void Delete();
+ virtual void CancelUpdate();
+
+ // field operations
+ virtual void GetFieldValue(LPCTSTR lpszName, COleVariant& varValue);
+ virtual void GetFieldValue(int nIndex, COleVariant& varValue);
+ virtual void SetFieldValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetFieldValue(int nIndex,
+ const COleVariant& varValue);
+ void SetFieldValue(int nIndex, LPCTSTR lpszValue);
+ void SetFieldValue(LPCTSTR lpszName, LPCTSTR lpszValue);
+ void SetFieldValueNull(LPCTSTR lpszName);
+ void SetFieldValueNull(int nIndex);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ void SetFieldDirty(void* pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void* pv, BOOL bNull = TRUE);
+
+ void SetLockingMode(BOOL bPessimistic);
+ BOOL GetLockingMode();
+
+ // Recordset operations
+ virtual void Requery();
+
+ // Jet's remote data caching operations
+ void SetCacheStart(COleVariant varBookmark);
+ COleVariant GetCacheStart();
+ void SetCacheSize(long lSize);
+ long GetCacheSize();
+ void FillCache(long* pSize = NULL, COleVariant* pBookmark = NULL);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+ virtual CString GetDefaultDBName();
+ virtual CString GetDefaultSQL();
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CDaoFieldExchange* pFX);
+
+// Implementation
+public:
+ virtual ~CDaoRecordset();
+
+ // Out-of-date functions kept for backward compatability
+ virtual COleVariant GetFieldValue(LPCTSTR lpszName);
+ virtual COleVariant GetFieldValue(int nIndex);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ CString m_strSQL;
+
+ CDaoQueryDef* m_pQueryDef; // Source query for this result set
+ CDaoTableDef* m_pTableDef;
+ ICDAORecordset* m_pICDAORecordsetGetRows;
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+ void SetCursorAttributes();
+ void GetDataAndFixupNulls();
+ DWORD GetFieldLength(int nFieldIndex);
+
+ BOOL IsFieldStatusDirty(UINT nField);
+ void SetDirtyFieldStatus(UINT nField);
+ void ClearDirtyFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNull(UINT nField);
+ void SetNullFieldStatus(UINT nField);
+ void ClearNullFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullable(UINT nField);
+ void SetNullableFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullableKnown(UINT nField);
+ void SetNullableKnownFieldStatus(UINT nField);
+
+ void ClearFieldStatusFlags();
+ BOOL IsMatch();
+
+ DWORD m_cbFixedLengthFields;
+ DAOCOLUMNBINDING* m_prgDaoColBindInfo;
+ DWORD* m_pulColumnLengths;
+ DAOFETCHROWS m_DaoFetchRows;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+
+ CMapPtrToPtr* m_pMapFieldCache;
+ CMapPtrToPtr* m_pMapFieldIndex;
+
+ static void AFX_CDECL StripBrackets(LPCTSTR lpszSrc, LPTSTR lpszDest);
+
+protected:
+ BOOL m_bOpen;
+ int m_nStatus;
+
+ BOOL m_bAppendable;
+ BOOL m_bScrollable;
+ BOOL m_bDeleted;
+
+ int m_nOpenType;
+ int m_nDefaultType;
+ int m_nOptions;
+
+ CString m_strRequerySQL;
+ CString m_strRequeryFilter;
+ CString m_strRequerySort;
+
+ void BuildSQL();
+ void AllocDatabase();
+
+ // RFX Operation Cover Functions
+ void BuildSelectList();
+ void BuildParameterList();
+ void BindFields();
+ void BindParameters();
+ void Fixup();
+ void AllocCache();
+ void StoreFields();
+ void LoadFields();
+ void FreeCache();
+ void MarkForEdit();
+ void MarkForAddNew();
+ int GetFieldIndex(void* pv);
+ virtual void SetDirtyFields();
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+
+ friend class CDaoFieldExchange;
+ friend class CDaoRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoRecordView - form for viewing data records
+
+class CDaoRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CDaoRecordView)
+
+// Construction
+protected: // must derive your own class
+ CDaoRecordView(LPCTSTR lpszTemplateName);
+ CDaoRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CDaoRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CDaoRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ int m_nStatus;
+ COleVariant m_varBookmarkCurrent;
+ COleVariant m_varBookmarkFirst;
+ COleVariant m_varBookmarkLast;
+
+ //{{AFX_MSG(CDaoRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// DAODBEngine helpers - implementation specific and undocumented
+void AFXAPI AfxDaoInit();
+DAODBEngine* AFXAPI AfxDaoGetEngine();
+void AFXAPI AfxDaoTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDAOCORE_INLINE inline
+#define _AFXDAODFX_INLINE inline
+#define _AFXDAOVIEW_INLINE inline
+#include <afxdao.inl>
+#undef _AFXDAOCORE_INLINE
+#undef _AFXDAODFX_INLINE
+#undef _AFXDAOVIEW_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDAO_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdao.inl b/public/sdk/inc/mfc42/afxdao.inl
new file mode 100644
index 000000000..07eddacf2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdao.inl
@@ -0,0 +1,77 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDAO.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDAOCORE_INLINE
+
+// CDaoWorkspace inlines
+_AFXDAOCORE_INLINE BOOL CDaoWorkspace::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+_AFXDAOCORE_INLINE BOOL CDaoWorkspace::IsNew() const
+ { ASSERT_VALID(this); return m_bNew; }
+
+// CDaoDatabase inlines
+_AFXDAOCORE_INLINE BOOL CDaoDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoTableDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoTableDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoQueryDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoQueryDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoRecordset inlines
+_AFXDAOCORE_INLINE BOOL CDaoRecordset::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+#endif // _AFXDAOCORE_INLINE
+
+
+#ifdef _AFXDAODFX_INLINE
+
+// CDaoFieldExchange
+_AFXDAODFX_INLINE void CDaoFieldExchange::SetFieldType(UINT nFieldType)
+{ ASSERT(nFieldType == outputColumn || nFieldType == param);
+ m_nFieldType = nFieldType; }
+
+#endif // _AFXDAODFX_INLINE
+
+
+#ifdef _AFXDAOVIEW_INLINE
+
+// CDaoRecordView inlines
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordFirst(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordNext(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_NEXT); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordPrev(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordLast(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_LAST); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif // _AFXDAOVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.h b/public/sdk/inc/mfc42/afxdb.h
new file mode 100644
index 000000000..dd8f6abb2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.h
@@ -0,0 +1,1042 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_H__
+#define __AFXDB_H__
+
+#ifdef _AFX_NO_DB_SUPPORT
+ #error Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header DAO database classes
+#endif
+
+// include standard SQL/ODBC "C" APIs
+#ifndef __SQL
+ #include <sql.h> // core
+#endif
+#ifndef __SQLEXT
+ #include <sqlext.h> // extensions
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcd42d.lib")
+ #else
+ #pragma comment(lib, "mfcd42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "odbc32.lib")
+#pragma comment(lib, "odbccp32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfcd42pd.lib")
+ #else
+ #pragma comment(lib, "mfcd42p.lib")
+ #endif
+#endif
+
+#ifdef _MPPC_
+#pragma comment(lib, "odbccfgp.lib")
+#pragma comment(lib, "odbcdrvp.lib")
+#else
+#pragma comment(lib, "odbccfgm.lib")
+#pragma comment(lib, "odbcdrvm.lib")
+#ifdef _DEBUG
+#pragma comment (lib, "aslmd.lib")
+#else
+#pragma comment (lib, "aslm.lib")
+#endif
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDB - MFC SQL/ODBC/Database support
+
+// Classes declared in this file
+
+ //CException
+ class CDBException; // abnormal return value
+
+ //CFieldExchange
+ class CFieldExchange; // Recordset Field Exchange
+
+ //CObject
+ class CDatabase; // Connecting to databases
+ class CRecordset; // Data result sets
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CScrollView
+ //CFormView
+ class CRecordView; // view records with a form
+
+// Non CObject classes
+class CDBVariant;
+struct CRecordsetStatus;
+struct CFieldInfo;
+struct CODBCFieldInfo;
+struct CODBCParamInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// ODBC helpers
+// return code left in 'nRetCode'
+
+// This MACRO is now out-of-date (kept for backward compatibility)
+#define AFX_ODBC_CALL(SQLFunc) \
+ do \
+ { \
+ } while ((nRetCode = (SQLFunc)) == SQL_STILL_EXECUTING)
+
+// Not really required, but kept for compatibilty
+#define AFX_SQL_SYNC(SQLFunc) \
+ do \
+ { \
+ nRetCode = SQLFunc; \
+ } while (0)
+
+// Now out-of-date (prs not used) but kept for compatibility
+#define AFX_SQL_ASYNC(prs, SQLFunc) AFX_ODBC_CALL(SQLFunc)
+
+// Max display length in chars of timestamp (date & time) value
+#define TIMESTAMP_PRECISION 23
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+// Miscellaneous sizing info
+#define MAX_CURRENCY 30 // Max size of Currency($) string
+#define MAX_TNAME_LEN 64 // Max size of table names
+#define MAX_FNAME_LEN 64 // Max size of field names
+#define MAX_DBNAME_LEN 32 // Max size of a database name
+#define MAX_DNAME_LEN 256 // Max size of Recordset names
+#define MAX_CONNECT_LEN 512 // Max size of Connect string
+#define MAX_CURSOR_NAME 18 // Max size of a cursor name
+#define DEFAULT_FIELD_TYPE SQL_TYPE_NULL // pick "C" data type to match SQL data type
+
+// Timeout and net wait defaults
+#define DEFAULT_LOGIN_TIMEOUT 15 // seconds to before fail on connect
+#define DEFAULT_QUERY_TIMEOUT 15 // seconds to before fail waiting for results
+
+// Field Flags, used to indicate status of fields
+#define AFX_SQL_FIELD_FLAG_DIRTY 0x1
+#define AFX_SQL_FIELD_FLAG_NULL 0x2
+
+// Update options flags
+#define AFX_SQL_SETPOSUPDATES 0x0001
+#define AFX_SQL_POSITIONEDSQL 0x0002
+#define AFX_SQL_GDBOUND 0x0004
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBException - something gone wrong
+
+// Dbkit extended error codes
+#define AFX_SQL_ERROR 1000
+#define AFX_SQL_ERROR_CONNECT_FAIL AFX_SQL_ERROR+1
+#define AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY AFX_SQL_ERROR+2
+#define AFX_SQL_ERROR_EMPTY_COLUMN_LIST AFX_SQL_ERROR+3
+#define AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH AFX_SQL_ERROR+4
+#define AFX_SQL_ERROR_ILLEGAL_MODE AFX_SQL_ERROR+5
+#define AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED AFX_SQL_ERROR+6
+#define AFX_SQL_ERROR_NO_CURRENT_RECORD AFX_SQL_ERROR+7
+#define AFX_SQL_ERROR_NO_ROWS_AFFECTED AFX_SQL_ERROR+8
+#define AFX_SQL_ERROR_RECORDSET_READONLY AFX_SQL_ERROR+9
+#define AFX_SQL_ERROR_SQL_NO_TOTAL AFX_SQL_ERROR+10
+#define AFX_SQL_ERROR_ODBC_LOAD_FAILED AFX_SQL_ERROR+11
+#define AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED AFX_SQL_ERROR+12
+#define AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED AFX_SQL_ERROR+13
+#define AFX_SQL_ERROR_API_CONFORMANCE AFX_SQL_ERROR+14
+#define AFX_SQL_ERROR_SQL_CONFORMANCE AFX_SQL_ERROR+15
+#define AFX_SQL_ERROR_NO_DATA_FOUND AFX_SQL_ERROR+16
+#define AFX_SQL_ERROR_ROW_UPDATE_NOT_SUPPORTED AFX_SQL_ERROR+17
+#define AFX_SQL_ERROR_ODBC_V2_REQUIRED AFX_SQL_ERROR+18
+#define AFX_SQL_ERROR_NO_POSITIONED_UPDATES AFX_SQL_ERROR+19
+#define AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED AFX_SQL_ERROR+20
+#define AFX_SQL_ERROR_DATA_TRUNCATED AFX_SQL_ERROR+21
+#define AFX_SQL_ERROR_ROW_FETCH AFX_SQL_ERROR+22
+#define AFX_SQL_ERROR_INCORRECT_ODBC AFX_SQL_ERROR+23
+#define AFX_SQL_ERROR_UPDATE_DELETE_FAILED AFX_SQL_ERROR+24
+#define AFX_SQL_ERROR_DYNAMIC_CURSOR_NOT_SUPPORTED AFX_SQL_ERROR+25
+#define AFX_SQL_ERROR_FIELD_NOT_FOUND AFX_SQL_ERROR+26
+#define AFX_SQL_ERROR_BOOKMARKS_NOT_SUPPORTED AFX_SQL_ERROR+27
+#define AFX_SQL_ERROR_BOOKMARKS_NOT_ENABLED AFX_SQL_ERROR+28
+#define AFX_SQL_ERROR_MAX AFX_SQL_ERROR+29
+
+class CDBException : public CException
+{
+ DECLARE_DYNAMIC(CDBException)
+
+// Attributes
+public:
+ RETCODE m_nRetCode;
+ CString m_strError;
+ CString m_strStateNativeOrigin;
+
+// Implementation (use AfxThrowDBException to create)
+public:
+ CDBException(RETCODE nRetCode = SQL_SUCCESS);
+
+ virtual void BuildErrorString(CDatabase* pdb, HSTMT hstmt,
+ BOOL bTrace = TRUE);
+ void Empty();
+ virtual ~CDBException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+#ifdef _DEBUG
+ void TraceErrorMessage(LPCTSTR szTrace) const;
+#endif // DEBUG
+
+};
+
+void AFXAPI AfxThrowDBException(RETCODE nRetCode, CDatabase* pdb, HSTMT hstmt);
+
+//////////////////////////////////////////////////////////////////////////////
+// CDatabase - a SQL Database
+
+class CDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDatabase)
+
+// Constructors
+public:
+ CDatabase();
+
+ enum DbOpenOptions
+ {
+ openExclusive = 0x0001, // Not implemented
+ openReadOnly = 0x0002, // Open database read only
+ useCursorLib = 0x0004, // Use ODBC cursor lib
+ noOdbcDialog = 0x0008, // Don't display ODBC Connect dialog
+ forceOdbcDialog = 0x0010, // Always display ODBC connect dialog
+ };
+
+ virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
+ BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
+ BOOL bUseCursorLib = TRUE);
+ virtual BOOL OpenEx(LPCTSTR lpszConnectString, DWORD dwOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ HDBC m_hdbc;
+
+ BOOL IsOpen() const; // Database successfully opened?
+ BOOL CanUpdate() const;
+ BOOL CanTransact() const; // Are Transactions supported?
+
+ CString GetDatabaseName() const;
+ const CString& GetConnect() const;
+
+ DWORD GetBookmarkPersistence() const;
+ int GetCursorCommitBehavior() const;
+ int GetCursorRollbackBehavior() const;
+
+// Operations
+public:
+ void SetLoginTimeout(DWORD dwSeconds);
+ void SetQueryTimeout(DWORD dwSeconds);
+
+ // transaction control
+ BOOL BeginTrans();
+ BOOL CommitTrans();
+ BOOL Rollback();
+
+ void ExecuteSQL(LPCTSTR lpszSQL);
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+// Implementation
+public:
+ virtual ~CDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+ BOOL m_bTransactionPending;
+#endif //_DEBUG
+
+ // general error check
+ virtual BOOL Check(RETCODE nRetCode) const;
+
+ virtual void BindParameters(HSTMT hstmt);
+
+ void ReplaceBrackets(LPTSTR lpchSQL);
+ BOOL m_bStripTrailingSpaces;
+ BOOL m_bIncRecordCountOnAdd;
+ BOOL m_bAddForUpdate;
+ char m_chIDQuoteChar;
+ char m_reserved1[3]; // pad to even 4 bytes
+
+ void SetSynchronousMode(BOOL bSynchronous); // Obsolete, doe nothing
+
+protected:
+ CString m_strConnect;
+
+ CPtrList m_listRecordsets; // maintain list to ensure CRecordsets all closed
+
+ int nRefCount;
+ BOOL m_bUpdatable;
+
+ BOOL m_bTransactions;
+ SWORD m_nTransactionCapable;
+ SWORD m_nCursorCommitBehavior;
+ SWORD m_nCursorRollbackBehavior;
+ DWORD m_dwUpdateOptions;
+ DWORD m_dwBookmarkAttributes; // cache driver bookmark persistence
+
+ DWORD m_dwLoginTimeout;
+ HSTMT m_hstmt;
+
+ DWORD m_dwQueryTimeout;
+
+ virtual void ThrowDBException(RETCODE nRetCode);
+ void AllocConnect(DWORD dwOptions);
+ BOOL Connect(DWORD dwOptions);
+ void VerifyConnect();
+ void GetConnectInfo();
+ void Free();
+
+ // friend classes that call protected CDatabase overridables
+ friend class CRecordset;
+ friend class CFieldExchange;
+ friend class CDBException;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// CFieldExchange - for field exchange
+class CFieldExchange
+{
+// Attributes
+public:
+ enum RFX_Operation
+ {
+ BindParam, // register users parameters with ODBC SQLBindParameter
+ RebindParam, // migrate param values to proxy array before Requery
+ BindFieldToColumn, // register users fields with ODBC SQLBindCol
+ BindFieldForUpdate, // temporarily bind columns before update (via SQLSetPos)
+ UnbindFieldForUpdate, // unbind columns after update (via SQLSetPos)
+ Fixup, // Set string lengths, clear status bits
+ MarkForAddNew, // Prepare fields and flags for addnew operation
+ MarkForUpdate, // Prepare fields and flags for update operation
+ Name, // append dirty field name
+ NameValue, // append dirty name=value
+ Value, // append dirty value or parameter marker
+ SetFieldNull, // Set status bit for null value
+ StoreField, // archive values of current record
+ LoadField, // reload archived values into current record
+ AllocCache, // allocate cache used for dirty field check
+ AllocMultiRowBuffer, // allocate buffer holding multi rows of data
+ DeleteMultiRowBuffer, // delete buffer holding multi rows of data
+#ifdef _DEBUG
+ DumpField, // dump bound field name and value
+#endif
+ };
+ UINT m_nOperation; // Type of exchange operation
+ CRecordset* m_prs; // recordset handle
+
+// Operations
+ enum FieldType
+ {
+ noFieldType = -1,
+ outputColumn = 0,
+ param = SQL_PARAM_INPUT,
+ inputParam = param,
+ outputParam = SQL_PARAM_OUTPUT,
+ inoutParam = SQL_PARAM_INPUT_OUTPUT,
+ };
+
+// Operations (for implementors of RFX procs)
+ BOOL IsFieldType(UINT* pnField);
+
+ // Indicate purpose of subsequent RFX calls
+ void SetFieldType(UINT nFieldType);
+
+// Implementation
+ CFieldExchange(UINT nOperation, CRecordset* prs, void* pvField = NULL);
+
+ void Default(LPCTSTR szName,
+ void* pv, LONG* plLength, int nCType, UINT cbValue, UINT cbPrecision);
+
+ // long binary helpers
+ long GetLongBinarySize(int nField);
+ void GetLongBinaryData(int nField, CLongBinary& lb, long* plSize);
+ BYTE* ReallocLongBinary(CLongBinary& lb, long lSizeRequired,
+ long lReallocSize);
+
+ // Current type of field
+ UINT m_nFieldType;
+
+ UINT m_nFieldFound;
+
+ CString* m_pstr; // Field name or destination for building various SQL clauses
+ BOOL m_bField; // Value to set for SetField operation
+ void* m_pvField; // For indicating an operation on a specific field
+ LPCTSTR m_lpszSeparator; // append after field names
+ UINT m_nFields; // count of fields for various operations
+ UINT m_nParams; // count of fields for various operations
+ UINT m_nParamFields; // count of fields for various operations
+ HSTMT m_hstmt; // For SQLBindParameter on update statement
+ long m_lDefaultLBFetchSize; // For fetching CLongBinary data of unknown len
+ long m_lDefaultLBReallocSize; // For fetching CLongBinary data of unknown len
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Recordset Field Exchange helpers
+void AFXAPI AfxStoreField(CRecordset& rs, UINT nField, void* pvField);
+void AFXAPI AfxLoadField(CRecordset& rs, UINT nField,
+ void* pvField, long* plLength);
+BOOL AFXAPI AfxCompareValueByRef(void* pvData, void* pvCache, int nDataType);
+void AFXAPI AfxCopyValueByRef(void* pvCache, void* pvData,
+ long* plLength, int nDataType);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Recordset Field Exchange routines
+
+// text data
+void AFXAPI RFX_Text(CFieldExchange* pFX, LPCTSTR szName, CString& value,
+ // Default max length for char and varchar, default datasource type
+ int nMaxLength = 255, int nColumnType = SQL_VARCHAR, short nScale = 0);
+
+// boolean data
+void AFXAPI RFX_Bool(CFieldExchange* pFX, LPCTSTR szName, BOOL& value);
+
+// integer data
+void AFXAPI RFX_Long(CFieldExchange* pFX, LPCTSTR szName, long& value);
+void AFXAPI RFX_Int(CFieldExchange* pFX, LPCTSTR szName, int& value);
+void AFXAPI RFX_Single(CFieldExchange* pFX, LPCTSTR szName, float& value);
+void AFXAPI RFX_Double(CFieldExchange* pFX, LPCTSTR szName, double& value);
+
+// date and time
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, CTime& value);
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, TIMESTAMP_STRUCT& value);
+
+// Binary data
+void AFXAPI RFX_Binary(CFieldExchange* pFX, LPCTSTR szName, CByteArray& value,
+ // Default max length is for binary and varbinary
+ int nMaxLength = 255);
+void AFXAPI RFX_Byte(CFieldExchange* pFX, LPCTSTR szName, BYTE& value);
+void AFXAPI RFX_LongBinary(CFieldExchange* pFX, LPCTSTR szName, CLongBinary& value);
+
+/////////////////////////////////////////////////////////////////////////////
+// Bulk Recordset Field Exchange helpers
+void AFXAPI AfxRFXBulkDefault(CFieldExchange* pFX, LPCTSTR szName,
+ void* pv, long* rgLengths, int nCType, UINT cbValue);
+
+/////////////////////////////////////////////////////////////////////////////
+// Bulk Recordset Field Exchange routines
+
+void AFXAPI RFX_Text_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ LPSTR* prgStrVals, long** prgLengths, int nMaxLength);
+
+void AFXAPI RFX_Bool_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BOOL** prgBoolVals, long** prgLengths);
+void AFXAPI RFX_Int_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ int** prgIntVals, long** prgLengths);
+void AFXAPI RFX_Long_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ long** prgLongVals, long** prgLengths);
+
+void AFXAPI RFX_Single_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ float** prgFltVals, long** prgLengths);
+void AFXAPI RFX_Double_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ double** prgDblVals, long** prgLengths);
+
+void AFXAPI RFX_Date_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ TIMESTAMP_STRUCT** prgTSVals, long** prgLengths);
+
+void AFXAPI RFX_Byte_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BYTE** prgByteVals, long** prgLengths);
+void AFXAPI RFX_Binary_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BYTE** prgByteVals, long** prgLengths, int nMaxLength);
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, UINT& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value, CRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+
+//////////////////////////////////////////////////////////////////////////////
+// CRecordset - the result of a SQL Statement
+
+#define AFX_DB_USE_DEFAULT_TYPE (0xFFFFFFFF)
+
+// Most Move constants out of date
+// #define AFX_MOVE_FIRST 0x80000000L
+// #define AFX_MOVE_PREVIOUS (-1L)
+#define AFX_MOVE_REFRESH 0L
+// #define AFX_MOVE_NEXT (+1L)
+// #define AFX_MOVE_LAST 0x7fffffffL
+
+#define AFX_RECORDSET_STATUS_OPEN (+1L)
+#define AFX_RECORDSET_STATUS_CLOSED 0L
+#define AFX_RECORDSET_STATUS_UNKNOWN (-1L)
+
+class CRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CRecordset)
+
+// Constructor
+public:
+ CRecordset(CDatabase* pDatabase = NULL);
+
+public:
+ virtual ~CRecordset();
+
+ enum OpenType
+ {
+ dynaset, // uses SQLExtendedFetch, keyset driven cursor
+ snapshot, // uses SQLExtendedFetch, static cursor
+ forwardOnly, // uses SQLFetch
+ dynamic // uses SQLExtendedFetch, dynamic cursor
+ };
+
+ enum OpenOptions
+ {
+ none = 0x0,
+ readOnly = 0x0004,
+ appendOnly = 0x0008,
+ skipDeletedRecords = 0x0010, // turn on skipping of deleted records, Will slow Move(n).
+ noDirtyFieldCheck = 0x0020, // disable automatic dirty field checking
+ useBookmarks = 0x0100, // turn on bookmark support
+ useMultiRowFetch = 0x0200, // turn on multi-row fetch model
+ userAllocMultiRowBuffers = 0x0400, // if multi-row fetch on, user will alloc memory for buffers
+ useExtendedFetch = 0x0800, // use SQLExtendedFetch with forwardOnly type recordsets
+ executeDirect = 0x2000, // Directly execute SQL rather than prepared execute
+ optimizeBulkAdd = 0x4000, // Use prepared HSTMT for multiple AddNews, dirty fields must not change.
+ firstBulkAdd = 0x8000, // INTERNAL to MFC, don't specify on Open.
+ };
+ virtual BOOL Open(UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, DWORD dwOptions = none);
+ virtual void Close();
+
+// Attributes
+public:
+ HSTMT m_hstmt; // Source statement for this resultset
+ CDatabase* m_pDatabase; // Source database for this resultset
+
+ CString m_strFilter; // Where clause
+ CString m_strSort; // Order By Clause
+
+ BOOL CanAppend() const; // Can AddNew be called?
+ BOOL CanRestart() const; // Can Requery be called to restart a query?
+ BOOL CanScroll() const; // Can MovePrev and MoveFirst be called?
+ BOOL CanTransact() const; // Are Transactions supported?
+ BOOL CanUpdate() const; // Can Edit/AddNew/Delete be called?
+ BOOL CanBookmark() const; // Can Get/SetBookmark be called?
+
+ const CString& GetSQL() const; // SQL executed for this recordset
+ const CString& GetTableName() const; // Table name
+
+ BOOL IsOpen() const; // Recordset successfully opened?
+ BOOL IsBOF() const; // Beginning Of File
+ BOOL IsEOF() const; // End Of File
+ BOOL IsDeleted() const; // On a deleted record
+
+ BOOL IsFieldDirty(void *pv); // has field been updated?
+ BOOL IsFieldNull(void *pv); // is field NULL valued?
+ BOOL IsFieldNullable(void *pv); // can field be set to a NULL value
+
+ long GetRecordCount() const; // Records seen so far or -1 if unknown
+ void GetStatus(CRecordsetStatus& rStatus) const;
+
+// Operations
+public:
+ // cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long nRows, WORD wFetchType = SQL_FETCH_RELATIVE);
+
+ void SetAbsolutePosition(long nRows);
+
+ void GetBookmark(CDBVariant& varBookmark);
+ void SetBookmark(const CDBVariant& varBookmark);
+
+ virtual void SetRowsetSize(DWORD dwNewRowsetSize);
+ DWORD GetRowsetSize() const;
+ DWORD GetRowsFetched() const;
+ virtual void CheckRowsetError(RETCODE nRetCode);
+ void RefreshRowset(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);
+ void SetRowsetCursorPosition(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);
+ WORD GetRowStatus(WORD wRow) const;
+
+ // edit buffer operations
+ virtual void AddNew(); // add new record at the end
+ virtual void Edit(); // start editing
+ virtual BOOL Update(); // update it
+ virtual void Delete(); // delete the current record
+ void CancelUpdate(); // cancel pending Edit/AddNew
+
+ BOOL FlushResultSet() const;
+
+ // field operations
+ short GetODBCFieldCount() const;
+ void GetODBCFieldInfo(short nIndex, CODBCFieldInfo& fieldinfo);
+ void GetODBCFieldInfo(LPCTSTR lpszName, CODBCFieldInfo& fieldinfo);
+ void GetFieldValue(LPCTSTR lpszName, CDBVariant& varValue,
+ short nFieldType = DEFAULT_FIELD_TYPE);
+ void GetFieldValue(short nIndex, CDBVariant& varValue,
+ short nFieldType = DEFAULT_FIELD_TYPE);
+ void GetFieldValue(LPCTSTR lpszName, CString& strValue);
+ void GetFieldValue(short nIndex, CString& strValue);
+
+ void SetFieldDirty(void *pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void *pv, BOOL bNull = TRUE);
+
+ // locking control during Edit
+ enum LockMode
+ {
+ optimistic,
+ pessimistic,
+ };
+ void SetLockingMode(UINT nMode);
+
+ // Recordset operations
+ virtual BOOL Requery(); // Re-execute query based on new params
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // Get default connect string
+ virtual CString GetDefaultConnect();
+
+ // Get SQL to execute
+ virtual CString GetDefaultSQL();
+
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CFieldExchange* pFX);
+ virtual void DoBulkFieldExchange(CFieldExchange* pFX);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ virtual BOOL Check(RETCODE nRetCode) const; // general error check
+
+ void InitRecord();
+ void ResetCursor();
+ void CheckRowsetCurrencyStatus(UWORD wFetchType, long nRows);
+ RETCODE FetchData(UWORD wFetchType, SDWORD nRow,
+ DWORD* pdwRowsFetched);
+ void SkipDeletedRecords(UWORD wFetchType, long nRows,
+ DWORD* pdwRowsFetched, RETCODE* pnRetCode);
+ virtual void SetRowsetCurrencyStatus(RETCODE nRetCode,
+ UWORD wFetchType, long nRows, DWORD dwRowsFetched);
+
+ virtual void PreBindFields(); // called before data fields are bound
+ UINT m_nFields; // number of RFX fields
+ UINT m_nParams; // number of RFX params
+ BOOL m_bCheckCacheForDirtyFields; // switch for dirty field checking
+ BOOL m_bRebindParams; // date or UNICODE text parameter existence flag
+ BOOL m_bLongBinaryColumns; // long binary column existence flag
+ BOOL m_bUseUpdateSQL; // uses SQL-based updates
+ DWORD m_dwOptions; // archive dwOptions on Open
+ SWORD m_nResultCols; // number of columns in result set
+ BOOL m_bUseODBCCursorLib; // uses ODBC cursor lib if m_pDatabase not Open
+ CODBCFieldInfo* m_rgODBCFieldInfos; // Array of field info structs with ODBC meta-data
+ CFieldInfo* m_rgFieldInfos; // Array of field info structs with MFC specific field data
+ CMapPtrToPtr m_mapFieldIndex; // Map of member address to field index
+ CMapPtrToPtr m_mapParamIndex; // Map of member address to field index
+
+ BOOL IsSQLUpdatable(LPCTSTR lpszSQL);
+ BOOL IsSelectQueryUpdatable(LPCTSTR lpszSQL);
+ static BOOL PASCAL IsJoin(LPCTSTR lpszJoinClause);
+ static LPCTSTR PASCAL FindSQLToken(LPCTSTR lpszSQL, LPCTSTR lpszSQLToken);
+
+ // RFX Operations on fields of CRecordset
+ UINT BindParams(HSTMT hstmt);
+ void RebindParams(HSTMT hstmt);
+ UINT BindFieldsToColumns();
+ void BindFieldsForUpdate();
+ void UnbindFieldsForUpdate();
+ void Fixups();
+ UINT AppendNames(CString* pstr, LPCTSTR szSeparator);
+ UINT AppendValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ UINT AppendNamesValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ void StoreFields();
+ void LoadFields();
+ void MarkForAddNew();
+ void MarkForUpdate();
+ void AllocDataCache();
+ void FreeDataCache();
+#ifdef _DEBUG
+ void DumpFields(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ // RFX operation helper functions
+ virtual void ThrowDBException(RETCODE nRetCode, HSTMT hstmt = SQL_NULL_HSTMT);
+
+ int GetBoundFieldIndex(void* pv);
+ int GetBoundParamIndex(void* pv);
+ short GetFieldIndexByName(LPCTSTR lpszFieldName);
+
+ void AllocStatusArrays();
+ long* GetFieldLengthBuffer(DWORD nField, int nFieldType); // for fields & params
+
+ BYTE GetFieldStatus(DWORD nField);
+ void SetFieldStatus(DWORD nField, BYTE bFlags);
+ void ClearFieldStatus();
+
+ BOOL IsFieldStatusDirty(DWORD nField) const;
+ void SetDirtyFieldStatus(DWORD nField);
+ void ClearDirtyFieldStatus(DWORD nField);
+
+ BOOL IsFieldStatusNull(DWORD nField) const;
+ void SetNullFieldStatus(DWORD nField);
+ void ClearNullFieldStatus(DWORD nField);
+
+ BOOL IsParamStatusNull(DWORD nField) const;
+ void SetNullParamStatus(DWORD nField);
+ void ClearNullParamStatus(DWORD nField);
+
+ BOOL IsFieldNullable(DWORD nField) const;
+
+ void** m_pvFieldProxy;
+ void** m_pvParamProxy;
+ UINT m_nProxyFields;
+ UINT m_nProxyParams;
+
+ // GetFieldValue helpers
+ static short PASCAL GetDefaultFieldType(short nSQLType);
+ static void* PASCAL GetDataBuffer(CDBVariant& varValue, short nFieldType,
+ int* pnLen, short nSQLType, UDWORD nPrecision);
+ static int PASCAL GetTextLen(short nSQLType, UDWORD nPrecision);
+ static long PASCAL GetData(CDatabase* pdb, HSTMT hstmt, short nFieldIndex,
+ short nFieldType, LPVOID pvData, int nLen, short nSQLType);
+ static void PASCAL GetLongBinaryDataAndCleanup(CDatabase* pdb, HSTMT hstmt,
+ short nFieldIndex, long nActualSize, LPVOID* ppvData, int nLen,
+ CDBVariant& varValue, short nSQLType);
+ static void PASCAL GetLongCharDataAndCleanup(CDatabase* pdb, HSTMT hstmt,
+ short nFieldIndex, long nActualSize, LPVOID* ppvData, int nLen,
+ CString& strValue, short nSQLType);
+
+protected:
+ UINT m_nOpenType;
+ UINT m_nDefaultType;
+ enum EditMode
+ {
+ noMode,
+ edit,
+ addnew
+ };
+ long m_lOpen;
+ UINT m_nEditMode;
+ BOOL m_bEOFSeen;
+ long m_lRecordCount;
+ long m_lCurrentRecord;
+ CString m_strCursorName;
+ // Perform operation based on m_nEditMode
+ BOOL UpdateInsertDelete();
+ BOOL m_nLockMode; // Control concurrency for Edit()
+ UDWORD m_dwDriverConcurrency; // driver supported concurrency types
+ UDWORD m_dwConcurrency; // requested concurrency type
+ UWORD* m_rgRowStatus; // row status used by SQLExtendedFetch and SQLSetPos
+ DWORD m_dwRowsFetched; // number of rows fetched by SQLExtendedFetch
+ HSTMT m_hstmtUpdate;
+ BOOL m_bRecordsetDb;
+ BOOL m_bBOF;
+ BOOL m_bEOF;
+ BOOL m_bUpdatable; // Is recordset updatable?
+ BOOL m_bAppendable;
+ CString m_strSQL; // SQL statement for recordset
+ CString m_strUpdateSQL; // SQL statement for updates
+ CString m_strTableName; // source table of recordset
+ BOOL m_bScrollable; // supports MovePrev
+ BOOL m_bDeleted;
+ int m_nFieldsBound;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+ LONG* m_plParamLength;
+ DWORD m_dwInitialGetDataLen; // Initial GetFieldValue alloc size for long data
+ DWORD m_dwRowsetSize;
+ DWORD m_dwAllocatedRowsetSize;
+
+protected:
+ CString m_strRequerySQL; // archive SQL string for use in Requery()
+ CString m_strRequeryFilter; // archive filter string for use in Requery()
+ CString m_strRequerySort; // archive sort string for use in Requery()
+
+ void SetState(int nOpenType, LPCTSTR lpszSQL, DWORD dwOptions);
+ BOOL AllocHstmt();
+ void BuildSQL(LPCTSTR lpszSQL);
+ void PrepareAndExecute();
+
+ void BuildSelectSQL();
+ void AppendFilterAndSortSQL();
+ BOOL IsRecordsetUpdatable();
+
+ void VerifyDriverBehavior();
+ DWORD VerifyCursorSupport();
+ void EnableBookmarks();
+ void SetUpdateMethod();
+ void SetConcurrencyAndCursorType(HSTMT hstmt, DWORD dwScrollOptions);
+ void AllocAndCacheFieldInfo();
+ void AllocRowset();
+ void FreeRowset();
+
+ void ExecuteSetPosUpdate();
+ void PrepareUpdateHstmt();
+ void BuildUpdateSQL();
+ void ExecuteUpdateSQL();
+ void SendLongBinaryData(HSTMT hstmt);
+ virtual long GetLBFetchSize(long lOldSize); // CLongBinary fetch chunking
+ virtual long GetLBReallocSize(long lOldSize); // CLongBinary realloc chunking
+
+ friend class CFieldExchange;
+ friend class CRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Info helper definitions
+#define AFX_CURRENT_RECORD_UNDEFINED (-2)
+#define AFX_CURRENT_RECORD_BOF (-1)
+
+// For returning status for a recordset
+struct CRecordsetStatus
+{
+ long m_lCurrentRecord; // -2=Unknown,-1=BOF,0=1st record. . .
+ BOOL m_bRecordCountFinal;// Have we counted all records?
+};
+
+// Must maintian data binding info
+struct CFieldInfo
+{
+ // MFC specific info
+ void* m_pvDataCache;
+ long m_nLength;
+ int m_nDataType;
+ BYTE m_bStatus;
+#ifdef _DEBUG
+ void* m_pvBindAddress;
+#endif
+};
+
+struct CODBCFieldInfo
+{
+ // meta data from ODBC
+ CString m_strName;
+ SWORD m_nSQLType;
+ UDWORD m_nPrecision;
+ SWORD m_nScale;
+ SWORD m_nNullability;
+};
+
+struct CODBCParamInfo
+{
+ // meta data from ODBC
+ SWORD m_nSQLType;
+ UDWORD m_nPrecision;
+ SWORD m_nScale;
+ SWORD m_nNullability;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBVariant
+
+#define DBVT_NULL 0
+#define DBVT_BOOL 1
+#define DBVT_UCHAR 2
+#define DBVT_SHORT 3
+#define DBVT_LONG 4
+#define DBVT_SINGLE 5
+#define DBVT_DOUBLE 6
+#define DBVT_DATE 7
+#define DBVT_STRING 8
+#define DBVT_BINARY 9
+
+class CDBVariant
+{
+// Constructor
+public:
+ CDBVariant();
+
+// Attributes
+public:
+ DWORD m_dwType;
+
+ union
+ {
+ BOOL m_boolVal;
+ unsigned char m_chVal;
+ short m_iVal;
+ long m_lVal;
+ float m_fltVal;
+ double m_dblVal;
+ TIMESTAMP_STRUCT* m_pdate;
+ CString* m_pstring;
+ CLongBinary* m_pbinary;
+ };
+
+// Operations
+ void Clear();
+
+// Implementation
+public:
+ virtual ~CDBVariant();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecordView - form for viewing data records
+
+class CRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CRecordView)
+
+// Construction
+protected: // must derive your own class
+ CRecordView(LPCTSTR lpszTemplateName);
+ CRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ BOOL m_bOnFirstRecord;
+ BOOL m_bOnLastRecord;
+
+ //{{AFX_MSG(CRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDBCORE_INLINE inline
+#define _AFXDBRFX_INLINE inline
+#define _AFXDBVIEW_INLINE inline
+#include <afxdb.inl>
+#undef _AFXDBVIEW_INLINE
+#undef _AFXDBCORE_INLINE
+#undef _AFXDBRFX_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.inl b/public/sdk/inc/mfc42/afxdb.inl
new file mode 100644
index 000000000..cec6cd123
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.inl
@@ -0,0 +1,113 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDB.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDBCORE_INLINE
+
+// CDatabase inlines
+_AFXDBCORE_INLINE BOOL CDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_hdbc != SQL_NULL_HDBC; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanTransact() const
+ { ASSERT(IsOpen()); return m_bTransactions; }
+_AFXDBCORE_INLINE void CDatabase::SetLoginTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwLoginTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetQueryTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwQueryTimeout = dwSeconds; }
+_AFXDBCORE_INLINE const CString& CDatabase::GetConnect() const
+ { ASSERT_VALID(this); return m_strConnect; }
+_AFXDBCORE_INLINE DWORD CDatabase::GetBookmarkPersistence() const
+ { ASSERT_VALID(this); return m_dwBookmarkAttributes; }
+_AFXDBCORE_INLINE int CDatabase::GetCursorCommitBehavior() const
+ { ASSERT_VALID(this); return m_nCursorCommitBehavior; }
+_AFXDBCORE_INLINE int CDatabase::GetCursorRollbackBehavior() const
+ { ASSERT_VALID(this); return m_nCursorRollbackBehavior; }
+_AFXDBCORE_INLINE void CDatabase::ThrowDBException(RETCODE nRetCode)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, this, m_hstmt); }
+_AFXDBCORE_INLINE void CDatabase::SetSynchronousMode(BOOL /* bSynchronous */ )
+ { ASSERT_VALID(this); TRACE0("Error: SetSynchronousMode is obsolete and has not effect.\n"); }
+
+// CRecordset inlines
+_AFXDBCORE_INLINE const CString& CRecordset::GetSQL() const
+ { ASSERT(IsOpen()); return m_strSQL; }
+_AFXDBCORE_INLINE const CString& CRecordset::GetTableName() const
+ { ASSERT(IsOpen()); return m_strTableName; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsBOF() const
+ { ASSERT(IsOpen()); return m_bBOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsEOF() const
+ { ASSERT(IsOpen()); return m_bEOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsDeleted() const
+ { ASSERT(IsOpen()); return m_bDeleted; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanScroll() const
+ { ASSERT(IsOpen()); return m_bScrollable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanAppend() const
+ { ASSERT(IsOpen()); return m_bAppendable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanRestart() const
+ { ASSERT(IsOpen()); return !(m_dwOptions & executeDirect); }
+_AFXDBCORE_INLINE BOOL CRecordset::CanTransact() const
+ { ASSERT(m_pDatabase->IsOpen());
+ return m_pDatabase->m_bTransactions; }
+_AFXDBCORE_INLINE short CRecordset::GetODBCFieldCount() const
+ { ASSERT(IsOpen()); return m_nResultCols; }
+_AFXDBCORE_INLINE DWORD CRecordset::GetRowsetSize() const
+ { ASSERT(IsOpen()); return m_dwRowsetSize; }
+_AFXDBCORE_INLINE DWORD CRecordset::GetRowsFetched() const
+ { ASSERT(IsOpen()); return m_dwRowsFetched; }
+_AFXDBCORE_INLINE WORD CRecordset::GetRowStatus(WORD wRow) const
+ { ASSERT(IsOpen()); ASSERT(wRow > 0); return m_rgRowStatus[wRow-1]; }
+_AFXDBCORE_INLINE long CRecordset::GetRecordCount() const
+ { ASSERT(IsOpen()); return m_lRecordCount; }
+_AFXDBCORE_INLINE void CRecordset::GetStatus(CRecordsetStatus& rStatus) const
+ { ASSERT(IsOpen());
+ rStatus.m_lCurrentRecord = m_lCurrentRecord;
+ rStatus.m_bRecordCountFinal = m_bEOFSeen; }
+_AFXDBCORE_INLINE void CRecordset::ThrowDBException(RETCODE nRetCode, HSTMT hstmt)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, m_pDatabase,
+ (hstmt == SQL_NULL_HSTMT)? m_hstmt : hstmt); }
+_AFXDBCORE_INLINE void CRecordset::MoveNext()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_NEXT); }
+_AFXDBCORE_INLINE void CRecordset::MovePrev()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_PRIOR); }
+_AFXDBCORE_INLINE void CRecordset::MoveFirst()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_FIRST); }
+_AFXDBCORE_INLINE void CRecordset::MoveLast()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_LAST); }
+_AFXDBCORE_INLINE void CRecordset::SetAbsolutePosition(long nRows)
+ { ASSERT(IsOpen()); Move(nRows, SQL_FETCH_ABSOLUTE); }
+
+#endif //_AFXDBCORE_INLINE
+
+#ifdef _AFXDBRFX_INLINE
+
+_AFXDBRFX_INLINE void CFieldExchange::SetFieldType(UINT nFieldType)
+ { ASSERT(nFieldType == outputColumn ||
+ nFieldType == inputParam ||
+ nFieldType == outputParam ||
+ nFieldType == inoutParam);
+ m_nFieldType = nFieldType; }
+
+#endif //_AFXDBRFX_INLINE
+
+#ifdef _AFXDBVIEW_INLINE
+
+// CRecordView inlines
+_AFXDBVIEW_INLINE void CRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.rc b/public/sdk/inc/mfc42/afxdb.rc
new file mode 100644
index 000000000..ae92138d7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Attempt to connect to datasource failed"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset supports forward movement only."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Attempt to open a table failed - there were no columns to retrieve were specified."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Unexpected column data types were returned from query."
+ AFX_IDP_SQL_ILLEGAL_MODE "Attempt to Update or Delete failed."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Multiple rows were updated."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation failed, no current record."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "No rows were affected by the update or delete operation."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset is read-only"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC driver doesn't support MFC LongBinary data model."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Attempt to load required component ODBC32.DLL failed."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC driver does not support dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC static cursors required for snapshot support."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Attempt to scroll past end or before beginning of data."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets not supported by ODBC driver."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 compliant driver required."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positioned updates not supported by ODBC driver."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Requested lock mode is not supported."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Data truncated."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error retrieving record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "A required ODBC entry point was not found. Make sure ODBC is installed correctly."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Update or Delete failed."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamic cursors not supported by ODBC driver."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Unable to initialize DAO/Jet db engine."
+ AFX_IDP_DAO_DFX_BIND
+ "Bad DFX value parameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef or QueryDef not Open."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows failed. Not enough memory allocated for row."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows binding error. Probably caused by datatype mismatch."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows failed. The requested column is not a member of this recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/afxdb_.h b/public/sdk/inc/mfc42/afxdb_.h
new file mode 100644
index 000000000..b9201a989
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb_.h
@@ -0,0 +1,72 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXDB.H & AFXDAO.H)
+
+#ifndef __AFXDB__H__
+#define __AFXDB__H__
+
+//////////////////////////////////////////////////////////////////////////////
+// Recordset Field exchange for ODBC & DAO classes (RFX_ and DFX_)
+
+#define AFX_RFX_SHORT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_INT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_LONG_PSEUDO_NULL (0x4a4d4120L)
+#define AFX_RFX_BYTE_PSEUDO_NULL 255
+#define AFX_RFX_SINGLE_PSEUDO_NULL (-9.123e19f)
+#define AFX_RFX_DOUBLE_PSEUDO_NULL (-9.123e19)
+#define AFX_RFX_BOOL_PSEUDO_NULL 2
+#define AFX_RFX_DATE_PSEUDO_NULL CTime(0)
+#define AFX_RFX_TIMESTAMP_PSEUDO_NULL 99
+
+#define AFX_RFX_NO_TYPE 0
+#define AFX_RFX_BOOL 1
+#define AFX_RFX_BYTE 2
+#define AFX_RFX_INT 3
+#define AFX_RFX_LONG 4
+#define AFX_RFX_SINGLE 6
+#define AFX_RFX_DOUBLE 7
+#define AFX_RFX_DATE 8
+#define AFX_RFX_BINARY 9
+#define AFX_RFX_TEXT 10
+#define AFX_RFX_LONGBINARY 11
+#define AFX_RFX_SHORT 12
+#define AFX_RFX_CURRENCY 13
+#define AFX_RFX_OLEDATETIME 14
+#define AFX_RFX_TIMESTAMP 15
+
+//////////////////////////////////////////////////////////////////////////////
+// CLongBinary - a Long (generally > 32k in length) Binary object
+
+class CLongBinary : public CObject
+{
+ DECLARE_DYNAMIC(CLongBinary)
+
+// Constructors
+public:
+ CLongBinary();
+
+// Attributes
+ HGLOBAL m_hData;
+ DWORD m_dwDataLength;
+
+// Implementation
+public:
+ virtual ~CLongBinary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // __AFXDB__H__
diff --git a/public/sdk/inc/mfc42/afxdd_.h b/public/sdk/inc/mfc42/afxdd_.h
new file mode 100644
index 000000000..43ea703a6
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdd_.h
@@ -0,0 +1,64 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Exchange routines
+
+class COleCurrency; // forward reference (see afxdisp.h)
+class COleDateTime; // forward reference (see afxdisp.h)
+
+// simple text operations
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, BYTE& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, short& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, UINT& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, DWORD& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, float& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleCurrency& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleDateTime& value);
+
+// special control types
+void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_LBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_LBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_CBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_LBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Scroll(CDataExchange* pDX, int nIDC, int& value);
+
+// for getting access to the actual controls
+void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Validation routines
+
+// range - value must be >= minVal and <= maxVal
+// NOTE: you will require casts for 'minVal' and 'maxVal' to use the
+// UINT, DWORD or float types
+void AFXAPI DDV_MinMaxByte(CDataExchange* pDX, BYTE value, BYTE minVal, BYTE maxVal);
+void AFXAPI DDV_MinMaxShort(CDataExchange* pDX, short value, short minVal, short maxVal);
+void AFXAPI DDV_MinMaxInt(CDataExchange* pDX, int value, int minVal, int maxVal);
+void AFXAPI DDV_MinMaxLong(CDataExchange* pDX, long value, long minVal, long maxVal);
+void AFXAPI DDV_MinMaxUInt(CDataExchange* pDX, UINT value, UINT minVal, UINT maxVal);
+void AFXAPI DDV_MinMaxDWord(CDataExchange* pDX, DWORD value, DWORD minVal, DWORD maxVal);
+void AFXAPI DDV_MinMaxFloat(CDataExchange* pDX, float const& value, float minVal, float maxVal);
+void AFXAPI DDV_MinMaxDouble(CDataExchange* pDX, double const& value, double minVal, double maxVal);
+
+// number of characters
+void AFXAPI DDV_MaxChars(CDataExchange* pDX, CString const& value, int nChars);
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdisp.h b/public/sdk/inc/mfc42/afxdisp.h
new file mode 100644
index 000000000..afed8c8d0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdisp.h
@@ -0,0 +1,1413 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDISP_H__
+#define __AFXDISP_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+// include necessary OLE headers
+#ifndef _OBJBASE_H_
+ #include <objbase.h>
+#endif
+#ifndef _OLEAUTO_H_
+ #include <oleauto.h>
+#endif
+#ifndef _OLECTL_H_
+ #include <olectl.h>
+#endif
+//REVIEW: This header has no symbol to prevent repeated includes
+#include <olectlid.h>
+#ifndef __ocidl_h__
+ #include <ocidl.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco42d.lib")
+ #else
+ #pragma comment(lib, "mfco42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "oledlg.lib")
+#pragma comment(lib, "ole32.lib")
+#pragma comment(lib, "olepro32.lib")
+#pragma comment(lib, "oleaut32.lib")
+#pragma comment(lib, "uuid.lib")
+#pragma comment(lib, "urlmon.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfco42pd.lib")
+ #else
+ #pragma comment(lib, "mfco42p.lib")
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #pragma comment(lib, "ole2uid.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #pragma comment(lib, "ole2ui.lib")
+ #endif
+ #pragma comment(linker, "/macres:ole2ui.rsc")
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "oledlgd.lib")
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "oledlg.lib")
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDISP - MFC IDispatch & ClassFactory support
+
+// Classes declared in this file
+
+//CException
+ class COleException; // caught by client or server
+ class COleDispatchException; // special exception for IDispatch calls
+
+//CCmdTarget
+ class COleObjectFactory; // glue for IClassFactory -> runtime class
+ class COleTemplateServer; // server documents using CDocTemplate
+
+class COleDispatchDriver; // helper class to call IDispatch
+
+class COleVariant; // OLE VARIANT wrapper
+class COleCurrency; // Based on OLE CY
+class COleDateTime; // Based on OLE DATE
+class COleDateTimeSpan; // Based on a double
+class COleSafeArray; // Based on OLE VARIANT
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE COM (Component Object Model) implementation infrastructure
+// - data driven QueryInterface
+// - standard implementation of aggregate AddRef and Release
+// (see CCmdTarget in AFXWIN.H for more information)
+
+#define METHOD_PROLOGUE(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+
+#else
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ METHOD_PROLOGUE(theClass, localClass) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ METHOD_PROLOGUE_(theClass, localClass) \
+
+#endif
+
+// Provided only for compatibility with CDK 1.x
+#define METHOD_MANAGE_STATE(theClass, localClass) \
+ METHOD_PROLOGUE_EX(theClass, localClass) \
+
+#define BEGIN_INTERFACE_PART(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+ STDMETHOD_(ULONG, AddRef)(); \
+ STDMETHOD_(ULONG, Release)(); \
+ STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+
+#else
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ BEGIN_INTERFACE_PART(localClass, baseClass) \
+
+#endif
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define INIT_INTERFACE_PART(theClass, localClass) \
+ size_t m_nOffset; \
+ INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); } \
+
+#else
+#define INIT_INTERFACE_PART(theClass, localClass)
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass)
+
+#endif
+
+// Note: Inserts the rest of OLE functionality between these two macros,
+// depending upon the interface that is being implemented. It is not
+// necessary to include AddRef, Release, and QueryInterface since those
+// member functions are declared by the macro.
+
+#define END_INTERFACE_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass; \
+
+#ifdef _AFXDLL
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* PASCAL theClass::_GetBaseInterfaceMap() \
+ { return &theBase::interfaceMap; } \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theClass::_GetBaseInterfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#else
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theBase::interfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#endif
+
+#define INTERFACE_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define INTERFACE_AGGREGATE(theClass, theAggr) \
+ { NULL, offsetof(theClass, theAggr) }, \
+
+#define END_INTERFACE_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// COleException - unexpected or rare OLE error returned
+
+class COleException : public CException
+{
+ DECLARE_DYNAMIC(COleException)
+
+public:
+ SCODE m_sc;
+ static SCODE PASCAL Process(const CException* pAnyException);
+
+// Implementation (use AfxThrowOleException to create)
+public:
+ COleException();
+ virtual ~COleException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+void AFXAPI AfxThrowOleException(SCODE sc);
+
+/////////////////////////////////////////////////////////////////////////////
+// IDispatch specific exception
+
+class COleDispatchException : public CException
+{
+ DECLARE_DYNAMIC(COleDispatchException)
+
+public:
+// Attributes
+ WORD m_wCode; // error code (specific to IDispatch implementation)
+ CString m_strDescription; // human readable description of the error
+ DWORD m_dwHelpContext; // help context for error
+
+ // usually empty in application which creates it (eg. servers)
+ CString m_strHelpFile; // help file to use with m_dwHelpContext
+ CString m_strSource; // source of the error (name of server)
+
+// Implementation
+public:
+ COleDispatchException(LPCTSTR lpszDescription, UINT nHelpID, WORD wCode);
+ virtual ~COleDispatchException();
+ static void PASCAL Process(
+ EXCEPINFO* pInfo, const CException* pAnyException);
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+ SCODE m_scError; // SCODE describing the error
+};
+
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, LPCTSTR lpszDescription,
+ UINT nHelpID = 0);
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, UINT nDescriptionID,
+ UINT nHelpID = (UINT)-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for CCmdTarget IDispatchable classes
+
+#ifdef _AFXDLL
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* PASCAL theClass::_GetBaseDispatchMap() \
+ { return &baseClass::dispatchMap; } \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &theClass::_GetBaseDispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount, &theClass::_dwStockPropMask }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ DWORD theClass::_dwStockPropMask = (DWORD)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#else
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &baseClass::dispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount, &theClass::_dwStockPropMask }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ DWORD theClass::_dwStockPropMask = (DWORD)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#endif
+
+#define END_DISPATCH_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom } }; \
+
+// parameter types: by value VTs
+#define VTS_I2 "\x02" // a 'short'
+#define VTS_I4 "\x03" // a 'long'
+#define VTS_R4 "\x04" // a 'float'
+#define VTS_R8 "\x05" // a 'double'
+#define VTS_CY "\x06" // a 'CY' or 'CY*'
+#define VTS_DATE "\x07" // a 'DATE'
+#define VTS_WBSTR "\x08" // an 'LPCOLESTR'
+#define VTS_DISPATCH "\x09" // an 'IDispatch*'
+#define VTS_SCODE "\x0A" // an 'SCODE'
+#define VTS_BOOL "\x0B" // a 'BOOL'
+#define VTS_VARIANT "\x0C" // a 'const VARIANT&' or 'VARIANT*'
+#define VTS_UNKNOWN "\x0D" // an 'IUnknown*'
+#if defined(_UNICODE) || defined(OLE2ANSI)
+ #define VTS_BSTR VTS_WBSTR// an 'LPCOLESTR'
+ #define VT_BSTRT VT_BSTR
+#else
+ #define VTS_BSTR "\x0E" // an 'LPCSTR'
+ #define VT_BSTRA 14
+ #define VT_BSTRT VT_BSTRA
+#endif
+
+// parameter types: by reference VTs
+#define VTS_PI2 "\x42" // a 'short*'
+#define VTS_PI4 "\x43" // a 'long*'
+#define VTS_PR4 "\x44" // a 'float*'
+#define VTS_PR8 "\x45" // a 'double*'
+#define VTS_PCY "\x46" // a 'CY*'
+#define VTS_PDATE "\x47" // a 'DATE*'
+#define VTS_PBSTR "\x48" // a 'BSTR*'
+#define VTS_PDISPATCH "\x49" // an 'IDispatch**'
+#define VTS_PSCODE "\x4A" // an 'SCODE*'
+#define VTS_PBOOL "\x4B" // a 'VARIANT_BOOL*'
+#define VTS_PVARIANT "\x4C" // a 'VARIANT*'
+#define VTS_PUNKNOWN "\x4D" // an 'IUnknown**'
+
+// special VT_ and VTS_ values
+#define VTS_NONE NULL // used for members with 0 params
+#define VT_MFCVALUE 0xFFF // special value for DISPID_VALUE
+#define VT_MFCBYREF 0x40 // indicates VT_BYREF type
+#define VT_MFCMARKER 0xFF // delimits named parameters (INTERNAL USE)
+
+// variant handling (use V_BSTRT when you have ANSI BSTRs, as in DAO)
+#ifndef _UNICODE
+ #define V_BSTRT(b) (LPSTR)V_BSTR(b)
+#else
+ #define V_BSTRT(b) V_BSTR(b)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE control parameter types
+
+#define VTS_COLOR VTS_I4 // OLE_COLOR
+#define VTS_XPOS_PIXELS VTS_I4 // OLE_XPOS_PIXELS
+#define VTS_YPOS_PIXELS VTS_I4 // OLE_YPOS_PIXELS
+#define VTS_XSIZE_PIXELS VTS_I4 // OLE_XSIZE_PIXELS
+#define VTS_YSIZE_PIXELS VTS_I4 // OLE_YSIZE_PIXELS
+#define VTS_XPOS_HIMETRIC VTS_I4 // OLE_XPOS_HIMETRIC
+#define VTS_YPOS_HIMETRIC VTS_I4 // OLE_YPOS_HIMETRIC
+#define VTS_XSIZE_HIMETRIC VTS_I4 // OLE_XSIZE_HIMETRIC
+#define VTS_YSIZE_HIMETRIC VTS_I4 // OLE_YSIZE_HIMETRIC
+#define VTS_TRISTATE VTS_I2 // OLE_TRISTATE
+#define VTS_OPTEXCLUSIVE VTS_BOOL // OLE_OPTEXCLUSIVE
+
+#define VTS_PCOLOR VTS_PI4 // OLE_COLOR*
+#define VTS_PXPOS_PIXELS VTS_PI4 // OLE_XPOS_PIXELS*
+#define VTS_PYPOS_PIXELS VTS_PI4 // OLE_YPOS_PIXELS*
+#define VTS_PXSIZE_PIXELS VTS_PI4 // OLE_XSIZE_PIXELS*
+#define VTS_PYSIZE_PIXELS VTS_PI4 // OLE_YSIZE_PIXELS*
+#define VTS_PXPOS_HIMETRIC VTS_PI4 // OLE_XPOS_HIMETRIC*
+#define VTS_PYPOS_HIMETRIC VTS_PI4 // OLE_YPOS_HIMETRIC*
+#define VTS_PXSIZE_HIMETRIC VTS_PI4 // OLE_XSIZE_HIMETRIC*
+#define VTS_PYSIZE_HIMETRIC VTS_PI4 // OLE_YSIZE_HIMETRIC*
+#define VTS_PTRISTATE VTS_PI2 // OLE_TRISTATE*
+#define VTS_POPTEXCLUSIVE VTS_PBOOL // OLE_OPTEXCLUSIVE*
+
+#define VTS_FONT VTS_DISPATCH // IFontDispatch*
+#define VTS_PICTURE VTS_DISPATCH // IPictureDispatch*
+
+#define VTS_HANDLE VTS_I4 // OLE_HANDLE
+#define VTS_PHANDLE VTS_PI4 // OLE_HANDLE*
+
+// these DISP_ macros cause the framework to generate the DISPID
+#define DISP_FUNCTION(theClass, szExternalName, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY(theClass, szExternalName, memberName, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY(theClass, szExternalName, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX(theClass, szExternalName, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM(theClass, szExternalName, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+// these DISP_ macros allow the app to determine the DISPID
+#define DISP_FUNCTION_ID(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY_ID(theClass, szExternalName, dispid, memberName, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY_ID(theClass, szExternalName, dispid, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+// the DISP_DEFVALUE is a special case macro that creates an alias for DISPID_VALUE
+#define DISP_DEFVALUE(theClass, szExternalName) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, VT_MFCVALUE, \
+ (AFX_PMSG)0, (AFX_PMSG)0, 0, afxDispCustom }, \
+
+#define DISP_DEFVALUE_ID(theClass, dispid) \
+ { NULL, dispid, NULL, VT_MFCVALUE, (AFX_PMSG)0, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for creating "creatable" automation classes.
+
+#define DECLARE_OLECREATE(class_name) \
+public: \
+ static AFX_DATA COleObjectFactory factory; \
+ static AFX_DATA const GUID guid; \
+
+#define IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \
+ RUNTIME_CLASS(class_name), FALSE, _T(external_name)); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper class for driving IDispatch
+
+class COleDispatchDriver
+{
+// Constructors
+public:
+ COleDispatchDriver();
+ COleDispatchDriver(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ COleDispatchDriver(const COleDispatchDriver& dispatchSrc);
+
+// Attributes
+ LPDISPATCH m_lpDispatch;
+ BOOL m_bAutoRelease;
+
+// Operations
+ BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
+ BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);
+
+ void AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ LPDISPATCH DetachDispatch();
+ // detach and get ownership of m_lpDispatch
+ void ReleaseDispatch();
+
+ // helpers for IDispatch::Invoke
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+
+ // special operators
+ operator LPDISPATCH();
+ const COleDispatchDriver& operator=(const COleDispatchDriver& dispatchSrc);
+
+// Implementation
+public:
+ ~COleDispatchDriver();
+ void InvokeHelperV(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
+ void* pvRet, const BYTE* pbParamInfo, va_list argList);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Class Factory implementation (binds OLE class factory -> runtime class)
+// (all specific class factories derive from this class factory)
+
+class COleObjectFactory : public CCmdTarget
+{
+ DECLARE_DYNAMIC(COleObjectFactory)
+
+// Construction
+public:
+ COleObjectFactory(REFCLSID clsid, CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance, LPCTSTR lpszProgID);
+
+// Attributes
+ virtual BOOL IsRegistered() const;
+ REFCLSID GetClassID() const;
+
+// Operations
+ virtual BOOL Register();
+ void Revoke();
+ void UpdateRegistry(LPCTSTR lpszProgID = NULL);
+ // default uses m_lpszProgID if not NULL
+ BOOL IsLicenseValid();
+
+ static BOOL PASCAL RegisterAll();
+ static void PASCAL RevokeAll();
+ static BOOL PASCAL UpdateRegistryAll(BOOL bRegister = TRUE);
+
+// Overridables
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ virtual BOOL UpdateRegistry(BOOL bRegister);
+ virtual BOOL VerifyUserLicense();
+ virtual BOOL GetLicenseKey(DWORD dwReserved, BSTR* pbstrKey);
+ virtual BOOL VerifyLicenseKey(BSTR bstrKey);
+
+// Implementation
+public:
+ virtual ~COleObjectFactory();
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ COleObjectFactory* m_pNextFactory; // list of factories maintained
+
+protected:
+ DWORD m_dwRegister; // registry identifier
+ CLSID m_clsid; // registered class ID
+ CRuntimeClass* m_pRuntimeClass; // runtime class of CCmdTarget derivative
+ BOOL m_bMultiInstance; // multiple instance?
+ LPCTSTR m_lpszProgID; // human readable class ID
+ BYTE m_bLicenseChecked;
+ BYTE m_bLicenseValid;
+ BYTE m_bRegistered; // is currently registered w/ system
+ BYTE m_bReserved; // reserved for future use
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ClassFactory, IClassFactory2)
+ INIT_INTERFACE_PART(COleObjectFactory, ClassFactory)
+ STDMETHOD(CreateInstance)(LPUNKNOWN, REFIID, LPVOID*);
+ STDMETHOD(LockServer)(BOOL);
+ STDMETHOD(GetLicInfo)(LPLICINFO);
+ STDMETHOD(RequestLicKey)(DWORD, BSTR*);
+ STDMETHOD(CreateInstanceLic)(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR,
+ LPVOID*);
+ END_INTERFACE_PART(ClassFactory)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend SCODE AFXAPI AfxDllGetClassObject(REFCLSID, REFIID, LPVOID*);
+ friend SCODE STDAPICALLTYPE DllGetClassObject(REFCLSID, REFIID, LPVOID*);
+};
+
+// Define COleObjectFactoryEx for compatibility with old CDK
+#define COleObjectFactoryEx COleObjectFactory
+
+//////////////////////////////////////////////////////////////////////////////
+// COleTemplateServer - COleObjectFactory using CDocTemplates
+
+// This enumeration is used in AfxOleRegisterServerClass to pick the
+// correct registration entries given the application type.
+enum OLE_APPTYPE
+{
+ OAT_INPLACE_SERVER = 0, // server has full server user-interface
+ OAT_SERVER = 1, // server supports only embedding
+ OAT_CONTAINER = 2, // container supports links to embeddings
+ OAT_DISPATCH_OBJECT = 3, // IDispatch capable object
+ OAT_DOC_OBJECT_SERVER = 4, // sever supports DocObject embedding
+ OAT_DOC_OBJECT_CONTAINER =5,// container supports DocObject clients
+};
+
+class COleTemplateServer : public COleObjectFactory
+{
+// Constructors
+public:
+ COleTemplateServer();
+
+// Operations
+ void ConnectTemplate(REFCLSID clsid, CDocTemplate* pDocTemplate,
+ BOOL bMultiInstance);
+ // set doc template after creating it in InitInstance
+ void UpdateRegistry(OLE_APPTYPE nAppType = OAT_INPLACE_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL);
+ // may want to UpdateRegistry if not run with /Embedded
+ BOOL Register();
+
+// Implementation
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ CDocTemplate* m_pDocTemplate;
+
+private:
+ void UpdateRegistry(LPCTSTR lpszProgID);
+ // hide base class version of UpdateRegistry
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// System registry helpers
+
+// Helper to register server in case of no .REG file loaded
+BOOL AFXAPI AfxOleRegisterServerClass(
+ REFCLSID clsid, LPCTSTR lpszClassName,
+ LPCTSTR lpszShortTypeName, LPCTSTR lpszLongTypeName,
+ OLE_APPTYPE nAppType = OAT_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL,
+ int nIconIndex = 0, LPCTSTR lpszLocalFilterName = NULL);
+
+// AfxOleRegisterHelper is a worker function used by AfxOleRegisterServerClass
+// (available for advanced registry work)
+BOOL AFXAPI AfxOleRegisterHelper(LPCTSTR const* rglpszRegister,
+ LPCTSTR const* rglpszSymbols, int nSymbols, BOOL bReplace,
+ HKEY hKeyRoot = ((HKEY)0x80000000)); // HKEY_CLASSES_ROOT
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection maps
+
+#define BEGIN_CONNECTION_PART(theClass, localClass) \
+ class X##localClass : public CConnectionPoint \
+ { \
+ public: \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); }
+
+#define CONNECTION_IID(iid) \
+ REFIID GetIID() { return iid; }
+
+#define END_CONNECTION_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass;
+
+#ifdef _AFXDLL
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* PASCAL theClass::_GetBaseConnectionMap() \
+ { return &theBase::connectionMap; } \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &theClass::_GetBaseConnectionMap, &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#else
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &(theBase::connectionMap), &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#endif
+
+#define CONNECTION_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define END_CONNECTION_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// CConnectionPoint
+
+class CConnectionPoint : public CCmdTarget
+{
+// Constructors
+public:
+ CConnectionPoint();
+
+// Operations
+ POSITION GetStartPosition() const;
+ LPUNKNOWN GetNextConnection(POSITION& pos) const;
+ const CPtrArray* GetConnections(); // obsolete
+
+// Overridables
+ virtual LPCONNECTIONPOINTCONTAINER GetContainer();
+ virtual REFIID GetIID() = 0;
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual int GetMaxConnections();
+ virtual LPUNKNOWN QuerySinkInterface(LPUNKNOWN pUnkSink);
+
+// Implementation
+ ~CConnectionPoint();
+ void CreateConnectionArray();
+ int GetConnectionCount();
+
+protected:
+ size_t m_nOffset;
+ LPUNKNOWN m_pUnkFirstConnection;
+ CPtrArray* m_pConnections;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ConnPt, IConnectionPoint)
+ INIT_INTERFACE_PART(CConnectionPoint, ConnPt)
+ STDMETHOD(GetConnectionInterface)(IID* pIID);
+ STDMETHOD(GetConnectionPointContainer)(
+ IConnectionPointContainer** ppCPC);
+ STDMETHOD(Advise)(LPUNKNOWN pUnkSink, DWORD* pdwCookie);
+ STDMETHOD(Unadvise)(DWORD dwCookie);
+ STDMETHOD(EnumConnections)(LPENUMCONNECTIONS* ppEnum);
+ END_INTERFACE_PART(ConnPt)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// EventSink Maps
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+#ifdef _AFXDLL
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* PASCAL theClass::_GetBaseEventSinkMap() \
+ { return &baseClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &theClass::_GetBaseEventSinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#else
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &baseClass::eventsinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#endif
+
+#define END_EVENTSINK_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom, \
+ (UINT)-1, 0 } }; \
+
+#define ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, idFirst, idLast }, \
+
+#define ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))&pfnChanged, \
+ 1, afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT, BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT))&pfnChanged, \
+ 1, afxDispCustom, idFirst, idLast }, \
+
+#define ON_DSCNOTIFY(theClass, id, pfnNotify) \
+ { _T(""), DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(DSCSTATE, DSCREASON, BOOL*))&pfnNotify, (AFX_PMSG)0, \
+ 1, afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_DSCNOTIFY_RANGE(theClass, idFirst, idLast, pfnNotify) \
+ { _T(""), DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT, DSCSTATE, DSCREASON, BOOL*))&pfnNotify, (AFX_PMSG)0, \
+ 1, afxDispCustom, idFirst, idLast }, \
+
+#define ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))&pfnChanged, \
+ 1, afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type library information
+
+CTypeLibCache* AFXAPI AfxGetTypeLibCache(const GUID* pTypeLibID);
+
+#define DECLARE_OLETYPELIB(class_name) \
+ protected: \
+ virtual UINT GetTypeInfoCount(); \
+ virtual HRESULT GetTypeLib(LCID, LPTYPELIB*); \
+ virtual CTypeLibCache* GetTypeLibCache(); \
+
+#define IMPLEMENT_OLETYPELIB(class_name, tlid, wVerMajor, wVerMinor) \
+ UINT class_name::GetTypeInfoCount() \
+ { return 1; } \
+ HRESULT class_name::GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib) \
+ { return ::LoadRegTypeLib(tlid, wVerMajor, wVerMinor, lcid, ppTypeLib); } \
+ CTypeLibCache* class_name::GetTypeLibCache() \
+ { AFX_MANAGE_STATE(m_pModuleState); return AfxGetTypeLibCache(&tlid); } \
+
+/////////////////////////////////////////////////////////////////////////////
+// Init & Term helpers
+
+BOOL AFXAPI AfxOleInit();
+void AFXAPI AfxOleTerm(BOOL bJustRevoke = FALSE);
+void AFXAPI AfxOleTermOrFreeLib(BOOL bTerm = TRUE, BOOL bJustRevoke = FALSE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Memory management helpers (for OLE task allocator memory)
+
+#define AfxAllocTaskMem(nSize) CoTaskMemAlloc(nSize)
+#define AfxFreeTaskMem(p) CoTaskMemFree(p)
+
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCWSTR lpszString);
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCWSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCSTR lpszString);
+
+#ifdef _UNICODE
+ #define AfxAllocTaskString(x) AfxAllocTaskWideString(x)
+#else
+ #define AfxAllocTaskString(x) AfxAllocTaskAnsiString(x)
+#endif
+
+#ifdef OLE2ANSI
+ #define AfxAllocTaskOleString(x) AfxAllocTaskAnsiString(x)
+#else
+ #define AfxAllocTaskOleString(x) AfxAllocTaskWideString(x)
+#endif
+
+HRESULT AFXAPI AfxGetClassIDFromString(LPCTSTR lpsz, LPCLSID lpClsID);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special in-proc server APIs
+
+SCODE AFXAPI AfxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
+SCODE AFXAPI AfxDllCanUnloadNow(void);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class helpers
+
+#define AFX_OLE_TRUE (-1)
+#define AFX_OLE_FALSE 0
+
+class CLongBinary; // forward reference (see afxdb_.h)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class - wraps VARIANT types
+
+typedef const VARIANT* LPCVARIANT;
+
+class COleVariant : public tagVARIANT
+{
+// Constructors
+public:
+ COleVariant();
+
+ COleVariant(const VARIANT& varSrc);
+ COleVariant(LPCVARIANT pSrc);
+ COleVariant(const COleVariant& varSrc);
+
+ COleVariant(LPCTSTR lpszSrc);
+ COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI string
+ COleVariant(CString& strSrc);
+
+ COleVariant(BYTE nSrc);
+ COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
+ COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);
+ COleVariant(const COleCurrency& curSrc);
+
+ COleVariant(float fltSrc);
+ COleVariant(double dblSrc);
+ COleVariant(const COleDateTime& timeSrc);
+
+ COleVariant(const CByteArray& arrSrc);
+ COleVariant(const CLongBinary& lbSrc);
+
+// Operations
+public:
+ void Clear();
+ void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
+ void Attach(VARIANT& varSrc);
+ VARIANT Detach();
+
+ BOOL operator==(const VARIANT& varSrc) const;
+ BOOL operator==(LPCVARIANT pSrc) const;
+
+ const COleVariant& operator=(const VARIANT& varSrc);
+ const COleVariant& operator=(LPCVARIANT pSrc);
+ const COleVariant& operator=(const COleVariant& varSrc);
+
+ const COleVariant& operator=(const LPCTSTR lpszSrc);
+ const COleVariant& operator=(const CString& strSrc);
+
+ const COleVariant& operator=(BYTE nSrc);
+ const COleVariant& operator=(short nSrc);
+ const COleVariant& operator=(long lSrc);
+ const COleVariant& operator=(const COleCurrency& curSrc);
+
+ const COleVariant& operator=(float fltSrc);
+ const COleVariant& operator=(double dblSrc);
+ const COleVariant& operator=(const COleDateTime& dateSrc);
+
+ const COleVariant& operator=(const CByteArray& arrSrc);
+ const COleVariant& operator=(const CLongBinary& lbSrc);
+
+ void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI string
+
+ operator LPVARIANT();
+ operator LPCVARIANT() const;
+
+// Implementation
+public:
+ ~COleVariant();
+};
+
+// COleVariant diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleVariant varSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleVariant varSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleVariant& varSrc);
+
+// Helper for initializing VARIANT structures
+void AFXAPI AfxVariantInit(LPVARIANT pVar);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCurrency class
+
+class COleCurrency
+{
+// Constructors
+public:
+ COleCurrency();
+
+ COleCurrency(CURRENCY cySrc);
+ COleCurrency(const COleCurrency& curSrc);
+ COleCurrency(const VARIANT& varSrc);
+ COleCurrency(long nUnits, long nFractionalUnits);
+
+// Attributes
+public:
+ enum CurrencyStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid currency (overflow, div 0, etc.)
+ null = 2, // Literally has no value
+ };
+
+ CURRENCY m_cur;
+ CurrencyStatus m_status;
+
+ void SetStatus(CurrencyStatus status);
+ CurrencyStatus GetStatus() const;
+
+// Operations
+public:
+ const COleCurrency& operator=(CURRENCY cySrc);
+ const COleCurrency& operator=(const COleCurrency& curSrc);
+ const COleCurrency& operator=(const VARIANT& varSrc);
+
+ BOOL operator==(const COleCurrency& cur) const;
+ BOOL operator!=(const COleCurrency& cur) const;
+ BOOL operator<(const COleCurrency& cur) const;
+ BOOL operator>(const COleCurrency& cur) const;
+ BOOL operator<=(const COleCurrency& cur) const;
+ BOOL operator>=(const COleCurrency& cur) const;
+
+ // Currency math
+ COleCurrency operator+(const COleCurrency& cur) const;
+ COleCurrency operator-(const COleCurrency& cur) const;
+ const COleCurrency& operator+=(const COleCurrency& cur);
+ const COleCurrency& operator-=(const COleCurrency& cur);
+ COleCurrency operator-() const;
+
+ COleCurrency operator*(long nOperand) const;
+ COleCurrency operator/(long nOperand) const;
+ const COleCurrency& operator*=(long nOperand);
+ const COleCurrency& operator/=(long nOperand);
+
+ operator CURRENCY() const;
+
+ // Currency definition
+ void SetCurrency(long nUnits, long nFractionalUnits);
+ BOOL ParseCurrency(LPCTSTR lpszCurrency, DWORD dwFlags = 0,
+ LCID = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+};
+
+// COleCurrency diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleCurrency curSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleCurrency curSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleCurrency& curSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class helpers
+
+#define AFX_OLE_DATETIME_ERROR (-1)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class
+
+class COleDateTime
+{
+// Constructors
+public:
+ static COleDateTime PASCAL GetCurrentTime();
+
+ COleDateTime();
+
+ COleDateTime(const COleDateTime& dateSrc);
+ COleDateTime(const VARIANT& varSrc);
+ COleDateTime(DATE dtSrc);
+
+ COleDateTime(time_t timeSrc);
+ COleDateTime(const SYSTEMTIME& systimeSrc);
+ COleDateTime(const FILETIME& filetimeSrc);
+
+ COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ COleDateTime(WORD wDosDate, WORD wDosTime);
+
+// Attributes
+public:
+ enum DateTimeStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid date (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ DATE m_dt;
+ DateTimeStatus m_status;
+
+ void SetStatus(DateTimeStatus status);
+ DateTimeStatus GetStatus() const;
+
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month (0-31)
+ int GetHour() const; // hour in day (0-23)
+ int GetMinute() const; // minute in hour (0-59)
+ int GetSecond() const; // second in minute (0-59)
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+ int GetDayOfYear() const; // days since start of year, Jan 1 = 1
+
+// Operations
+public:
+ const COleDateTime& operator=(const COleDateTime& dateSrc);
+ const COleDateTime& operator=(const VARIANT& varSrc);
+ const COleDateTime& operator=(DATE dtSrc);
+
+ const COleDateTime& operator=(const time_t& timeSrc);
+ const COleDateTime& operator=(const SYSTEMTIME& systimeSrc);
+ const COleDateTime& operator=(const FILETIME& filetimeSrc);
+
+ BOOL operator==(const COleDateTime& date) const;
+ BOOL operator!=(const COleDateTime& date) const;
+ BOOL operator<(const COleDateTime& date) const;
+ BOOL operator>(const COleDateTime& date) const;
+ BOOL operator<=(const COleDateTime& date) const;
+ BOOL operator>=(const COleDateTime& date) const;
+
+ // DateTime math
+ COleDateTime operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTime operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTime& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTime& operator-=(const COleDateTimeSpan dateSpan);
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator-(const COleDateTime& date) const;
+
+ operator DATE() const;
+
+ BOOL SetDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ BOOL SetDate(int nYear, int nMonth, int nDay);
+ BOOL SetTime(int nHour, int nMin, int nSec);
+ BOOL ParseDateTime(LPCTSTR lpszDate, DWORD dwFlags = 0,
+ LCID lcid = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+ CString Format(LPCTSTR lpszFormat) const;
+ CString Format(UINT nFormatID) const;
+
+// Implementation
+protected:
+ void CheckRange();
+ friend COleDateTimeSpan;
+};
+
+// COleDateTime diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleDateTime dateSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTime dateSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTime& dateSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTimeSpan class
+class COleDateTimeSpan
+{
+// Constructors
+public:
+ COleDateTimeSpan();
+
+ COleDateTimeSpan(double dblSpanSrc);
+ COleDateTimeSpan(const COleDateTimeSpan& dateSpanSrc);
+ COleDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+// Attributes
+public:
+ enum DateTimeSpanStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid span (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ double m_span;
+ DateTimeSpanStatus m_status;
+
+ void SetStatus(DateTimeSpanStatus status);
+ DateTimeSpanStatus GetStatus() const;
+
+ double GetTotalDays() const; // span in days (about -3.65e6 to 3.65e6)
+ double GetTotalHours() const; // span in hours (about -8.77e7 to 8.77e6)
+ double GetTotalMinutes() const; // span in minutes (about -5.26e9 to 5.26e9)
+ double GetTotalSeconds() const; // span in seconds (about -3.16e11 to 3.16e11)
+
+ long GetDays() const; // component days in span
+ long GetHours() const; // component hours in span (-23 to 23)
+ long GetMinutes() const; // component minutes in span (-59 to 59)
+ long GetSeconds() const; // component seconds in span (-59 to 59)
+
+// Operations
+public:
+ const COleDateTimeSpan& operator=(double dblSpanSrc);
+ const COleDateTimeSpan& operator=(const COleDateTimeSpan& dateSpanSrc);
+
+ BOOL operator==(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator!=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>=(const COleDateTimeSpan& dateSpan) const;
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTimeSpan operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTimeSpan& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTimeSpan& operator-=(const COleDateTimeSpan dateSpan);
+ COleDateTimeSpan operator-() const;
+
+ operator double() const;
+
+ void SetDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+ // formatting
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+// Implementation
+public:
+ void CheckRange();
+ friend COleDateTime;
+};
+
+// COleDateTimeSpan diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc,COleDateTimeSpan dateSpanSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTimeSpan dateSpanSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTimeSpan& dateSpanSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper for initializing COleSafeArray
+void AFXAPI AfxSafeArrayInit(COleSafeArray* psa);
+
+/////////////////////////////////////////////////////////////////////////////
+// CSafeArray class
+
+typedef const SAFEARRAY* LPCSAFEARRAY;
+
+class COleSafeArray : public tagVARIANT
+{
+//Constructors
+public:
+ COleSafeArray();
+ COleSafeArray(const SAFEARRAY& saSrc, VARTYPE vtSrc);
+ COleSafeArray(LPCSAFEARRAY pSrc, VARTYPE vtSrc);
+ COleSafeArray(const COleSafeArray& saSrc);
+ COleSafeArray(const VARIANT& varSrc);
+ COleSafeArray(LPCVARIANT pSrc);
+ COleSafeArray(const COleVariant& varSrc);
+
+// Operations
+public:
+ void Clear();
+ void Attach(VARIANT& varSrc);
+ VARIANT Detach();
+
+ COleSafeArray& operator=(const COleSafeArray& saSrc);
+ COleSafeArray& operator=(const VARIANT& varSrc);
+ COleSafeArray& operator=(LPCVARIANT pSrc);
+ COleSafeArray& operator=(const COleVariant& varSrc);
+
+ BOOL operator==(const SAFEARRAY& saSrc) const;
+ BOOL operator==(LPCSAFEARRAY pSrc) const;
+ BOOL operator==(const COleSafeArray& saSrc) const;
+ BOOL operator==(const VARIANT& varSrc) const;
+ BOOL operator==(LPCVARIANT pSrc) const;
+ BOOL operator==(const COleVariant& varSrc) const;
+
+ operator LPVARIANT();
+ operator LPCVARIANT() const;
+
+ // One dim array helpers
+ void CreateOneDim(VARTYPE vtSrc, DWORD dwElements,
+ void* pvSrcData = NULL, long nLBound = 0);
+ DWORD GetOneDimSize();
+ void ResizeOneDim(DWORD dwElements);
+
+ // Multi dim array helpers
+ void Create(VARTYPE vtSrc, DWORD dwDims, DWORD* rgElements);
+
+ // SafeArray wrapper classes
+ void Create(VARTYPE vtSrc, DWORD dwDims, SAFEARRAYBOUND* rgsabounds);
+ void AccessData(void** ppvData);
+ void UnaccessData();
+ void AllocData();
+ void AllocDescriptor(DWORD dwDims);
+ void Copy(LPSAFEARRAY* ppsa);
+ void GetLBound(DWORD dwDim, long* pLBound);
+ void GetUBound(DWORD dwDim, long* pUBound);
+ void GetElement(long* rgIndices, void* pvData);
+ void PtrOfIndex(long* rgIndices, void** ppvData);
+ void PutElement(long* rgIndices, void* pvData);
+ void Redim(SAFEARRAYBOUND* psaboundNew);
+ void Lock();
+ void Unlock();
+ DWORD GetDim();
+ DWORD GetElemSize();
+ void Destroy();
+ void DestroyData();
+ void DestroyDescriptor();
+
+//Implementation
+public:
+ ~COleSafeArray();
+
+ // Cache info to make element access (operator []) faster
+ DWORD m_dwElementSize;
+ DWORD m_dwDims;
+};
+
+// COleSafeArray diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleSafeArray saSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleSafeArray saSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleSafeArray& saSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// DDX_ functions for OLE controls on dialogs
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+void AFXAPI DDX_OCText(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCTextRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCBool(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCBoolRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCShort(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCShortRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCColor(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCColorRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Function to enable containment of OLE controls
+
+#ifndef _AFX_NO_OCC_SUPPORT
+void AFX_CDECL AfxEnableControlContainer(COccManager* pOccManager=NULL);
+#else
+#define AfxEnableControlContainer()
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDISP_INLINE inline
+#include <afxole.inl>
+#undef _AFXDISP_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdlgs.h b/public/sdk/inc/mfc42/afxdlgs.h
new file mode 100644
index 000000000..af0bfeab2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdlgs.h
@@ -0,0 +1,650 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDLGS_H__
+#define __AFXDLGS_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _INC_COMMDLG
+ #include <commdlg.h> // common dialog APIs
+#endif
+
+// Avoid mapping GetFileTitle to GetFileTitle[A/W]
+#ifdef GetFileTitle
+#undef GetFileTitle
+inline short APIENTRY GetFileTitle(LPCTSTR lpszFile, LPTSTR lpszTitle, WORD cbBuf)
+#ifdef UNICODE
+ { return ::GetFileTitleW(lpszFile, lpszTitle, cbBuf); }
+#else
+ { return ::GetFileTitleA(lpszFile, lpszTitle, cbBuf); }
+#endif
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLGS - MFC Standard dialogs
+
+// Classes declared in this file
+
+ // CDialog
+ class CCommonDialog; // implementation base class
+
+ // modeless dialogs
+ class CFindReplaceDialog; // Find/FindReplace dialog
+
+ // modal dialogs
+ class CFileDialog; // FileOpen/FileSaveAs dialogs
+ class CColorDialog; // Color picker dialog
+ class CFontDialog; // Font chooser dialog
+ class CPrintDialog; // Print/PrintSetup dialogs
+ class CPageSetupDialog; // Page Setup dialog
+
+ // CWnd
+ class CPropertySheet; // implements tabbed dialogs
+
+ // CDialog
+ class CPropertyPage; // Used with CPropertySheet for tabbed dialogs
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommonDialog - base class for all common dialogs
+
+class CCommonDialog : public CDialog
+{
+public:
+ CCommonDialog(CWnd* pParentWnd);
+
+// Implementation
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+ //{{AFX_MSG(CCommonDialog)
+ afx_msg BOOL OnHelpInfo(HELPINFO*);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFileDialog - used for FileOpen... or FileSaveAs...
+
+class CFileDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFileDialog)
+
+public:
+// Attributes
+ OPENFILENAME m_ofn; // open file parameter block
+
+// Constructors
+ CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
+ LPCTSTR lpszDefExt = NULL,
+ LPCTSTR lpszFileName = NULL,
+ DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
+ LPCTSTR lpszFilter = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Helpers for parsing file name after successful return
+ // or during Overridable callbacks if OFN_EXPLORER is set
+ CString GetPathName() const; // return full path and filename
+ CString GetFileName() const; // return only filename
+ CString GetFileExt() const; // return only ext
+ CString GetFileTitle() const; // return file title
+ BOOL GetReadOnlyPref() const; // return TRUE if readonly checked
+
+ // Enumerating multiple file selections
+ POSITION GetStartPosition() const;
+ CString GetNextPathName(POSITION& pos) const;
+
+ // Helpers for custom templates
+ void SetTemplate(UINT nWin3ID, UINT nWin4ID);
+ void SetTemplate(LPCTSTR lpWin3ID, LPCTSTR lpWin4ID);
+
+#ifndef _MAC
+ // Other operations available while the dialog is visible
+ CString GetFolderPath() const; // return full path
+ void SetControlText(int nID, LPCSTR lpsz);
+ void HideControl(int nID);
+ void SetDefExt(LPCSTR lpsz);
+#endif
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual UINT OnShareViolation(LPCTSTR lpszPathName);
+ virtual BOOL OnFileNameOK();
+ virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
+
+ // only called back if OFN_EXPLORER is set
+ virtual void OnInitDone();
+ virtual void OnFileNameChange();
+ virtual void OnFolderChange();
+ virtual void OnTypeChange();
+
+// Implementation
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
+ CString m_strFilter; // filter string
+ // separate fields with '|', terminate with '||\0'
+ TCHAR m_szFileTitle[64]; // contains file title after return
+ TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
+
+ OPENFILENAME* m_pofnTemp;
+
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontDialog - used to select a font
+
+class CFontDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFontDialog)
+
+public:
+// Attributes
+ // font choosing parameter block
+ CHOOSEFONT m_cf;
+
+// Constructors
+ CFontDialog(LPLOGFONT lplfInitial = NULL,
+ DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ CFontDialog(const CHARFORMAT& charformat,
+ DWORD dwFlags = CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#endif
+// Operations
+ virtual int DoModal();
+
+ // Get the selected font (works during DoModal displayed or after)
+ void GetCurrentFont(LPLOGFONT lplf);
+
+ // Helpers for parsing information after successful return
+ CString GetFaceName() const; // return the face name of the font
+ CString GetStyleName() const; // return the style name of the font
+ int GetSize() const; // return the pt size of the font
+ COLORREF GetColor() const; // return the color of the font
+ int GetWeight() const; // return the chosen font weight
+ BOOL IsStrikeOut() const; // return TRUE if strikeout
+ BOOL IsUnderline() const; // return TRUE if underline
+ BOOL IsBold() const; // return TRUE if bold font
+ BOOL IsItalic() const; // return TRUE if italic font
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ void GetCharFormat(CHARFORMAT& cf) const;
+#endif
+
+// Implementation
+ LOGFONT m_lf; // default LOGFONT to store the info
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ DWORD FillInLogFont(const CHARFORMAT& cf);
+#endif
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szStyleName[64]; // contains style name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CColorDialog - used to select a color
+
+class CColorDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CColorDialog)
+
+public:
+// Attributes
+ // color chooser parameter block
+ CHOOSECOLOR m_cc;
+
+// Constructors
+ CColorDialog(COLORREF clrInit = 0, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Set the current color while dialog is displayed
+ void SetCurrentColor(COLORREF clr);
+
+ // Helpers for parsing information after successful return
+ COLORREF GetColor() const;
+ static COLORREF* PASCAL GetSavedCustomColors();
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual BOOL OnColorOK(); // validate color
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ //{{AFX_MSG(CColorDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// for backward compatibility clrSavedCustom is defined as GetSavedCustomColors
+#define clrSavedCustom GetSavedCustomColors()
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+// Page Setup dialog
+
+class CPageSetupDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPageSetupDialog)
+
+public:
+// Attributes
+ PAGESETUPDLG m_psd;
+
+// Constructors
+ CPageSetupDialog(DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
+ CWnd* pParentWnd = NULL);
+
+// Attributes
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC CreatePrinterDC();
+ CSize GetPaperSize() const;
+ void GetMargins(LPRECT lpRectMargins, LPRECT lpRectMinMargins) const;
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual UINT PreDrawPage(WORD wPaper, WORD wFlags, LPPAGESETUPDLG pPSD);
+ virtual UINT OnDrawPage(CDC* pDC, UINT nMessage, LPRECT lpRect);
+
+// Implementation
+protected:
+ static UINT CALLBACK PaintHookProc(HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam);
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrintDialog - used for Print... and PrintSetup...
+
+class CPrintDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPrintDialog)
+
+public:
+// Attributes
+ // print dialog parameter block (note this is a reference)
+ PRINTDLG& m_pd;
+
+// Constructors
+ CPrintDialog(BOOL bPrintSetupOnly,
+ // TRUE for Print Setup, FALSE for Print Dialog
+ DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
+ | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // GetDefaults will not display a dialog but will get
+ // device defaults
+ BOOL GetDefaults();
+
+ // Helpers for parsing information after successful return
+ int GetCopies() const; // num. copies requested
+ BOOL PrintCollate() const; // TRUE if collate checked
+ BOOL PrintSelection() const; // TRUE if printing selection
+ BOOL PrintAll() const; // TRUE if printing all pages
+ BOOL PrintRange() const; // TRUE if printing page range
+ int GetFromPage() const; // starting page if valid
+ int GetToPage() const; // starting page if valid
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC GetPrinterDC() const; // return HDC (caller must delete)
+
+ // This helper creates a DC based on the DEVNAMES and DEVMODE structures.
+ // This DC is returned, but also stored in m_pd.hDC as though it had been
+ // returned by CommDlg. It is assumed that any previously obtained DC
+ // has been/will be deleted by the user. This may be
+ // used without ever invoking the print/print setup dialogs.
+
+ HDC CreatePrinterDC();
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ PRINTDLG m_pdActual; // the Print/Print Setup need to share this
+protected:
+ // The following handle the case of print setup... from the print dialog
+ CPrintDialog(PRINTDLG& pdInit);
+ virtual CPrintDialog* AttachOnSetup();
+
+ //{{AFX_MSG(CPrintDialog)
+ afx_msg void OnPrintSetup();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Find/FindReplace modeless dialogs
+
+class CFindReplaceDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFindReplaceDialog)
+
+public:
+// Attributes
+ FINDREPLACE m_fr;
+
+// Constructors
+ CFindReplaceDialog();
+ // Note: you must allocate these on the heap.
+ // If you do not, you must derive and override PostNcDestroy()
+
+ BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplace
+ LPCTSTR lpszFindWhat,
+ LPCTSTR lpszReplaceWith = NULL,
+ DWORD dwFlags = FR_DOWN,
+ CWnd* pParentWnd = NULL);
+
+ // find/replace parameter block
+ static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
+
+// Operations
+ // Helpers for parsing information after successful return
+ CString GetReplaceString() const;// get replacement string
+ CString GetFindString() const; // get find string
+ BOOL SearchDown() const; // TRUE if search down, FALSE is up
+ BOOL FindNext() const; // TRUE if command is find next
+ BOOL MatchCase() const; // TRUE if matching case
+ BOOL MatchWholeWord() const; // TRUE if matching whole words only
+ BOOL ReplaceCurrent() const; // TRUE if replacing current string
+ BOOL ReplaceAll() const; // TRUE if replacing all occurrences
+ BOOL IsTerminating() const; // TRUE if terminating dialog
+
+// Implementation
+protected:
+ virtual void PostNcDestroy();
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFindWhat[128];
+ TCHAR m_szReplaceWith[128];
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertyPage -- one page of a tabbed dialog
+
+class CPropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(CPropertyPage)
+
+// Construction
+public:
+ CPropertyPage(UINT nIDTemplate, UINT nIDCaption = 0);
+ CPropertyPage(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+ CPropertyPage();
+ void Construct(UINT nIDTemplate, UINT nIDCaption = 0);
+ void Construct(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+
+// Attributes
+ PROPSHEETPAGE m_psp;
+
+// Operations
+ void CancelToClose();
+ void SetModified(BOOL bChanged = TRUE);
+ LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam);
+
+// Overridables
+public:
+ virtual BOOL OnApply();
+ virtual void OnReset();
+ virtual void OnOK();
+ virtual void OnCancel();
+ virtual BOOL OnSetActive();
+ virtual BOOL OnKillActive();
+ virtual BOOL OnQueryCancel();
+
+ virtual LRESULT OnWizardBack();
+ virtual LRESULT OnWizardNext();
+ virtual BOOL OnWizardFinish();
+
+// Implementation
+public:
+ virtual ~CPropertyPage();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EndDialog(int nEndID); // incorrect to call and will assert
+#endif
+
+protected:
+ // private implementation data
+ CString m_strCaption;
+ BOOL m_bFirstSetActive;
+
+ // implementation helpers
+ void CommonConstruct(LPCTSTR lpszTemplateName, UINT nIDCaption);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ virtual BOOL PreTranslateMessage(MSG*);
+ LRESULT MapWizardResult(LRESULT lToMap);
+
+
+ void PreProcessPageTemplate(PROPSHEETPAGE& psp, BOOL bWizard);
+#ifndef _AFX_NO_OCC_SUPPORT
+ void Cleanup();
+ const DLGTEMPLATE* InitDialogInfo(const DLGTEMPLATE* pTemplate);
+#endif
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertySheet;
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertySheet -- a tabbed "dialog" (really a popup-window)
+
+class CTabCtrl; // forward reference (see afxcmn.h)
+
+class CPropertySheet : public CWnd
+{
+ DECLARE_DYNAMIC(CPropertySheet)
+
+// Construction
+public:
+ CPropertySheet();
+ CPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ CPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+
+ // for modeless creation
+ BOOL Create(CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)-1,
+ DWORD dwExStyle = 0);
+ // the default style, expressed by passing -1 as dwStyle, is actually:
+ // WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXT_HELP | WS_VISIBLE
+
+// Attributes
+public:
+ PROPSHEETHEADER m_psh;
+
+ int GetPageCount() const;
+ CPropertyPage* GetActivePage() const;
+ int GetActiveIndex() const;
+ CPropertyPage* GetPage(int nPage) const;
+ int GetPageIndex(CPropertyPage* pPage);
+ BOOL SetActivePage(int nPage);
+ BOOL SetActivePage(CPropertyPage* pPage);
+ void SetTitle(LPCTSTR lpszText, UINT nStyle = 0);
+ CTabCtrl* GetTabControl() const;
+
+ void SetWizardMode();
+ void SetFinishText(LPCTSTR lpszText);
+ void SetWizardButtons(DWORD dwFlags);
+
+// Operations
+public:
+ virtual int DoModal();
+ void AddPage(CPropertyPage* pPage);
+ void RemovePage(CPropertyPage* pPage);
+ void RemovePage(int nPage);
+ void EndDialog(int nEndID); // used to terminate a modal dialog
+ BOOL PressButton(int nButton);
+
+// Implementation
+public:
+ virtual ~CPropertySheet();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ void CommonConstruct(CWnd* pParentWnd, UINT iSelectPage);
+ void EnableStackedTabs(BOOL bStacked);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void BuildPropPageArray();
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnInitDialog();
+ virtual BOOL ContinueModal();
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+protected:
+ CPtrArray m_pages; // array of CPropertyPage pointers
+ CString m_strCaption; // caption of the pseudo-dialog
+ CWnd* m_pParentWnd; // parent window of property sheet
+ BOOL m_bStacked; // EnableStackedTabs sets this
+ BOOL m_bModeless; // TRUE when Create called instead of DoModal
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertySheet)
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM, LPARAM);
+ afx_msg void OnClose();
+ afx_msg void OnSysCommand(UINT nID, LPARAM);
+ afx_msg LRESULT OnSetDefID(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertyPage;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDLGS_INLINE inline
+#include <afxdlgs.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdlgs.inl b/public/sdk/inc/mfc42/afxdlgs.inl
new file mode 100644
index 000000000..e390f474a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdlgs.inl
@@ -0,0 +1,100 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDLGS.H
+
+#ifdef _AFXDLGS_INLINE
+
+_AFXDLGS_INLINE CCommonDialog::CCommonDialog(CWnd* pParentWnd)
+ : CDialog((UINT)0, pParentWnd) { }
+
+_AFXDLGS_INLINE BOOL CFileDialog::GetReadOnlyPref() const
+ { return m_ofn.Flags & OFN_READONLY ? TRUE : FALSE; }
+_AFXDLGS_INLINE void CFileDialog::SetTemplate(UINT nWin3ID, UINT nWin4ID)
+ { SetTemplate(MAKEINTRESOURCE(nWin3ID), MAKEINTRESOURCE(nWin4ID)); }
+_AFXDLGS_INLINE POSITION CFileDialog::GetStartPosition() const
+ { return (POSITION)m_ofn.lpstrFile; }
+_AFXDLGS_INLINE CString CFontDialog::GetFaceName() const
+ { return (LPCTSTR)m_cf.lpLogFont->lfFaceName; }
+_AFXDLGS_INLINE CString CFontDialog::GetStyleName() const
+ { return m_cf.lpszStyle; }
+_AFXDLGS_INLINE int CFontDialog::GetSize() const
+ { return m_cf.iPointSize; }
+_AFXDLGS_INLINE int CFontDialog::GetWeight() const
+ { return (int)m_cf.lpLogFont->lfWeight; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsItalic() const
+ { return m_cf.lpLogFont->lfItalic ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsStrikeOut() const
+ { return m_cf.lpLogFont->lfStrikeOut ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsBold() const
+ { return m_cf.lpLogFont->lfWeight == FW_BOLD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsUnderline() const
+ { return m_cf.lpLogFont->lfUnderline ? TRUE : FALSE; }
+_AFXDLGS_INLINE COLORREF CFontDialog::GetColor() const
+ { return m_cf.rgbColors; }
+_AFXDLGS_INLINE COLORREF CColorDialog::GetColor() const
+ { return m_cc.rgbResult; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintSelection() const
+ { return m_pd.Flags & PD_SELECTION ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintRange() const
+ { return m_pd.Flags & PD_PAGENUMS ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintAll() const
+ { return !PrintRange() && !PrintSelection() ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintCollate() const
+ { return m_pd.Flags & PD_COLLATE ? TRUE : FALSE; }
+_AFXDLGS_INLINE int CPrintDialog::GetFromPage() const
+ { return (PrintRange() ? m_pd.nFromPage :-1); }
+_AFXDLGS_INLINE int CPrintDialog::GetToPage() const
+ { return (PrintRange() ? m_pd.nToPage :-1); }
+_AFXDLGS_INLINE HDC CPrintDialog::GetPrinterDC() const
+ { ASSERT_VALID(this);
+ ASSERT(m_pd.Flags & PD_RETURNDC);
+ return m_pd.hDC; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::IsTerminating() const
+ { return m_fr.Flags & FR_DIALOGTERM ? TRUE : FALSE ; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetReplaceString() const
+ { return m_fr.lpstrReplaceWith; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetFindString() const
+ { return m_fr.lpstrFindWhat; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::SearchDown() const
+ { return m_fr.Flags & FR_DOWN ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::FindNext() const
+ { return m_fr.Flags & FR_FINDNEXT ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchCase() const
+ { return m_fr.Flags & FR_MATCHCASE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchWholeWord() const
+ { return m_fr.Flags & FR_WHOLEWORD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceCurrent() const
+ { return m_fr. Flags & FR_REPLACE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceAll() const
+ { return m_fr.Flags & FR_REPLACEALL ? TRUE : FALSE; }
+
+_AFXDLGS_INLINE CPropertyPage* CPropertySheet::GetPage(int nPage) const
+ { return STATIC_DOWNCAST(CPropertyPage, (CObject*)m_pages[nPage]); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardMode()
+ { m_psh.dwFlags |= PSH_WIZARD; }
+_AFXDLGS_INLINE void CPropertySheet::SetFinishText(LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardButtons(DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETWIZBUTTONS, 0, dwFlags); }
+_AFXDLGS_INLINE CTabCtrl* CPropertySheet::GetTabControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CTabCtrl*)CWnd::FromHandle(
+ (HWND)::SendMessage(m_hWnd, PSM_GETTABCONTROL, 0, 0)); }
+_AFXDLGS_INLINE BOOL CPropertySheet::PressButton(int nButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, PSM_PRESSBUTTON, nButton, 0); }
+
+#ifndef _MAC
+_AFXDLGS_INLINE CSize CPageSetupDialog::GetPaperSize() const
+ { return CSize(m_psd.ptPaperSize.x, m_psd.ptPaperSize.y); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXDLGS_INLINE
diff --git a/public/sdk/inc/mfc42/afxdll_.h b/public/sdk/inc/mfc42/afxdll_.h
new file mode 100644
index 000000000..53292bc40
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdll_.h
@@ -0,0 +1,105 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
+// This file contains MFC library implementation details as well
+// as APIs for writing MFC Extension DLLs.
+// Please refer to Technical Note 033 (TN033) for more details.
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFXDLL
+ #error file must be compiled with _AFXDLL
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFX_EXTENSION_MODULE - special struct used during DLL initialization
+
+struct AFX_EXTENSION_MODULE
+{
+ BOOL bInitialized;
+ HMODULE hModule;
+ HMODULE hResource;
+ CRuntimeClass* pFirstSharedClass;
+ COleObjectFactory* pFirstSharedFactory;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDynLinkLibrary - for implementation of MFC Extension DLLs
+
+class COleObjectFactory;
+
+class CDynLinkLibrary : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDynLinkLibrary)
+public:
+
+// Constructor
+ CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem = FALSE);
+
+// Attributes
+ HMODULE m_hModule;
+ HMODULE m_hResource; // for shared resources
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+#ifndef _AFX_NO_OLE_SUPPORT
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ BOOL m_bSystem; // TRUE only for MFC DLLs
+
+// Implementation
+public:
+ CDynLinkLibrary* m_pNextDLL; // simple singly linked list
+ virtual ~CDynLinkLibrary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+// call in every DLL_PROCESS_ATTACH
+BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE&, HMODULE hMod);
+// call on every DLL_PROCESS_DETACH
+void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE&, BOOL bAll = FALSE);
+
+// special function(s) for stand-alone DLLs (and controls)
+void AFXAPI AfxCoreInitModule();
+#if (defined(_DEBUG) || defined(_MAC)) && !defined(_AFX_MONOLITHIC)
+void AFXAPI AfxOleInitModule();
+void AFXAPI AfxNetInitModule();
+void AFXAPI AfxDbInitModule();
+#else
+#define AfxOleInitModule()
+#define AfxNetInitModule()
+#define AfxDbInitModule()
+#endif
+
+// special functions for loading and freeing MFC extension DLLs
+// (necessary if your app is multithreaded and loads extension
+// DLLs dynamically)
+HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
+BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdllx.h b/public/sdk/inc/mfc42/afxdllx.h
new file mode 100644
index 000000000..01eeba454
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdllx.h
@@ -0,0 +1,68 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLLX.H: Extra header for building an MFC Extension DLL
+//
+// This file is really a source file that you should include in the
+// main source file of your DLL. It must only be included once, and
+// not multiple times (you will get linker errors if it is included
+// multiple times). If you do not use _AFXEXT, it is not required
+// but you may want the feature it provides.
+//
+// Previous versions of 32-bit MFC did not require this file. This version
+// requires this file to support dynamic loading of extension DLLs. In
+// other words, if your application does LoadLibrary on any extension
+// DLL (instead of binding to the DLL at link time), this file is
+// required.
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+// The following symbol used to force inclusion of this module for _AFXEXT
+#if defined(_X86_) || defined(_MAC)
+extern "C" { int _afxForceEXTDLL; }
+#else
+extern "C" { int __afxForceEXTDLL; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// RawDllMain that saves current app class list and factory list
+
+extern "C" BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID);
+extern "C" BOOL (WINAPI* _pRawDllMain)(HINSTANCE, DWORD, LPVOID) = &ExtRawDllMain;
+
+extern "C"
+BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID)
+{
+ if (dwReason == DLL_PROCESS_ATTACH)
+ {
+ // save critical data pointers before running the constructors
+ AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
+ pModuleState->m_pClassInit = pModuleState->m_classList;
+ pModuleState->m_pFactoryInit = pModuleState->m_factoryList;
+ pModuleState->m_classList.m_pHead = NULL;
+ pModuleState->m_factoryList.m_pHead = NULL;
+ }
+ return TRUE; // ok
+}
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdocob.h b/public/sdk/inc/mfc42/afxdocob.h
new file mode 100644
index 000000000..d0ba95726
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdocob.h
@@ -0,0 +1,391 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDOCOB_H__
+#define __AFXDOCOB_H__
+
+//WINBUG: these error codes are needed by MFC's IPrint implementation
+// but aren't available in the SDK headers. Someday, these #define's
+// can be removed.
+
+#ifndef PRINT_E_CANCELLED
+#define PRINT_E_CANCELLED 0x80040160L
+#endif
+#ifndef PRINT_E_NOSUCHPAGE
+#define PRINT_E_NOSUCHPAGE 0x80040161L
+#endif
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __docobj_h__
+ #include <docobj.h> // defines Document Object interfaces
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDOCOB.H - MFC OLE Document Object support
+
+//CCmdUI
+class COleCmdUI;
+
+//CCmdTarg
+class CDocObjectServer;
+
+//COleIPFrameWnd
+class COleDocIPFrameWnd;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCmdUI
+
+class COleCmdUI : public CCmdUI
+{
+public:
+ COleCmdUI(OLECMD* rgCmds, ULONG cCmds, const GUID* m_pGroup);
+ virtual void Enable(BOOL bOn);
+ virtual void SetCheck(int nCheck);
+ virtual void SetText(LPCTSTR lpszText);
+ virtual BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHandler);
+ DWORD m_nCmdTextFlag;
+
+protected:
+ OLECMD* m_rgCmds;
+ const GUID* m_pguidCmdGroup;
+public:
+ CString m_strText;
+
+ friend class CCmdTarget;
+};
+
+
+#define ON_OLECMD(pguid, olecmdid, id) \
+ { pguid, (ULONG)olecmdid, (UINT)id },
+
+#define ON_OLECMD_OPEN() \
+ ON_OLECMD(NULL, OLECMDID_OPEN, ID_FILE_OPEN)
+
+#define ON_OLECMD_NEW() \
+ ON_OLECMD(NULL, OLECMDID_NEW, ID_FILE_NEW)
+
+#define ON_OLECMD_SAVE() \
+ ON_OLECMD(NULL, OLECMDID_SAVE, ID_FILE_SAVE)
+
+#define ON_OLECMD_SAVE_AS() \
+ ON_OLECMD(NULL, OLECMDID_SAVEAS, ID_FILE_SAVE_AS)
+
+#define ON_OLECMD_SAVE_COPY_AS() \
+ ON_OLECMD(NULL, OLECMDID_SAVECOPYAS, ID_FILE_SAVE_COPY_AS)
+
+#define ON_OLECMD_PRINT() \
+ ON_OLECMD(NULL, OLECMDID_PRINT, ID_FILE_PRINT)
+
+#define ON_OLECMD_PRINTPREVIEW() \
+ ON_OLECMD(NULL, OLECMDID_PRINTPREVIEW, ID_FILE_PRINT_PREVIEW)
+
+#define ON_OLECMD_PAGESETUP() \
+ ON_OLECMD(NULL, OLECMDID_PAGESETUP, ID_FILE_PAGE_SETUP)
+
+#define ON_OLECMD_CUT() \
+ ON_OLECMD(NULL, OLECMDID_CUT, ID_EDIT_CUT)
+
+#define ON_OLECMD_COPY() \
+ ON_OLECMD(NULL, OLECMDID_COPY, ID_EDIT_COPY)
+
+#define ON_OLECMD_PASTE() \
+ ON_OLECMD(NULL, OLECMDID_PASTE, ID_EDIT_PASTE)
+
+#define ON_OLECMD_PASTESPECIAL() \
+ ON_OLECMD(NULL, OLECMDID_PASTESPECIAL, ID_EDIT_PASTE_SPECIAL)
+
+#define ON_OLECMD_UNDO() \
+ ON_OLECMD(NULL, OLECMDID_UNDO, ID_EDIT_UNDO)
+
+#define ON_OLECMD_REDO() \
+ ON_OLECMD(NULL, OLECMDID_REDO, ID_EDIT_REDO)
+
+#define ON_OLECMD_SELECTALL() \
+ ON_OLECMD(NULL, OLECMDID_SELECTALL, ID_EDIT_SELECT_ALL)
+
+#define ON_OLECMD_CLEARSELECTION() \
+ ON_OLECMD(NULL, OLECMDID_CLEARSELECTION, ID_EDIT_CLEAR)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDocObjectServer class
+
+class CDocObjectServer : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocObjectServer)
+
+// Constructors
+public:
+ CDocObjectServer(COleServerDoc* pOwner,
+ LPOLEDOCUMENTSITE pDocSite = NULL);
+
+// Attributes
+public:
+
+// Operations
+public:
+ void ActivateDocObject();
+
+// Overridables
+protected:
+ // Document Overridables
+
+ // View Overridables
+ virtual void OnApplyViewState(CArchive& ar);
+ virtual void OnSaveViewState(CArchive& ar);
+ virtual HRESULT OnActivateView();
+
+// Implementation
+public:
+ virtual ~CDocObjectServer();
+ void ReleaseDocSite();
+ void SetDocSite(LPOLEDOCUMENTSITE pNewSite);
+ COleDocIPFrameWnd* GetControllingFrame() const;
+protected:
+ STDMETHODIMP OnExecOleCmd(const GUID* pguidCmdGroup,
+ DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG* pvarargIn,
+ VARIANTARG* pvarargOut);
+ BOOL DoPreparePrinting(CView* pView, CPrintInfo* printInfo);
+ void DoPrepareDC(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
+ void DoPrint(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
+ void DoBeginPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
+ void DoEndPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+protected:
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CDocObjectServer)
+ public:
+ virtual void OnCloseDocument();
+ //}}AFX_VIRTUAL
+
+ // Implementation Data
+protected:
+ // Document Data
+ LPOLEDOCUMENTSITE m_pDocSite;
+ COleServerDoc* m_pOwner;
+
+ // Print Data
+ LONG m_nFirstPage;
+ LPCONTINUECALLBACK m_pContinueCallback;
+
+ // View Data
+ LPOLEINPLACESITE m_pViewSite;
+
+ // Implementation Helpers
+protected:
+ void OnSetItemRects(LPRECT lprcPosRect, LPRECT lprcClipRect);
+// LPUNKNOWN GetInterfaceHook(const void* iid);
+
+ // Generated message map functions
+protected:
+ //{{AFX_MSG(CDocObjectServer)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(CDocObjServerDoc, DocOleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(OleDocument, IOleDocument)
+ INIT_INTERFACE_PART(CDocObjectServer, OleDocument)
+ STDMETHOD(CreateView)(LPOLEINPLACESITE, LPSTREAM, DWORD, LPOLEDOCUMENTVIEW*);
+ STDMETHOD(GetDocMiscStatus)(LPDWORD);
+ STDMETHOD(EnumViews)(LPENUMOLEDOCUMENTVIEWS*, LPOLEDOCUMENTVIEW*);
+ END_INTERFACE_PART(OleDocument)
+
+ BEGIN_INTERFACE_PART(OleDocumentView, IOleDocumentView)
+ INIT_INTERFACE_PART(CDocObjectServer, OleDocumentView)
+ STDMETHOD(SetInPlaceSite)(LPOLEINPLACESITE);
+ STDMETHOD(GetInPlaceSite)(LPOLEINPLACESITE*);
+ STDMETHOD(GetDocument)(LPUNKNOWN*);
+ STDMETHOD(SetRect)(LPRECT);
+ STDMETHOD(GetRect)(LPRECT);
+ STDMETHOD(SetRectComplex)(LPRECT, LPRECT, LPRECT, LPRECT);
+ STDMETHOD(Show)(BOOL);
+ STDMETHOD(UIActivate)(BOOL);
+ STDMETHOD(Open)();
+ STDMETHOD(CloseView)(DWORD);
+ STDMETHOD(SaveViewState)(LPSTREAM);
+ STDMETHOD(ApplyViewState)(LPSTREAM);
+ STDMETHOD(Clone)(LPOLEINPLACESITE, LPOLEDOCUMENTVIEW*);
+ END_INTERFACE_PART(OleDocumentView)
+
+ BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)
+ INIT_INTERFACE_PART(CDocObjectServer, OleCommandTarget)
+ STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD[], OLECMDTEXT*);
+ STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*);
+ END_INTERFACE_PART(OleCommandTarget)
+
+ BEGIN_INTERFACE_PART(Print, IPrint)
+ INIT_INTERFACE_PART(COleServerDoc, Print)
+ STDMETHOD(SetInitialPageNum)(LONG);
+ STDMETHOD(GetPageInfo)(LPLONG, LPLONG);
+ STDMETHOD(Print)(DWORD, DVTARGETDEVICE**, PAGESET**, LPSTGMEDIUM,
+ LPCONTINUECALLBACK, LONG, LPLONG, LPLONG);
+ END_INTERFACE_PART(Print)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDocIPFrameWnd class
+
+class COleDocIPFrameWnd : public COleIPFrameWnd
+{
+ DECLARE_DYNCREATE(COleDocIPFrameWnd)
+
+// Constructors
+public:
+ COleDocIPFrameWnd();
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overridables
+protected:
+
+// Implementation
+public:
+ virtual ~COleDocIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(COleDocIPFrameWnd)
+ //}}AFX_VIRTUAL
+protected:
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+ // Menu Merging support
+ HMENU m_hMenuHelpPopup;
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+
+ // Generated message map functions
+ //{{AFX_MSG(COleDocIPFrameWnd)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+
+class CDocObjectServerItem : public COleServerItem
+{
+ DECLARE_DYNAMIC(CDocObjectServerItem)
+
+// Constructors
+protected:
+ CDocObjectServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+
+// Attributes
+public:
+ COleServerDoc* GetDocument() const
+ { return (COleServerDoc*) COleServerItem::GetDocument(); }
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDocObjectServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+protected:
+ virtual void OnDoVerb(LONG iVerb);
+ virtual void OnHide();
+ virtual void OnOpen();
+ virtual void OnShow();
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CDocObjectServerItem)
+ //}}AFX_VIRTUAL
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDOCOB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxext.h b/public/sdk/inc/mfc42/afxext.h
new file mode 100644
index 000000000..11f7472ce
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxext.h
@@ -0,0 +1,1048 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXEXT_H__
+#define __AFXEXT_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXEXT - MFC Advanced Extensions and Advanced Customizable classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CButton
+ class CBitmapButton; // Bitmap button (self-draw)
+
+ class CControlBar; // control bar
+ class CStatusBar; // status bar
+ class CToolBar; // toolbar
+ class CDialogBar; // dialog as control bar
+
+ class CSplitterWnd; // splitter manager
+
+ //CView
+ //CScrollView
+ class CFormView; // view with a dialog template
+ class CEditView; // simple text editor view
+
+ //CDC
+ class CMetaFileDC; // a metafile with proxy
+
+class CRectTracker; // tracker for rectangle objects
+
+// information structures
+struct CPrintInfo; // Printing context
+struct CPrintPreviewState; // Print Preview context/state
+struct CCreateContext; // Creation context
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Simple bitmap button
+
+// CBitmapButton - push-button with 1->4 bitmap images
+class CBitmapButton : public CButton
+{
+ DECLARE_DYNAMIC(CBitmapButton)
+public:
+// Construction
+ CBitmapButton();
+
+ BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,
+ LPCTSTR lpszBitmapResourceSel = NULL,
+ LPCTSTR lpszBitmapResourceFocus = NULL,
+ LPCTSTR lpszBitmapResourceDisabled = NULL);
+ BOOL LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel = 0,
+ UINT nIDBitmapResourceFocus = 0,
+ UINT nIDBitmapResourceDisabled = 0);
+ BOOL AutoLoad(UINT nID, CWnd* pParent);
+
+// Operations
+ void SizeToContent();
+
+// Implementation:
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+protected:
+ // all bitmaps must be the same size
+ CBitmap m_bitmap; // normal image (REQUIRED)
+ CBitmap m_bitmapSel; // selected image (OPTIONAL)
+ CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL)
+ CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
+
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Control Bars
+
+// forward declarations (private to implementation)
+class CDockBar;
+class CDockContext;
+class CControlBarInfo;
+struct AFX_SIZEPARENTPARAMS;
+
+// Layout Modes for CalcDynamicLayout
+#define LM_STRETCH 0x01 // same meaning as bStretch in CalcFixedLayout. If set, ignores nLength
+ // and returns dimensions based on LM_HORZ state, otherwise LM_HORZ is used
+ // to determine if nLength is the desired horizontal or vertical length
+ // and dimensions are returned based on nLength
+#define LM_HORZ 0x02 // same as bHorz in CalcFixedLayout
+#define LM_MRUWIDTH 0x04 // Most Recently Used Dynamic Width
+#define LM_HORZDOCK 0x08 // Horizontal Docked Dimensions
+#define LM_VERTDOCK 0x10 // Vertical Docked Dimensions
+#define LM_LENGTHY 0x20 // Set if nLength is a Height instead of a Width
+#define LM_COMMIT 0x40 // Remember MRUWidth
+
+class CControlBar : public CWnd
+{
+ DECLARE_DYNAMIC(CControlBar)
+// Construction
+protected:
+ CControlBar();
+
+// Attributes
+public:
+ int GetCount() const;
+
+ // for styles specific to CControlBar
+ DWORD GetBarStyle();
+ void SetBarStyle(DWORD dwStyle);
+
+ BOOL m_bAutoDelete;
+
+ CFrameWnd* GetDockingFrame() const;
+ BOOL IsFloating() const;
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+
+// Operations
+ void EnableDocking(DWORD dwDockStyle);
+
+// Overridables
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) = 0;
+
+// Implementation
+public:
+ virtual ~CControlBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void DelayShow(BOOL bShow);
+ virtual BOOL IsVisible() const;
+ virtual DWORD RecalcDelayShow(AFX_SIZEPARENTPARAMS* lpLayout);
+
+ virtual BOOL IsDockBar() const;
+ virtual BOOL DestroyWindow();
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+ // info about bar (for status bar and toolbar)
+ int m_cxLeftBorder, m_cxRightBorder;
+ int m_cyTopBorder, m_cyBottomBorder;
+ int m_cxDefaultGap; // default gap value
+ UINT m_nMRUWidth; // For dynamic resizing.
+#ifdef _MAC
+ BOOL m_bMonochrome; // whether to draw in monochrome or color
+#endif
+
+ // array of elements
+ int m_nCount;
+ void* m_pData; // m_nCount elements - type depends on derived class
+
+ // support for delayed hide/show
+ enum StateFlags
+ { delayHide = 1, delayShow = 2, tempHide = 4, statusSet = 8 };
+ UINT m_nStateFlags;
+
+ // support for docking
+ DWORD m_dwStyle; // creation style (used for layout)
+ DWORD m_dwDockStyle;// indicates how bar can be docked
+ CFrameWnd* m_pDockSite; // current dock site, if dockable
+ CDockBar* m_pDockBar; // current dock bar, if dockable
+ CDockContext* m_pDockContext; // used during dragging
+
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ virtual void DoPaint(CDC* pDC);
+ void DrawBorders(CDC* pDC, CRect& rect);
+
+ // implementation helpers
+ virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
+ BOOL AllocElements(int nElements, int cbElement);
+ virtual BOOL SetStatusText(int nHit);
+ void ResetTimer(UINT nEvent, UINT nTime);
+ void EraseNonClient();
+
+#ifdef _MAC
+ void OnReposition();
+ virtual BOOL CheckMonochrome();
+#endif
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+
+ //{{AFX_MSG(CControlBar)
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnInitialUpdate();
+ afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt );
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnMove(int x, int y);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CFrameWnd;
+ friend class CDockBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBar control
+
+class CStatusBarCtrl; // forward reference (see afxcmn.h for definition)
+struct AFX_STATUSPANE; // private to implementation
+
+class CStatusBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CStatusBar)
+
+// Construction
+public:
+ CStatusBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
+ UINT nID = AFX_IDW_STATUS_BAR);
+ BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ void GetItemRect(int nIndex, LPRECT lpRect) const;
+
+ // specific to CStatusBar
+ void GetPaneText(int nIndex, CString& rString) const;
+ CString GetPaneText(int nIndex) const;
+ BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
+ void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
+ void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
+ UINT GetPaneStyle(int nIndex) const;
+ void SetPaneStyle(int nIndex, UINT nStyle);
+
+ // for direct access to the underlying common control
+ CStatusBarCtrl& GetStatusBarCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT);
+
+// Implementation
+public:
+ virtual ~CStatusBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ BOOL PreCreateWindow(CREATESTRUCT& cs);
+ BOOL AllocElements(int nElements, int cbElement);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const;
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EnableDocking(DWORD dwDockStyle);
+#endif
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ int m_nMinHeight;
+
+ AFX_STATUSPANE* _GetPanePtr(int nIndex) const;
+ void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText);
+ virtual BOOL OnChildNotify(UINT message, WPARAM, LPARAM, LRESULT*);
+
+ //{{AFX_MSG(CStatusBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for status bar panes
+#define SBPS_NORMAL 0x0000
+#define SBPS_NOBORDERS SBT_NOBORDERS
+#define SBPS_POPOUT SBT_POPOUT
+#define SBPS_OWNERDRAW SBT_OWNERDRAW
+#define SBPS_DISABLED 0x04000000
+#define SBPS_STRETCH 0x08000000 // stretch to fill status bar
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBar control
+
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono = FALSE);
+
+class CToolBarCtrl; // forward reference (see afxcmn.h for definition)
+
+class CToolBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CToolBar)
+
+// Construction
+public:
+ CToolBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
+ UINT nID = AFX_IDW_TOOLBAR);
+
+ void SetSizes(SIZE sizeButton, SIZE sizeImage);
+ // button size should be bigger than image
+ void SetHeight(int cyHeight);
+ // call after SetSizes, height overrides bitmap size
+ BOOL LoadToolBar(LPCTSTR lpszResourceName);
+ BOOL LoadToolBar(UINT nIDResource);
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+ BOOL SetBitmap(HBITMAP hbmImageWell);
+ BOOL SetButtons(const UINT* lpIDArray, int nIDCount);
+ // lpIDArray can be NULL to allocate empty buttons
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
+ UINT GetButtonStyle(int nIndex) const;
+ void SetButtonStyle(int nIndex, UINT nStyle);
+
+ // for changing button info
+ void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
+ void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
+ BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
+ CString GetButtonText(int nIndex) const;
+ void GetButtonText(int nIndex, CString& rString) const;
+
+ // for direct access to the underlying common control
+ CToolBarCtrl& GetToolBarCtrl() const;
+
+// Implementation
+public:
+ virtual ~CToolBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ void SetOwner(CWnd* pOwnerWnd);
+ BOOL AddReplaceBitmap(HBITMAP hbmImageWell);
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _MAC
+ virtual BOOL CheckMonochrome();
+#endif
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HRSRC m_hRsrcImageWell; // handle to loaded resource for image well
+ HINSTANCE m_hInstImageWell; // instance handle to load image well from
+ HBITMAP m_hbmImageWell; // contains color mapped button images
+ BOOL m_bDelayedButtonLayout; // used to manage when button layout should be done
+
+ CSize m_sizeImage; // current image size
+ CSize m_sizeButton; // current button size
+
+ CMapStringToPtr* m_pStringMap; // used as CMapStringToUInt
+
+ // implementation helpers
+ void _GetButton(int nIndex, TBBUTTON* pButton) const;
+ void _SetButton(int nIndex, TBBUTTON* pButton);
+ CSize CalcLayout(DWORD nMode, int nLength = -1);
+ CSize CalcSize(TBBUTTON* pData, int nCount);
+ int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
+ void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
+
+ //{{AFX_MSG(CToolBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg void OnSysColorChange();
+ afx_msg LRESULT OnSetButtonSize(WPARAM, LPARAM);
+ afx_msg LRESULT OnSetBitmapSize(WPARAM, LPARAM);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for toolbar buttons
+#define TBBS_BUTTON MAKELONG(TBSTYLE_BUTTON, 0) // this entry is button
+#define TBBS_SEPARATOR MAKELONG(TBSTYLE_SEP, 0) // this entry is a separator
+#define TBBS_CHECKBOX MAKELONG(TBSTYLE_CHECK, 0) // this is an auto check button
+#define TBBS_GROUP MAKELONG(TBSTYLE_GROUP, 0) // marks the start of a group
+#define TBBS_CHECKGROUP (TBBS_GROUP|TBBS_CHECKBOX) // normal use of TBBS_GROUP
+
+// styles for display states
+#define TBBS_CHECKED MAKELONG(0, TBSTATE_CHECKED) // button is checked/down
+#define TBBS_PRESSED MAKELONG(0, TBSTATE_PRESSED) // button is being depressed
+#define TBBS_DISABLED MAKELONG(0, TBSTATE_ENABLED) // button is disabled
+#define TBBS_INDETERMINATE MAKELONG(0, TBSTATE_INDETERMINATE) // third state
+#define TBBS_HIDDEN MAKELONG(0, TBSTATE_HIDDEN) // button is hidden
+#define TBBS_WRAPPED MAKELONG(0, TBSTATE_WRAP) // button is wrapped at this point
+
+////////////////////////////////////////////
+// CDialogBar control
+// This is a control bar built from a dialog template. It is a modeless
+// dialog that delegates all control notifications to the parent window
+// of the control bar [the grandparent of the control]
+
+class CDialogBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDialogBar)
+
+// Construction
+public:
+ CDialogBar();
+ BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
+ UINT nStyle, UINT nID);
+ BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID);
+
+// Implementation
+public:
+ virtual ~CDialogBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ CSize m_sizeDefault;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ LPCTSTR m_lpszTemplateName;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ DECLARE_MESSAGE_MAP()
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Splitter Window
+
+#define SPLS_DYNAMIC_SPLIT 0x0001
+#define SPLS_INVERT_TRACKER 0x0002 // obsolete (now ignored)
+
+class CSplitterWnd : public CWnd
+{
+ DECLARE_DYNAMIC(CSplitterWnd)
+
+// Construction
+public:
+ CSplitterWnd();
+ // Create a single view type splitter with multiple splits
+ BOOL Create(CWnd* pParentWnd,
+ int nMaxRows, int nMaxCols, SIZE sizeMin,
+ CCreateContext* pContext,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE |
+ WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ // Create a multiple view type splitter with static layout
+ BOOL CreateStatic(CWnd* pParentWnd,
+ int nRows, int nCols,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,
+ SIZE sizeInit, CCreateContext* pContext);
+
+// Attributes
+public:
+ int GetRowCount() const;
+ int GetColumnCount() const;
+
+ // information about a specific row or column
+ void GetRowInfo(int row, int& cyCur, int& cyMin) const;
+ void SetRowInfo(int row, int cyIdeal, int cyMin);
+ void GetColumnInfo(int col, int& cxCur, int& cxMin) const;
+ void SetColumnInfo(int col, int cxIdeal, int cxMin);
+
+ // for setting and getting shared scroll bar style
+ DWORD GetScrollStyle() const;
+ void SetScrollStyle(DWORD dwStyle);
+
+ // views inside the splitter
+ CWnd* GetPane(int row, int col) const;
+ BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);
+ BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete
+ int IdFromRowCol(int row, int col) const;
+
+ BOOL IsTracking(); // TRUE during split operation
+
+// Operations
+public:
+ virtual void RecalcLayout(); // call after changing sizes
+
+// Overridables
+protected:
+ // to customize the drawing
+ enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };
+ virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
+ virtual void OnInvertTracker(const CRect& rect);
+
+public:
+ // for customizing scrollbar regions
+ virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);
+
+ // for customizing DYNAMIC_SPLIT behavior
+ virtual void DeleteView(int row, int col);
+ virtual BOOL SplitRow(int cyBefore);
+ virtual BOOL SplitColumn(int cxBefore);
+ virtual void DeleteRow(int rowDelete);
+ virtual void DeleteColumn(int colDelete);
+
+ // determining active pane from focus or active view in frame
+ virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
+ virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);
+protected:
+ CWnd* GetActivePane(int& row, int& col); // obsolete
+
+public:
+ // high level command operations - called by default view implementation
+ virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
+ virtual void ActivateNext(BOOL bPrev = FALSE);
+ virtual BOOL DoKeyboardSplit();
+
+ // synchronized scrolling
+ virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,
+ BOOL bDoScroll = TRUE);
+ virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,
+ BOOL bDoScroll = TRUE);
+
+// Implementation
+public:
+ virtual ~CSplitterWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation structure
+ struct CRowColInfo
+ {
+ int nMinSize; // below that try not to show
+ int nIdealSize; // user set size
+ // variable depending on the available size layout
+ int nCurSize; // 0 => invisible, -1 => nonexistant
+ };
+
+protected:
+ // customizable implementation attributes (set by constructor or Create)
+ CRuntimeClass* m_pDynamicViewClass;
+ int m_nMaxRows, m_nMaxCols;
+
+ // implementation attributes which control layout of the splitter
+ int m_cxSplitter, m_cySplitter; // size of splitter bar
+ int m_cxBorderShare, m_cyBorderShare; // space on either side of splitter
+ int m_cxSplitterGap, m_cySplitterGap; // amount of space between panes
+ int m_cxBorder, m_cyBorder; // borders in client area
+
+ // current state information
+ int m_nRows, m_nCols;
+ BOOL m_bHasHScroll, m_bHasVScroll;
+ CRowColInfo* m_pColInfo;
+ CRowColInfo* m_pRowInfo;
+
+ // Tracking info - only valid when 'm_bTracking' is set
+ BOOL m_bTracking, m_bTracking2;
+ CPoint m_ptTrackOffset;
+ CRect m_rectLimit;
+ CRect m_rectTracker, m_rectTracker2;
+ int m_htTrack;
+
+ // implementation routines
+ BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);
+ virtual int HitTest(CPoint pt) const;
+ virtual void GetInsideRect(CRect& rect) const;
+ virtual void GetHitRect(int ht, CRect& rect);
+ virtual void TrackRowSize(int y, int row);
+ virtual void TrackColumnSize(int x, int col);
+ virtual void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);
+ virtual void SetSplitCursor(int ht);
+ CWnd* GetSizingParent();
+
+ // starting and stopping tracking
+ virtual void StartTracking(int ht);
+ virtual void StopTracking(BOOL bAccept);
+
+ // special command routing to frame
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ //{{AFX_MSG(CSplitterWnd)
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
+ afx_msg void OnPaint();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
+ afx_msg void OnCancelMode();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnDisplayChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFormView - generic view constructed from a dialog template
+
+class CFormView : public CScrollView
+{
+ DECLARE_DYNAMIC(CFormView)
+
+// Construction
+protected: // must derive your own class
+ CFormView(LPCTSTR lpszTemplateName);
+ CFormView(UINT nIDTemplate);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ LPCTSTR m_lpszTemplateName;
+ CCreateContext* m_pCreateContext;
+ HWND m_hWndFocus; // last window to have focus
+
+ virtual void OnDraw(CDC* pDC); // default does nothing
+ // special case override of child window creation
+ virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,
+ const RECT&, CWnd*, UINT, CCreateContext*);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnActivateView(BOOL, CView*, CView*);
+ virtual void OnActivateFrame(UINT, CFrameWnd*);
+ BOOL SaveFocusControl(); // updates m_hWndFocus
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+#endif
+
+ //{{AFX_MSG(CFormView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEditView - simple text editor view
+
+class CEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CEditView)
+
+// Construction
+public:
+ CEditView();
+
+// Attributes
+public:
+ static AFX_DATA const DWORD dwStyleDefault;
+ // CEdit control access
+ CEdit& GetEditCtrl() const;
+
+ // presentation attributes
+ CFont* GetPrinterFont() const;
+ void SetPrinterFont(CFont* pFont);
+#ifndef _MAC
+ void SetTabStops(int nTabStops);
+#endif
+
+ // other attributes
+ void GetSelectedText(CString& strResult) const;
+
+ // buffer access
+ LPCTSTR LockBuffer() const;
+ void UnlockBuffer() const;
+ UINT GetBufferLength() const;
+
+// Operations
+public:
+ BOOL FindText(LPCTSTR lpszFind, BOOL bNext = TRUE, BOOL bCase = TRUE);
+ void SerializeRaw(CArchive& ar);
+ UINT PrintInsideRect(CDC* pDC, RECT& rectLayout, UINT nIndexStart,
+ UINT nIndexStop);
+
+// Overrideables
+protected:
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+
+// Implementation
+public:
+ virtual ~CEditView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ void ReadFromArchive(CArchive& ar, UINT nLen);
+ void WriteToArchive(CArchive& ar);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA const UINT nMaxSize;
+ // maximum number of characters supported
+
+protected:
+#ifndef _MAC
+ int m_nTabStops; // tab stops in dialog units
+#endif
+ LPTSTR m_pShadowBuffer; // special shadow buffer only used in Win32s
+ UINT m_nShadowSize;
+
+ CUIntArray m_aPageStart; // array of starting pages
+ HFONT m_hPrinterFont; // if NULL, mirror display font
+ HFONT m_hMirrorFont; // font object used when mirroring
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ // printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL InitializeReplace();
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase);
+
+ // special overrides for implementation
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ //{{AFX_MSG(CEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg BOOL OnEditChange();
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMetaFileDC
+
+class CMetaFileDC : public CDC
+{
+ DECLARE_DYNAMIC(CMetaFileDC)
+
+// Constructors
+public:
+ CMetaFileDC();
+ BOOL Create(LPCTSTR lpszFilename = NULL);
+#ifndef _MAC
+ BOOL CreateEnhanced(CDC* pDCRef, LPCTSTR lpszFileName,
+ LPCRECT lpBounds, LPCTSTR lpszDescription);
+#endif
+
+// Operations
+ HMETAFILE Close();
+#ifndef _MAC
+ HENHMETAFILE CloseEnhanced();
+#endif
+
+// Implementation
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+
+protected:
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC -- Not allowed
+ virtual void ReleaseOutputDC(); // Release the Output DC -- Not allowed
+
+public:
+ virtual ~CMetaFileDC();
+
+// Clipping Functions (use the Attribute DC's clip region)
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Viewport Functions
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+protected:
+ void AdjustCP(int cx);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRectTracker - simple rectangular tracking rectangle w/resize handles
+
+class CRectTracker
+{
+public:
+// Constructors
+ CRectTracker();
+ CRectTracker(LPCRECT lpSrcRect, UINT nStyle);
+
+// Style Flags
+ enum StyleFlags
+ {
+ solidLine = 1, dottedLine = 2, hatchedBorder = 4,
+ resizeInside = 8, resizeOutside = 16, hatchInside = 32,
+ };
+
+// Hit-Test codes
+ enum TrackerHit
+ {
+ hitNothing = -1,
+ hitTopLeft = 0, hitTopRight = 1, hitBottomRight = 2, hitBottomLeft = 3,
+ hitTop = 4, hitRight = 5, hitBottom = 6, hitLeft = 7, hitMiddle = 8
+ };
+
+// Attributes
+ UINT m_nStyle; // current state
+ CRect m_rect; // current position (always in pixels)
+ CSize m_sizeMin; // minimum X and Y size during track operation
+ int m_nHandleSize; // size of resize handles (default from WIN.INI)
+
+// Operations
+ void Draw(CDC* pDC) const;
+ void GetTrueRect(LPRECT lpTrueRect) const;
+ BOOL SetCursor(CWnd* pWnd, UINT nHitTest) const;
+ BOOL Track(CWnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE,
+ CWnd* pWndClipTo = NULL);
+ BOOL TrackRubberBand(CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE);
+ int HitTest(CPoint point) const;
+ int NormalizeHit(int nHandle) const;
+
+// Overridables
+ virtual void DrawTrackerRect(LPCRECT lpRect, CWnd* pWndClipTo,
+ CDC* pDC, CWnd* pWnd);
+ virtual void AdjustRect(int nHandle, LPRECT lpRect);
+ virtual void OnChangedRect(const CRect& rectOld);
+ virtual UINT GetHandleMask() const;
+
+// Implementation
+public:
+ virtual ~CRectTracker();
+
+protected:
+ BOOL m_bAllowInvert; // flag passed to Track or TrackRubberBand
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bErase; // TRUE if DrawTrackerRect is called for erasing
+ BOOL m_bFinalErase; // TRUE if DragTrackerRect called for final erase
+
+ // implementation helpers
+ int HitTestHandles(CPoint point) const;
+ void GetHandleRect(int nHandle, CRect* pHandleRect) const;
+ void GetModifyPointers(int nHandle, int**ppx, int**ppy, int* px, int*py);
+ virtual int GetHandleSize(LPCRECT lpRect = NULL) const;
+ BOOL TrackHandle(int nHandle, CWnd* pWnd, CPoint point, CWnd* pWndClipTo);
+ void Construct();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Informational data structures
+
+struct CPrintInfo // Printing information structure
+{
+ CPrintInfo();
+ ~CPrintInfo();
+
+ CPrintDialog* m_pPD; // pointer to print dialog
+
+ BOOL m_bDocObject; // TRUE if printing by IPrint interface
+ BOOL m_bPreview; // TRUE if in preview mode
+ BOOL m_bDirect; // TRUE if bypassing Print Dialog
+ BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
+ UINT m_nCurPage; // Current page
+ UINT m_nNumPreviewPages; // Desired number of preview pages
+ CString m_strPageDesc; // Format string for page number display
+ LPVOID m_lpUserData; // pointer to user created struct
+ CRect m_rectDraw; // rectangle defining current usable page area
+
+ // these only valid if m_bDocObject
+ UINT m_nOffsetPage; // offset of first page in combined IPrint job
+ DWORD m_dwFlags; // flags passed to IPrint::Print
+
+ void SetMinPage(UINT nMinPage);
+ void SetMaxPage(UINT nMaxPage);
+ UINT GetMinPage() const;
+ UINT GetMaxPage() const;
+ UINT GetFromPage() const;
+ UINT GetToPage() const;
+ UINT GetOffsetPage() const;
+};
+
+struct CPrintPreviewState // Print Preview context/state
+{
+ UINT nIDMainPane; // main pane ID to hide
+ HMENU hMenu; // saved hMenu
+ DWORD dwStates; // Control Bar Visible states (bit map)
+ CView* pViewActiveOld; // save old active view during preview
+ BOOL (CALLBACK* lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ HACCEL hAccelTable; // saved accelerator table
+
+// Implementation
+ CPrintPreviewState();
+};
+
+struct CCreateContext // Creation information structure
+ // All fields are optional and may be NULL
+{
+ // for creating new views
+ CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
+ CDocument* m_pCurrentDoc;
+
+ // for creating MDI children (CMDIChildWnd::LoadFrame)
+ CDocTemplate* m_pNewDocTemplate;
+
+ // for sharing view/frame state from the original view/frame
+ CView* m_pLastView;
+ CFrameWnd* m_pCurrentFrame;
+
+// Implementation
+ CCreateContext();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXEXT_INLINE inline
+#include <afxext.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXEXT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxext.inl b/public/sdk/inc/mfc42/afxext.inl
new file mode 100644
index 000000000..559f1f37c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxext.inl
@@ -0,0 +1,121 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXEXT.H
+
+#ifdef _AFXEXT_INLINE
+
+// CCreateContext
+_AFXEXT_INLINE CCreateContext::CCreateContext()
+ { memset(this, 0, sizeof(*this)); }
+
+// CMetaFileDC
+_AFXEXT_INLINE BOOL CMetaFileDC::Create(LPCTSTR lpszFilename)
+ { return Attach(::CreateMetaFile(lpszFilename)); }
+_AFXEXT_INLINE HMETAFILE CMetaFileDC::Close()
+ { return ::CloseMetaFile(Detach()); }
+#ifndef _MAC
+_AFXEXT_INLINE BOOL CMetaFileDC::CreateEnhanced(CDC* pDCRef,
+ LPCTSTR lpszFileName, LPCRECT lpBounds, LPCTSTR lpszDescription)
+ { return Attach(::CreateEnhMetaFile(pDCRef->GetSafeHdc(),
+ lpszFileName, lpBounds, lpszDescription)); }
+_AFXEXT_INLINE HENHMETAFILE CMetaFileDC::CloseEnhanced()
+ { return ::CloseEnhMetaFile(Detach()); }
+_AFXEXT_INLINE CPoint CMetaFileDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXEXT_INLINE CSize CMetaFileDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXEXT_INLINE BOOL CMetaFileDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); }
+_AFXEXT_INLINE BOOL CMetaFileDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXEXT_INLINE CSize CMetaFileDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXEXT_INLINE int CMetaFileDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXEXT_INLINE BOOL CMetaFileDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); }
+#endif
+
+// CSplitterWnd
+_AFXEXT_INLINE int CSplitterWnd::GetRowCount() const
+ { return m_nRows; }
+_AFXEXT_INLINE int CSplitterWnd::GetColumnCount() const
+ { return m_nCols; }
+// obsolete functions
+_AFXEXT_INLINE BOOL CSplitterWnd::IsChildPane(CWnd* pWnd, int& row, int& col)
+ { return IsChildPane(pWnd, &row, &col); }
+_AFXEXT_INLINE CWnd* CSplitterWnd::GetActivePane(int& row, int& col)
+ { return GetActivePane(&row, &col); }
+_AFXEXT_INLINE BOOL CSplitterWnd::IsTracking()
+ { return m_bTracking; }
+
+// control bars
+_AFXEXT_INLINE int CControlBar::GetCount() const
+ { return m_nCount; }
+_AFXEXT_INLINE DWORD CControlBar::GetBarStyle()
+ { return m_dwStyle; }
+_AFXEXT_INLINE BOOL CToolBar::LoadToolBar(UINT nIDResource)
+ { return LoadToolBar(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE BOOL CToolBar::LoadBitmap(UINT nIDResource)
+ { return LoadBitmap(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE CToolBarCtrl& CToolBar::GetToolBarCtrl() const
+ { return *(CToolBarCtrl*)this; }
+_AFXEXT_INLINE BOOL CDialogBar::Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID)
+ { return Create(pParentWnd, MAKEINTRESOURCE(nIDTemplate), nStyle, nID); }
+_AFXEXT_INLINE CStatusBarCtrl& CStatusBar::GetStatusBarCtrl() const
+ { return *(CStatusBarCtrl*)this; }
+#ifdef _DEBUG
+// status bars do not support docking
+_AFXEXT_INLINE void CStatusBar::EnableDocking(DWORD)
+ { ASSERT(FALSE); }
+#endif
+
+// CRectTracker
+_AFXEXT_INLINE CRectTracker::CRectTracker()
+ { Construct(); }
+
+// CBitmapButton
+_AFXEXT_INLINE CBitmapButton::CBitmapButton()
+ { }
+_AFXEXT_INLINE BOOL CBitmapButton::LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel, UINT nIDBitmapResourceFocus,
+ UINT nIDBitmapResourceDisabled)
+ { return LoadBitmaps(MAKEINTRESOURCE(nIDBitmapResource),
+ MAKEINTRESOURCE(nIDBitmapResourceSel),
+ MAKEINTRESOURCE(nIDBitmapResourceFocus),
+ MAKEINTRESOURCE(nIDBitmapResourceDisabled)); }
+
+// CPrintInfo
+_AFXEXT_INLINE void CPrintInfo::SetMinPage(UINT nMinPage)
+ { m_pPD->m_pd.nMinPage = (WORD)nMinPage; }
+_AFXEXT_INLINE void CPrintInfo::SetMaxPage(UINT nMaxPage)
+ { m_pPD->m_pd.nMaxPage = (WORD)nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMinPage() const
+ { return m_pPD->m_pd.nMinPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMaxPage() const
+ { return m_pPD->m_pd.nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetFromPage() const
+ { return m_pPD->m_pd.nFromPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetToPage() const
+ { return m_pPD->m_pd.nToPage; }
+// CEditView
+_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const
+ { return *(CEdit*)this; }
+
+#endif //_AFXEXT_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxhelp.hm b/public/sdk/inc/mfc42/afxhelp.hm
new file mode 100644
index 000000000..b511e5e30
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxhelp.hm
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Non-Client HitTest help IDs
+HID_HT_NOWHERE 0x40000
+HID_HT_CAPTION 0x40002
+HID_HT_SIZE 0x40004
+HID_HT_HSCROLL 0x40006
+HID_HT_VSCROLL 0x40007
+HID_HT_MINBUTTON 0x40008
+HID_HT_MAXBUTTON 0x40009
+HID_HT_SIZE 0x4000A // alias: ID_HT_LEFT
+HID_HT_SIZE 0x4000B // alias: ID_HT_RIGHT
+HID_HT_SIZE 0x4000C // alias: ID_HT_TOP
+HID_HT_SIZE 0x4000D // alias: ID_HT_TOPLEFT
+HID_HT_SIZE 0x4000E // alias: ID_HT_TOPRIGHT
+HID_HT_SIZE 0x4000F // alias: ID_HT_BOTTOM
+HID_HT_SIZE 0x40010 // alias: ID_HT_BOTTOMLEFT
+HID_HT_SIZE 0x40011 // alias: ID_HT_BOTTOMRIGHT
+HID_HT_SIZE 0x40012 // alias: ID_HT_BORDER
+
+// WM_SYSCOMMAND help IDs
+HID_SC_SIZE 0x1EF00
+HID_SC_MOVE 0x1EF01
+HID_SC_MINIMIZE 0x1EF02
+HID_SC_MAXIMIZE 0x1EF03
+HID_SC_NEXTWINDOW 0x1EF04
+HID_SC_PREVWINDOW 0x1EF05
+HID_SC_CLOSE 0x1EF06
+HID_SC_RESTORE 0x1EF12
+HID_SC_TASKLIST 0x1EF13
+
+// File MRU and aliases
+HID_FILE_MRU_FILE1 0x1E110
+HID_FILE_MRU_FILE1 0x1E111 // aliases: MRU_2 - MRU_16
+HID_FILE_MRU_FILE1 0x1E112
+HID_FILE_MRU_FILE1 0x1E113
+HID_FILE_MRU_FILE1 0x1E114
+HID_FILE_MRU_FILE1 0x1E115
+HID_FILE_MRU_FILE1 0x1E116
+HID_FILE_MRU_FILE1 0x1E117
+HID_FILE_MRU_FILE1 0x1E118
+HID_FILE_MRU_FILE1 0x1E119
+HID_FILE_MRU_FILE1 0x1E11A
+HID_FILE_MRU_FILE1 0x1E11B
+HID_FILE_MRU_FILE1 0x1E11C
+HID_FILE_MRU_FILE1 0x1E11D
+HID_FILE_MRU_FILE1 0x1E11E
+HID_FILE_MRU_FILE1 0x1E11F
+
+// Window menu list
+HID_WINDOW_ALL 0x1EF1F
+
+// OLE menu and aliases
+HID_OLE_VERB_1 0x1E210
+HID_OLE_VERB_1 0x1E211 // aliases: VERB_2 -> VERB_16
+HID_OLE_VERB_1 0x1E212
+HID_OLE_VERB_1 0x1E213
+HID_OLE_VERB_1 0x1E214
+HID_OLE_VERB_1 0x1E215
+HID_OLE_VERB_1 0x1E216
+HID_OLE_VERB_1 0x1E217
+HID_OLE_VERB_1 0x1E218
+HID_OLE_VERB_1 0x1E219
+HID_OLE_VERB_1 0x1E21A
+HID_OLE_VERB_1 0x1E21B
+HID_OLE_VERB_1 0x1E21C
+HID_OLE_VERB_1 0x1E21D
+HID_OLE_VERB_1 0x1E21E
+HID_OLE_VERB_1 0x1E21F
+
+// Commands (HID_*)
+HID_FILE_NEW 0x1E100
+HID_FILE_OPEN 0x1E101
+HID_FILE_CLOSE 0x1E102
+HID_FILE_SAVE 0x1E103
+HID_FILE_SAVE_AS 0x1E104
+HID_FILE_PAGE_SETUP 0x1E105
+HID_FILE_PRINT_SETUP 0x1E106
+HID_FILE_PRINT 0x1E107
+HID_FILE_PRINT_DIRECT 0x1E108
+HID_FILE_PRINT_PREVIEW 0x1E109
+HID_FILE_UPDATE 0x1E10A
+HID_FILE_SAVE_COPY_AS 0x1E10B
+HID_FILE_SEND_MAIL 0x1E10C
+HID_EDIT_CLEAR 0x1E120
+HID_EDIT_CLEAR_ALL 0x1E121
+HID_EDIT_COPY 0x1E122
+HID_EDIT_CUT 0x1E123
+HID_EDIT_FIND 0x1E124
+HID_EDIT_PASTE 0x1E125
+HID_EDIT_PASTE_LINK 0x1E126
+HID_EDIT_PASTE_SPECIAL 0x1E127
+HID_EDIT_REPEAT 0x1E128
+HID_EDIT_REPLACE 0x1E129
+HID_EDIT_SELECT_ALL 0x1E12A
+HID_EDIT_UNDO 0x1E12B
+HID_EDIT_REDO 0x1E12C
+HID_WINDOW_NEW 0x1E130
+HID_WINDOW_ARRANGE 0x1E131
+HID_WINDOW_CASCADE 0x1E132
+HID_WINDOW_TILE_HORZ 0x1E133
+HID_WINDOW_TILE_VERT 0x1E134
+HID_WINDOW_SPLIT 0x1E135
+HID_APP_ABOUT 0x1E140
+HID_APP_EXIT 0x1E141
+HID_HELP_INDEX 0x1E142
+HID_HELP_FINDER 0x1E143
+HID_HELP_USING 0x1E144
+HID_CONTEXT_HELP 0x1E145
+HID_NEXT_PANE 0x1E150
+HID_PREV_PANE 0x1E151
+HID_FORMAT_FONT 0x1E160
+HID_OLE_INSERT_NEW 0x1E200
+HID_OLE_EDIT_LINKS 0x1E201
+HID_OLE_EDIT_CONVERT 0x1E202
+HID_OLE_EDIT_CHANGE_ICON 0x1E203
+HID_OLE_EDIT_PROPERTIES 0x1E204
+HID_VIEW_TOOLBAR 0x1E800
+HID_VIEW_STATUS_BAR 0x1E801
+HID_RECORD_FIRST 0x1E900
+HID_RECORD_LAST 0x1E901
+HID_RECORD_NEXT 0x1E902
+HID_RECORD_PREV 0x1E903
+HID_WIZBACK 0x13023
+HID_WIZNEXT 0x13024
+HID_WIZFINISH 0x13025
+
+// Dialogs (AFX_HIDD_*)
+AFX_HIDD_FILEOPEN 0x27004
+AFX_HIDD_FILESAVE 0x27005
+AFX_HIDD_FONT 0x27006
+AFX_HIDD_COLOR 0x27007
+AFX_HIDD_PRINT 0x27008
+AFX_HIDD_PRINTSETUP 0x27009
+AFX_HIDD_FIND 0x2700A
+AFX_HIDD_REPLACE 0x2700B
+AFX_HIDD_NEWTYPEDLG 0x27801
+AFX_HIDD_PRINTDLG 0x27802
+AFX_HIDD_PREVIEW_TOOLBAR 0x27803
+AFX_HIDD_PREVIEW_SHORTTOOLBAR 0x2780B
+AFX_HIDD_INSERTOBJECT 0x27804
+AFX_HIDD_CHANGEICON 0x27805
+AFX_HIDD_CONVERT 0x27806
+AFX_HIDD_PASTESPECIAL 0x27807
+AFX_HIDD_EDITLINKS 0x27808
+AFX_HIDD_FILEBROWSE 0x27809
+AFX_HIDD_BUSY 0x2780A
+AFX_HIDD_OBJECTPROPERTIES 0x2780C
+AFX_HIDD_CHANGESOURCE 0x2780D
+
+// Prompts/Errors (AFX_HIDP_*)
+AFX_HIDP_NO_ERROR_AVAILABLE 0x3F020
+AFX_HIDP_INVALID_FILENAME 0x3F100
+AFX_HIDP_FAILED_TO_OPEN_DOC 0x3F101
+AFX_HIDP_FAILED_TO_SAVE_DOC 0x3F102
+AFX_HIDP_ASK_TO_SAVE 0x3F103
+AFX_HIDP_FAILED_TO_CREATE_DOC 0x3F104
+AFX_HIDP_FILE_TOO_LARGE 0x3F105
+AFX_HIDP_FAILED_TO_START_PRINT 0x3F106
+AFX_HIDP_FAILED_TO_LAUNCH_HELP 0x3F107
+AFX_HIDP_INTERNAL_FAILURE 0x3F108
+AFX_HIDP_COMMAND_FAILURE 0x3F109
+AFX_HIDP_FAILED_MEMORY_ALLOC 0x3F10A
+AFX_HIDP_PARSE_INT 0x3F110
+AFX_HIDP_PARSE_REAL 0x3F111
+AFX_HIDP_PARSE_INT_RANGE 0x3F112
+AFX_HIDP_PARSE_REAL_RANGE 0x3F113
+AFX_HIDP_PARSE_STRING_SIZE 0x3F114
+AFX_HIDP_PARSE_RADIO_BUTTON 0x3F115
+AFX_HIDP_PARSE_BYTE 0x3F116
+AFX_HIDP_PARSE_UINT 0x3F117
+AFX_HIDP_PARSE_DATETIME 0x3F118
+AFX_HIDP_PARSE_CURRENCY 0x3F119
+AFX_HIDP_FAILED_INVALID_FORMAT 0x3F120
+AFX_HIDP_FAILED_INVALID_PATH 0x3F121
+AFX_HIDP_FAILED_DISK_FULL 0x3F122
+AFX_HIDP_FAILED_ACCESS_READ 0x3F123
+AFX_HIDP_FAILED_ACCESS_WRITE 0x3F124
+AFX_HIDP_FAILED_IO_ERROR_READ 0x3F125
+AFX_HIDP_FAILED_IO_ERROR_WRITE 0x3F126
+AFX_HIDP_STATIC_OBJECT 0x3F180
+AFX_HIDP_FAILED_TO_CONNECT 0x3F181
+AFX_HIDP_SERVER_BUSY 0x3F182
+AFX_HIDP_BAD_VERB 0x3F183
+AFX_HIDP_FAILED_TO_NOTIFY 0x3F185
+AFX_HIDP_FAILED_TO_LAUNCH 0x3F186
+AFX_HIDP_ASK_TO_UPDATE 0x3F187
+AFX_HIDP_FAILED_TO_UPDATE 0x3F188
+AFX_HIDP_FAILED_TO_REGISTER 0x3F189
+AFX_HIDP_FAILED_TO_AUTO_REGISTER 0x3F18A
+AFX_HIDP_FAILED_TO_CONVERT 0x3F18B
+AFX_HIDP_GET_NOT_SUPPORTED 0x3F18C
+AFX_HIDP_SET_NOT_SUPPORTED 0x3F18D
+AFX_HIDP_ASK_TO_DISCARD 0x3F18E
+AFX_HIDP_FAILED_TO_CREATE 0x3F18F
+AFX_HIDP_FAILED_MAPI_LOAD 0x3F190
+AFX_HIDP_INVALID_MAPI_DLL 0x3F191
+AFX_HIDP_FAILED_MAPI_SEND 0x3F192
+AFX_HIDP_FILE_NONE 0x3F1A0
+AFX_HIDP_FILE_GENERIC 0x3F1A1
+AFX_HIDP_FILE_NOT_FOUND 0x3F1A2
+AFX_HIDP_FILE_BAD_PATH 0x3F1A3
+AFX_HIDP_FILE_TOO_MANY_OPEN 0x3F1A4
+AFX_HIDP_FILE_ACCESS_DENIED 0x3F1A5
+AFX_HIDP_FILE_INVALID_FILE 0x3F1A6
+AFX_HIDP_FILE_REMOVE_CURRENT 0x3F1A7
+AFX_HIDP_FILE_DIR_FULL 0x3F1A8
+AFX_HIDP_FILE_BAD_SEEK 0x3F1A9
+AFX_HIDP_FILE_HARD_IO 0x3F1AA
+AFX_HIDP_FILE_SHARING 0x3F1AB
+AFX_HIDP_FILE_LOCKING 0x3F1AC
+AFX_HIDP_FILE_DISKFULL 0x3F1AD
+AFX_HIDP_FILE_EOF 0x3F1AE
+AFX_HIDP_ARCH_NONE 0x3F1B0
+AFX_HIDP_ARCH_GENERIC 0x3F1B1
+AFX_HIDP_ARCH_READONLY 0x3F1B2
+AFX_HIDP_ARCH_ENDOFFILE 0x3F1B3
+AFX_HIDP_ARCH_WRITEONLY 0x3F1B4
+AFX_HIDP_ARCH_BADINDEX 0x3F1B5
+AFX_HIDP_ARCH_BADCLASS 0x3F1B6
+AFX_HIDP_ARCH_BADSCHEMA 0x3F1B7
+AFX_HIDP_SQL_CONNECT_FAIL 0x3F281
+AFX_HIDP_SQL_RECORDSET_FORWARD_ONLY 0x3F282
+AFX_HIDP_SQL_EMPTY_COLUMN_LIST 0x3F283
+AFX_HIDP_SQL_FIELD_SCHEMA_MISMATCH 0x3F284
+AFX_HIDP_SQL_ILLEGAL_MODE 0x3F285
+AFX_HIDP_SQL_MULTIPLE_ROWS_AFFECTED 0x3F286
+AFX_HIDP_SQL_NO_CURRENT_RECORD 0x3F287
+AFX_HIDP_SQL_NO_ROWS_AFFECTED 0x3F288
+AFX_HIDP_SQL_RECORDSET_READONLY 0x3F289
+AFX_HIDP_SQL_SQL_NO_TOTAL 0x3F28A
+AFX_HIDP_SQL_ODBC_LOAD_FAILED 0x3F28B
+AFX_HIDP_SQL_DYNASET_NOT_SUPPORTED 0x3F28C
+AFX_HIDP_SQL_SNAPSHOT_NOT_SUPPORTED 0x3F28D
+AFX_HIDP_SQL_API_CONFORMANCE 0x3F28E
+AFX_HIDP_SQL_SQL_CONFORMANCE 0x3F28F
+AFX_HIDP_SQL_NO_DATA_FOUND 0x3F290
+AFX_HIDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0x3F291
+AFX_HIDP_SQL_ODBC_V2_REQUIRED 0x3F292
+AFX_HIDP_SQL_NO_POSITIONED_UPDATES 0x3F293
+AFX_HIDP_SQL_LOCK_MODE_NOT_SUPPORTED 0x3F294
+AFX_HIDP_SQL_DATA_TRUNCATED 0x3F295
+AFX_HIDP_SQL_ROW_FETCH 0x3F296
+AFX_HIDP_SQL_INCORRECT_ODBC 0x3F297
+AFX_HIDP_SQL_UPDATE_DELETE_FAILED 0x3F298
+AFX_HIDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0x3F299
+AFX_HIDP_DAO_ENGINE_INITIALIZATION 0x3F2A0
+AFX_HIDP_DAO_DFX_BIND 0x3F2A1
+AFX_HIDP_DAO_OBJECT_NOT_OPEN 0x3F2A2
+AFX_HIDP_DAO_ROWTOOSHORT 0x3F2A3
+AFX_HIDP_DAO_BADBINDINFO 0x3F2A4
+AFX_HIDP_DAO_COLUMNUNAVAILABLE 0x3F2A5
+
+// Frame Controls (AFX_HIDW_*)
+AFX_HIDW_TOOLBAR 0x5E800
+AFX_HIDW_STATUS_BAR 0x5E801
+AFX_HIDW_PREVIEW_BAR 0x5E802
+AFX_HIDW_RESIZE_BAR 0x5E803
+AFX_HIDW_DOCKBAR_TOP 0x5E81B
+AFX_HIDW_DOCKBAR_LEFT 0x5E81C
+AFX_HIDW_DOCKBAR_RIGHT 0x5E81D
+AFX_HIDW_DOCKBAR_BOTTOM 0x5E81E
+AFX_HIDW_DOCKBAR_FLOAT 0x5E81F
+
diff --git a/public/sdk/inc/mfc42/afxinet.h b/public/sdk/inc/mfc42/afxinet.h
new file mode 100644
index 000000000..25b6e623c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxinet.h
@@ -0,0 +1,671 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef _MAC
+
+#ifndef __AFXINET_H_
+#define __AFXINET_H_
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifndef _WININET_
+#include <wininet.h>
+#endif
+
+#ifndef _AFXDLL
+#pragma comment(lib, "WININET.LIB")
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// classes that are declared in this file
+
+class CInternetSession; // from CObject
+
+class CGopherLocator; // from CObject
+
+class CInternetFile; // from CStdioFile (FILETXT.CPP)
+ class CHttpFile;
+ class CGopherFile;
+
+class CInternetConnection;
+ class CFtpConnection;
+ class CGopherConnection;
+ class CHttpConnection;
+
+class CFtpFileFind; // from CFileFind (FILEFIND.CPP)
+class CGopherFileFind;
+
+class CInternetException;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Global Functions
+
+BOOL AFXAPI AfxParseURL(LPCTSTR pstrURL, DWORD& dwServiceType,
+ CString& strServer, CString& strObject, INTERNET_PORT& nPort);
+
+DWORD AFXAPI AfxGetInternetHandleType(HINTERNET hQuery);
+
+// see CInternetException at the bottom of this file
+
+void AFXAPI AfxThrowInternetException(DWORD dwContext, DWORD dwError = 0);
+
+// these are defined by WININET.H
+
+#define AFX_INET_SERVICE_FTP INTERNET_SERVICE_FTP
+#define AFX_INET_SERVICE_HTTP INTERNET_SERVICE_HTTP
+#define AFX_INET_SERVICE_GOPHER INTERNET_SERVICE_GOPHER
+
+// these are types that MFC parsing functions understand
+
+#define AFX_INET_SERVICE_UNK 0x1000
+#define AFX_INET_SERVICE_FILE (AFX_INET_SERVICE_UNK+1)
+#define AFX_INET_SERVICE_MAILTO (AFX_INET_SERVICE_UNK+2)
+#define AFX_INET_SERVICE_MID (AFX_INET_SERVICE_UNK+3)
+#define AFX_INET_SERVICE_CID (AFX_INET_SERVICE_UNK+4)
+#define AFX_INET_SERVICE_NEWS (AFX_INET_SERVICE_UNK+5)
+#define AFX_INET_SERVICE_NNTP (AFX_INET_SERVICE_UNK+6)
+#define AFX_INET_SERVICE_PROSPERO (AFX_INET_SERVICE_UNK+7)
+#define AFX_INET_SERVICE_TELNET (AFX_INET_SERVICE_UNK+8)
+#define AFX_INET_SERVICE_WAIS (AFX_INET_SERVICE_UNK+9)
+#define AFX_INET_SERVICE_AFS (AFX_INET_SERVICE_UNK+10)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// classes that are declared in this file
+
+class CInternetSession : public CObject
+{
+public:
+ CInternetSession(LPCTSTR pstrAgent = NULL,
+ DWORD dwContext = 1,
+ DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,
+ LPCTSTR pstrProxyName = NULL,
+ LPCTSTR pstrProxyBypass = NULL,
+ DWORD dwFlags = 0);
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+ CStdioFile* OpenURL(LPCTSTR pstrURL,
+ DWORD dwContext = 1, DWORD dwFlags = 0,
+ LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0);
+
+ CFtpConnection* GetFtpConnection(LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ BOOL bPassive = FALSE);
+
+ CHttpConnection* GetHttpConnection(LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL);
+
+ CGopherConnection* GetGopherConnection(LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+ BOOL EnableStatusCallback(BOOL bEnable = TRUE);
+
+ DWORD ServiceTypeFromHandle(HINTERNET hQuery);
+
+// operations
+
+ DWORD GetContext() const;
+ operator HINTERNET() const;
+ virtual void Close();
+
+// overridables
+ virtual void OnStatusCallback(DWORD dwContext, DWORD dwInternetStatus,
+ LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
+
+// implementation
+ DECLARE_DYNAMIC(CInternetSession)
+ ~CInternetSession();
+
+protected:
+ DWORD m_dwContext;
+ HINTERNET m_hSession;
+ INTERNET_STATUS_CALLBACK m_pOldCallback;
+ BOOL m_bCallbackEnabled;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+// Internet File Access Wrapper
+
+class CInternetFile : public CStdioFile
+{
+// Constructors
+protected:
+ CInternetFile(HINTERNET hFile, LPCTSTR pstrFileName,
+ CInternetConnection* pConnection, BOOL bReadMode);
+ CInternetFile(HINTERNET hFile, HINTERNET hSession,
+ LPCTSTR pstrFileName, LPCTSTR pstrServer, DWORD dwContext,
+ BOOL bReadMode);
+
+// Attributes
+protected:
+ HINTERNET m_hFile;
+public:
+ operator HINTERNET() const;
+ DWORD GetContext() const;
+
+// Operations
+ BOOL SetWriteBufferSize(UINT nWriteSize);
+ BOOL SetReadBufferSize(UINT nReadSize);
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+// Overridables
+ virtual LONG Seek(LONG lOffset, UINT nFrom);
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void Abort();
+ virtual void Flush();
+
+ virtual void Close();
+ virtual DWORD GetLength() const;
+
+ virtual BOOL ReadString(CString& rString);
+ virtual LPTSTR ReadString(LPTSTR pstr, UINT nMax);
+ virtual void WriteString(LPCTSTR pstr);
+
+ // Not supported by CInternetFile
+ void LockRange(DWORD dwPos, DWORD dwCount);
+ void UnlockRange(DWORD dwPos, DWORD dwCount);
+ CFile* Duplicate() const;
+ virtual void SetLength(DWORD dwNewLen);
+
+// Implementation
+public:
+ virtual ~CInternetFile();
+
+protected:
+ BOOL m_bReadMode;
+ DWORD m_dwContext;
+ HINTERNET m_hConnection;
+
+ CString m_strServerName;
+
+ UINT m_nWriteBufferSize;
+ UINT m_nWriteBufferPos;
+ LPBYTE m_pbWriteBuffer;
+
+ UINT m_nReadBufferSize;
+ UINT m_nReadBufferPos;
+ LPBYTE m_pbReadBuffer;
+ UINT m_nReadBufferBytes;
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CInternetSession;
+ friend class CFtpConnection;
+ friend class CHttpConnection;
+ friend class CGopherConnection;
+ DECLARE_DYNAMIC(CInternetFile)
+};
+
+
+class CHttpFile : public CInternetFile
+{
+// Constructors
+protected:
+ CHttpFile(HINTERNET hFile, HINTERNET hSession, LPCTSTR pstrObject,
+ LPCTSTR pstrServer, LPCTSTR pstrVerb, DWORD dwContext);
+ CHttpFile(HINTERNET hFile, LPCTSTR pstrVerb, LPCTSTR pstrObject,
+ CHttpConnection* pConnection);
+
+// Operations
+public:
+ BOOL AddRequestHeaders(LPCTSTR pstrHeaders,
+ DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW, int dwHeadersLen = -1);
+ BOOL AddRequestHeaders(CString& str,
+ DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW);
+
+ BOOL SendRequest(LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLen = 0,
+ LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
+ BOOL SendRequest(CString& strHeaders,
+ LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
+ BOOL QueryInfo(DWORD dwInfoLevel, LPVOID lpvBuffer,
+ LPDWORD lpdwBufferLength, LPDWORD lpdwIndex = NULL) const;
+ BOOL QueryInfo(DWORD dwInfoLevel, CString& str,
+ LPDWORD dwIndex = NULL) const;
+ BOOL QueryInfo(DWORD dwInfoLevel, SYSTEMTIME* pSysTime,
+ LPDWORD dwIndex = NULL) const;
+ BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
+
+ DWORD ErrorDlg(CWnd* pParent = NULL, DWORD dwError = ERROR_INTERNET_INCORRECT_PASSWORD,
+ DWORD dwFlags = FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
+ LPVOID* lppvData = NULL);
+
+// Attributes
+public:
+ CString GetVerb() const;
+ CString GetObject() const;
+ virtual CString GetFileURL() const;
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CHttpFile();
+protected:
+ CString m_strObject;
+ CString m_strVerb;
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CHttpConnection;
+ friend class CInternetSession;
+ DECLARE_DYNAMIC(CHttpFile)
+};
+
+// class CGopherFile is declared after CGopherLocator, below
+
+
+////////////////////////////////////////////////////////////////////////////
+// Connection types
+
+class CInternetConnection : public CObject
+{
+public:
+ CInternetConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ DWORD dwContext = 1);
+
+// Operations
+ operator HINTERNET() const;
+ DWORD GetContext() const;
+ CInternetSession* GetSession() const;
+
+ CString GetServerName() const;
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+// Implementation
+protected:
+ HINTERNET m_hConnection;
+ DWORD m_dwContext;
+ CInternetSession* m_pSession;
+ virtual void Close();
+
+ CString m_strServerName;
+ INTERNET_PORT m_nPort;
+
+public:
+ ~CInternetConnection();
+ DECLARE_DYNAMIC(CInternetConnection)
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ void AssertValid() const;
+#endif
+};
+
+class CFtpConnection : public CInternetConnection
+{
+public:
+ CFtpConnection(CInternetSession* pSession, HINTERNET hConnected,
+ LPCTSTR pstrServer, DWORD dwContext);
+ CFtpConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 0,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ BOOL bPassive = FALSE);
+
+ BOOL SetCurrentDirectory(LPCTSTR pstrDirName);
+
+ BOOL GetCurrentDirectory(CString& strDirName) const;
+ BOOL GetCurrentDirectory(LPTSTR pstrDirName, LPDWORD lpdwLen) const;
+ BOOL GetCurrentDirectoryAsURL(LPTSTR pstrName, LPDWORD lpdwLen) const;
+ BOOL GetCurrentDirectoryAsURL(CString& strDirName) const;
+
+ BOOL RemoveDirectory(LPCTSTR pstrDirName);
+ BOOL CreateDirectory(LPCTSTR pstrDirName);
+ BOOL Rename(LPCTSTR pstrExisting, LPCTSTR pstrNew);
+ BOOL Remove(LPCTSTR pstrFileName);
+
+ BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile,
+ BOOL bFailIfExists = TRUE,
+ DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ CInternetFile* OpenFile(LPCTSTR pstrFileName,
+ DWORD dwAccess = GENERIC_READ,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ virtual void Close();
+
+// implementation
+ ~CFtpConnection();
+
+protected:
+ CString m_strServerName;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFtpConnection)
+};
+
+class CHttpConnection : public CInternetConnection
+{
+public:
+ enum {
+ _HTTP_VERB_MIN = 0,
+ HTTP_VERB_POST = 0,
+ HTTP_VERB_GET = 1,
+ HTTP_VERB_HEAD = 2,
+ HTTP_VERB_PUT = 3,
+ HTTP_VERB_LINK = 4,
+ HTTP_VERB_DELETE = 5,
+ HTTP_VERB_UNLINK = 6,
+ _HTTP_VERB_MAX = 6,
+ };
+
+public:
+ CHttpConnection(CInternetSession* pSession, HINTERNET hConnected,
+ LPCTSTR pstrServer, DWORD dwContext);
+ CHttpConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 1);
+
+ CHttpFile* OpenRequest(LPCTSTR pstrVerb, LPCTSTR pstrObjectName,
+ LPCTSTR pstrReferer = NULL,DWORD dwContext = 1,
+ LPCTSTR* ppstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL,
+ DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT);
+
+ CHttpFile* OpenRequest(int nVerb, LPCTSTR pstrObjectName,
+ LPCTSTR pstrReferer = NULL, DWORD dwContext = 1,
+ LPCTSTR* ppstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL,
+ DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT);
+
+// implementation
+ ~CHttpConnection();
+ virtual void Close();
+
+protected:
+ CString m_strServerName;
+ static const LPCTSTR szHtmlVerbs[];
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ friend class CInternetSession; // just to access szHtmlVerbs
+ DECLARE_DYNAMIC(CHttpConnection)
+};
+
+class CGopherConnection : public CInternetConnection
+{
+public:
+ CGopherConnection(CInternetSession* pSession,
+ HINTERNET hConnected, LPCTSTR pstrServer, DWORD dwContext);
+
+ CGopherConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 0,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+ CGopherFile* OpenFile(CGopherLocator& refLocator, DWORD dwFlags = 0,
+ LPCTSTR pstrView = NULL, DWORD dwContext = 1);
+
+ CGopherLocator CreateLocator(LPCTSTR pstrDisplayString,
+ LPCTSTR pstrSelectorString, DWORD dwGopherType);
+
+ BOOL CGopherConnection::GetAttribute(CGopherLocator& refLocator,
+ CString strRequestedAttributes, CString& strResult);
+
+ static CGopherLocator CreateLocator(LPCTSTR pstrLocator);
+ static CGopherLocator CreateLocator(LPCTSTR pstrServerName,
+ LPCTSTR pstrDisplayString,
+ LPCTSTR pstrSelectorString, DWORD dwGopherType,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+// implementation
+ ~CGopherConnection();
+ virtual void Close();
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ DECLARE_DYNAMIC(CGopherConnection)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CFtpFileFind
+
+class CFtpFileFind : public CFileFind
+{
+public:
+ CFtpFileFind(CFtpConnection* pConnection, DWORD dwContext = 1);
+ virtual ~CFtpFileFind();
+
+ virtual BOOL FindFile(LPCTSTR pstrName = NULL,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindNextFile();
+ CString GetFileURL() const;
+
+// implementation
+protected:
+ virtual void CloseContext();
+ CFtpConnection* m_pConnection;
+ DWORD m_dwContext;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFtpFileFind)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherLocator
+
+class CGopherLocator : public CObject
+{
+public:
+ ~CGopherLocator();
+ operator LPCTSTR() const;
+ CGopherLocator(const CGopherLocator& ref);
+ BOOL GetLocatorType(DWORD& dwRef) const;
+
+private:
+ // this only created by CGopherConnection::CreateLocator or by serialization
+ CGopherLocator(LPCTSTR pstrLocator, DWORD dwLocLen);
+
+ CString m_Locator; // _not_ a zero-terminated string!
+ DWORD m_dwBufferLength;
+
+ friend class CGopherConnection;
+ friend class CGopherFile;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherFile
+
+class CGopherFile : public CInternetFile
+{
+// Constructors
+protected:
+ CGopherFile(HINTERNET hFile, CGopherLocator& refLocator,
+ CGopherConnection* pConnection);
+ CGopherFile(HINTERNET hFile, HINTERNET hSession,
+ LPCTSTR pstrLocator, DWORD dwLocLen, DWORD dwContext);
+
+// Operations
+public:
+ virtual void Close();
+ virtual void Write(const void* lpBuf, UINT nCount);
+ void WriteString(LPCTSTR pstr);
+
+// Implementation
+protected:
+ CGopherLocator m_Locator;
+public:
+ virtual ~CGopherFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CInternetSession;
+ friend class CGopherConnection;
+ DECLARE_DYNAMIC(CGopherFile)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherFileFind
+
+class CGopherFileFind : public CFileFind
+{
+public:
+ CGopherFileFind(CGopherConnection* pConnection, DWORD dwContext = 1);
+ virtual ~CGopherFileFind();
+
+ virtual BOOL FindFile(CGopherLocator& refLocator, LPCTSTR pstrString,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindFile(LPCTSTR pstrString,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindNextFile();
+
+ virtual BOOL IsDots() const;
+
+ virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastWriteTime(CTime& refTime) const;
+ virtual BOOL GetLastAccessTime(CTime& refTime) const;
+ virtual BOOL GetCreationTime(CTime& refTime) const;
+
+ CGopherLocator GetLocator() const;
+ CString GetScreenName() const;
+
+ virtual DWORD GetLength() const;
+#if defined(_X86_) || defined(_ALPHA_)
+ virtual __int64 GetLength64() const;
+#endif
+
+protected:
+ virtual void CloseContext();
+ CGopherConnection* m_pConnection;
+ DWORD m_dwContext;
+
+// implementation
+public:
+ // Unsupported APIs
+ CString GetFileName() const;
+ CString GetFilePath() const;
+ CString GetFileTitle() const;
+ CString GetFileURL() const;
+ CString GetRoot() const;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ DECLARE_DYNAMIC(CGopherFileFind)
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// CInternetException
+
+class CInternetException : public CException
+{
+public:
+// Constructor
+ CInternetException(DWORD dwError);
+
+// Attributes
+ DWORD m_dwError;
+ DWORD m_dwContext;
+
+// Implementation
+public:
+ ~CInternetException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpstrError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+ DECLARE_DYNAMIC(CInternetException)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXINET_INLINE inline
+#include <afxinet.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXINET_H__
+
+#endif // _MAC
diff --git a/public/sdk/inc/mfc42/afxinet.inl b/public/sdk/inc/mfc42/afxinet.inl
new file mode 100644
index 000000000..69f4fda8d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxinet.inl
@@ -0,0 +1,69 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXINET.H
+
+/////////////////////////////////////////////////////////////////////////////
+//
+
+#ifdef _AFXINET_INLINE
+
+_AFXINET_INLINE DWORD CInternetSession::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE CString CInternetConnection::GetServerName() const
+ { return m_strServerName; }
+
+_AFXINET_INLINE CInternetSession* CInternetConnection::GetSession() const
+ { return m_pSession; }
+
+_AFXINET_INLINE CInternetSession::operator HINTERNET() const
+ { return m_hSession; }
+
+_AFXINET_INLINE BOOL CInternetSession::SetOption(DWORD dwOption, DWORD dwValue,
+ DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+_AFXINET_INLINE CGopherLocator::operator LPCTSTR() const
+ { return (LPCTSTR) m_Locator; }
+
+_AFXINET_INLINE BOOL CGopherLocator::GetLocatorType(DWORD& dwRef) const
+ { return GopherGetLocatorType((LPCTSTR) m_Locator, &dwRef); }
+
+_AFXINET_INLINE CGopherLocator::CGopherLocator(const CGopherLocator& ref)
+ { m_Locator = ref.m_Locator; m_dwBufferLength = ref.m_dwBufferLength; }
+
+
+_AFXINET_INLINE CInternetConnection::operator HINTERNET() const
+ { return m_hConnection; }
+
+_AFXINET_INLINE DWORD CInternetConnection::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE BOOL CInternetConnection::SetOption(DWORD dwOption,
+ DWORD dwValue, DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+_AFXINET_INLINE DWORD CInternetFile::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE CInternetFile::operator HINTERNET() const
+ { return m_hFile; }
+
+_AFXINET_INLINE BOOL CInternetFile::SetOption(DWORD dwOption, DWORD dwValue,
+ DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+#endif //_AFXINET_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxisapi.h b/public/sdk/inc/mfc42/afxisapi.h
new file mode 100644
index 000000000..e743682c9
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.h
@@ -0,0 +1,561 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_H_
+#define __AFXISAPI_H_
+
+#ifdef _UNICODE
+#error ERROR: ISAPI does not yet support Unicode.
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in retail version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#define STRICT 1
+
+#ifndef _DEBUG
+#ifndef _AFX_ENABLE_INLINES
+#define _AFX_EANBLE_INLINES
+#endif
+#endif
+
+#include <httpext.h>
+#include <httpfilt.h>
+
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TCHAR
+ #include <tchar.h>
+#endif
+
+#ifndef UNUSED
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#endif
+
+#define AFXISAPI __stdcall
+#define AFXIS_DATADEF
+
+/////////////////////////////////////////////////////////////////////////////
+// Internet Server API Library
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+#ifdef _AFXDLL
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISUD.lib")
+ #else
+ #pragma comment(lib, "EAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISU.lib")
+ #else
+ #pragma comment(lib, "EAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#else
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXISD.lib")
+ #else
+ #pragma comment(lib, "NAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXIS.lib")
+ #else
+ #pragma comment(lib, "NAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#endif // _AFXDLL
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+
+#endif // _MAC
+#endif // _AFX_NOFORCE_LIBS
+
+extern HINSTANCE AFXISAPI AfxGetResourceHandle();
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXIASPI - MFC Internet Server API support
+
+// Classes declared in this file
+
+class CHtmlStream;
+class CHttpServerContext;
+class CHttpServer;
+class CHttpFilterContext;
+class CHttpFilter;
+
+
+///////////////////////////////////////////////////////////////////////
+// CHtmlStream -- manages in-memory HTML
+
+class CHtmlStream
+{
+public:
+// Constructors
+ CHtmlStream(UINT nGrowBytes = 4096);
+ CHtmlStream(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+ DWORD GetStreamSize() const;
+
+ virtual void Abort();
+ virtual void Close();
+ virtual void InitStream();
+ virtual void Reset();
+
+ CHtmlStream& operator<<(LPCTSTR psz);
+ CHtmlStream& operator<<(short int w);
+ CHtmlStream& operator<<(long int dw);
+ CHtmlStream& operator<<(CHtmlStream& stream);
+ CHtmlStream& operator<<(double d);
+ CHtmlStream& operator<<(float f);
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void GrowStream(DWORD dwNewLen);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ DWORD m_nStreamSize;
+
+public:
+ virtual void Free(BYTE* lpMem);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CHtmlStream();
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Status codes for HTTP transactions
+
+#ifndef _WININET_ // these symbols may come from WININET.H
+
+#define HTTP_STATUS_OK 200 // OK
+#define HTTP_STATUS_CREATED 201 // created
+#define HTTP_STATUS_ACCEPTED 202 // accepted
+#define HTTP_STATUS_NO_CONTENT 204 // no content
+#define HTTP_STATUS_REDIRECT 301 // moved permanently
+#define HTTP_STATUS_TEMP_REDIRECT 302 // moved temporarily
+#define HTTP_STATUS_NOT_MODIFIED 304 // not modified
+#define HTTP_STATUS_BAD_REQUEST 400 // bad request
+#define HTTP_STATUS_AUTH_REQUIRED 401 // unauthorized
+#define HTTP_STATUS_FORBIDDEN 403 // forbidden
+#define HTTP_STATUS_NOT_FOUND 404 // not found
+#define HTTP_STATUS_SERVER_ERROR 500 // internal server error
+#define HTTP_STATUS_NOT_IMPLEMENTED 501 // not implemented
+#define HTTP_STATUS_BAD_GATEWAY 502 // bad gateway
+#define HTTP_STATUS_SERVICE_NA 503 // service unavailable
+
+#endif
+
+///////////////////////////////////////////////////////////////////////
+// Parse Map macros
+
+#ifndef AFX_PARSE_CALL
+#define AFX_PARSE_CALL
+#endif
+
+typedef void (AFX_PARSE_CALL CHttpServer::*AFX_PISAPICMD)(CHttpServerContext* pCtxt);
+
+struct AFX_PARSEMAP_ENTRY; // declared after CHttpServer, below
+
+struct AFX_PARSEMAP
+{
+ UINT (PASCAL* pfnGetNumMapEntries)();
+#ifdef _AFXDLL
+ const AFX_PARSEMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_PARSEMAP* pBaseMap;
+#endif
+ const AFX_PARSEMAP_ENTRY* lpEntries;
+ ~AFX_PARSEMAP();
+};
+
+struct AFX_PARSEMAP_ENTRY_PARAMS
+{
+ int nParams; // number of parameters
+ int nRequired; // number of parameters without defaults
+ // all of these are arrays!
+ LPTSTR* ppszInfo; // pointers to name[2n], pointer to default[2n+1]
+ BYTE* ppszDefaults; // pointers to coerced default values
+ BYTE* ppszValues; // pointers to coerced actual values
+ ~AFX_PARSEMAP_ENTRY_PARAMS();
+};
+
+#ifdef _AFXDLL
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static const AFX_PARSEMAP* PASCAL _GetBaseParseMap(); \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#else
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#endif // _AFXDLL
+
+#ifdef _AFXDLL
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ const AFX_PARSEMAP* PASCAL theClass::_GetBaseParseMap() \
+ { return &baseClass::parseMap; } \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &theClass::_GetBaseParseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#else
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &baseClass::parseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#endif
+
+#define ON_PARSE_COMMAND(FnName, mapClass, Args) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, Args },
+
+#define ON_PARSE_COMMAND_PARAMS(Params) \
+ { NULL, (AFX_PISAPICMD) NULL, Params },
+
+#define DEFAULT_PARSE_COMMAND(FnName, mapClass) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, NULL },
+
+#define END_PARSE_MAP(theClass) \
+ }; \
+ UINT PASCAL theClass::GetNumMapEntries() { \
+ return sizeof(theClass::_parseEntries) /\
+ sizeof(AFX_PARSEMAP_ENTRY); } \
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpServerContext
+{
+public:
+ CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB);
+ virtual ~CHttpServerContext();
+
+// Operations
+ BOOL GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes, DWORD dwReserved = 0);
+ BOOL ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ CHttpServerContext& operator<<(LPCTSTR psz);
+ CHttpServerContext& operator<<(long int dw);
+ CHttpServerContext& operator<<(short int w);
+ CHttpServerContext& operator<<(CHtmlStream& stream);
+ CHttpServerContext& operator<<(double d);
+ CHttpServerContext& operator<<(float f);
+
+ void Reset();
+
+// Attributes
+ EXTENSION_CONTROL_BLOCK* const m_pECB;
+ CHtmlStream* m_pStream;
+ DWORD m_dwEndOfHeaders;
+#ifdef _DEBUG
+ DWORD m_dwOldEndOfHeaders;
+#endif
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Extension Support
+
+class CHttpServer
+{
+public:
+ CHttpServer(TCHAR cDelimiter = '&');
+ virtual ~CHttpServer();
+
+ enum errors {
+ callOK = 0, // everything is fine
+ callParamRequired, // a required parameter was missing
+ callBadParamCount, // there were too many or too few parameters
+ callBadCommand, // the command name was not found
+ callNoStackSpace, // no stack space was available
+ callNoStream, // no CHtmlStream was available
+ callMissingQuote, // a parameter had a bad format
+ callMissingParams, // no parameters were available
+ callBadParam, // a paremeter had a bad format (ie, only one quote)
+ };
+
+// overridables
+ virtual int CallFunction(CHttpServerContext* pCtxt,
+ LPTSTR pszQuery, LPTSTR pszCommand);
+ virtual BOOL OnParseError(CHttpServerContext* pCtxt, int nCause);
+
+// operations
+ virtual void EndContent(CHttpServerContext* pCtxt) const;
+ virtual void StartContent(CHttpServerContext* pCtxt) const;
+ virtual void WriteTitle(CHttpServerContext* pCtxt) const;
+ virtual LPCTSTR GetTitle() const;
+ void AddHeader(CHttpServerContext* pCtxt, LPCTSTR pszString) const;
+
+ virtual DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+ virtual BOOL GetExtensionVersion(HSE_VERSION_INFO *pVer);
+ virtual CHtmlStream* ConstructStream();
+
+ virtual BOOL InitInstance(CHttpServerContext* pCtxt);
+
+// implementation
+
+protected:
+ UINT PASCAL GetStackSize(const BYTE* pbParams);
+ int CallMemberFunc(CHttpServerContext* pCtxt,
+ const AFX_PARSEMAP_ENTRY* pEntry,
+ AFX_PARSEMAP_ENTRY* pParams, LPTSTR szParams);
+ LPTSTR GetQuery(CHttpServerContext* pCtxt,
+ LPTSTR lpszQuery, DWORD cbQuery);
+ const AFX_PARSEMAP_ENTRY* LookUp(LPCTSTR szMethod,
+ const AFX_PARSEMAP*& pMap, AFX_PARSEMAP_ENTRY*& pParams,
+ AFX_PISAPICMD pCmdDefault = NULL);
+ int CountParams(LPCTSTR pszCommandLine, int& nCount);
+ int ParseDefaultParams(AFX_PARSEMAP_ENTRY* pParams,
+ int nParams, AFX_PARSEMAP_ENTRY_PARAMS*& pBlock,
+ const BYTE* pbTypes);
+ LPVOID PreprocessString(LPTSTR psz);
+ void BuildStatusCode(LPTSTR szResponse, DWORD dwCode);
+
+#if defined(_PPC_) || defined(_MPPC_)
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams,
+ int nSizeArgs);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams, UINT nSizeArgs);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType,
+ LPTSTR pszCurParam, UINT nSizeArgs, BOOL bDoShadow);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType,
+ BYTE* pRawParam, int nSizeArgs);
+#else
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType, LPTSTR pszParam);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType, BYTE* pRawParam);
+#endif
+
+ LPCRITICAL_SECTION m_pCritSec;
+ const TCHAR m_cTokenDelimiter; // can't EVER change
+
+ DECLARE_PARSE_MAP()
+};
+
+extern "C" BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer);
+extern "C" DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+
+struct AFX_PARSEMAP_ENTRY
+{
+ LPTSTR pszFnName; // if default param entry, ptr to AFX_PARSEMAP_ENTRY_PARAMS
+ AFX_PISAPICMD pfn; // NULL if default param entry
+ LPSTR pszArgs; // NULL if default function entry
+};
+
+///////////////////////////////////////////////////////////////////////
+// Constants to describe parameter types
+
+#define ITS_EMPTY "\x06" // no parameters
+#define ITS_I2 "\x01" // a 'short'
+#define ITS_I4 "\x02" // a 'long'
+#define ITS_R4 "\x03" // a 'float'
+#define ITS_R8 "\x04" // a 'double'
+#define ITS_PSTR "\x05" // a 'LPCTSTR'
+
+enum INETVARENUM
+{
+ IT_I2 = 1,
+ IT_I4 = 2,
+ IT_R4 = 3,
+ IT_R8 = 4,
+ IT_PSTR = 5,
+ IT_EMPTY = 6,
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Entry Points
+
+extern "C" DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+
+extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Filter Support
+
+class CHttpFilterContext
+{
+public:
+ CHttpFilterContext(PHTTP_FILTER_CONTEXT pfc);
+ ~CHttpFilterContext() { }
+
+ BOOL GetServerVariable(LPTSTR lpszVariableName, LPVOID lpvBuffer,
+ LPDWORD lpdwSize);
+ BOOL AddResponseHeaders(LPTSTR lpszHeaders, DWORD dwReserved = 0);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved = 0);
+ LPVOID AllocMem(DWORD cbSize, DWORD dwReserved = 0);
+ BOOL ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ PHTTP_FILTER_CONTEXT const m_pFC;
+};
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpFilter
+{
+public:
+ CHttpFilter();
+ ~CHttpFilter();
+
+protected:
+
+public:
+ virtual DWORD HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+ virtual BOOL GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+ virtual DWORD OnReadRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnPreprocHeaders(CHttpFilterContext* pfc, PHTTP_FILTER_PREPROC_HEADERS pHeaders);
+ virtual DWORD OnAuthentication(CHttpFilterContext* pfc, PHTTP_FILTER_AUTHENT pAuthent);
+ virtual DWORD OnUrlMap(CHttpFilterContext* pfc, PHTTP_FILTER_URL_MAP pUrlMap);
+ virtual DWORD OnSendRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnLog(CHttpFilterContext* pfc, PHTTP_FILTER_LOG pLog);
+ virtual DWORD OnEndOfNetSession(CHttpFilterContext* pfc);
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Alternate debugging suppot
+
+#include <crtdbg.h>
+
+#ifdef _AFX
+#define ISAPIASSERT(expr) ASSERT(expr)
+#define ISAPITRACE(str) TRACE(str)
+#define ISAPITRACE0(str) TRACE0(str)
+#define ISAPITRACE1(str, arg1) TRACE1(str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) TRACE2(str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) TRACE3(str, arg1, arg2, arg3)
+#define ISAPIVERIFY(f) ASSERT(f)
+#else
+#define ISAPIASSERT(expr) _ASSERTE(expr)
+#define ISAPITRACE(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE0(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE1(str, arg1) _RPT1(_CRT_WARN, str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) _RPT2(_CRT_WARN, str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) _RPT3(_CRT_WARN, arg1, arg2, arg3)
+#ifdef _DEBUG
+#define ISAPIVERIFY(expr) _ASSERTE(expr)
+#else
+#define ISAPIVERIFY(expr) ((void)(expr))
+#endif
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXISAPI_INLINE inline
+#include <afxisapi.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // the whole file
diff --git a/public/sdk/inc/mfc42/afxisapi.inl b/public/sdk/inc/mfc42/afxisapi.inl
new file mode 100644
index 000000000..fabf1e370
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.inl
@@ -0,0 +1,121 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXISAPI.H
+
+#ifdef _AFXISAPI_INLINE
+
+_AFXISAPI_INLINE CHttpServerContext::CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB)
+#ifdef _DEBUG
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0), m_dwOldEndOfHeaders(0)
+#else
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0)
+#endif
+ { }
+
+_AFXISAPI_INLINE CHttpServerContext::~CHttpServerContext()
+ { if (m_pStream != NULL) delete m_pStream; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(double d)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << d;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(float f)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << f;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(long int dw)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << dw;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(short int w)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << w;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(CHtmlStream& stream)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << stream;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(LPCTSTR psz)
+ { ISAPIASSERT(m_pStream != NULL && psz != NULL);
+ if (m_pStream != NULL && psz != NULL) *m_pStream << psz;
+ return *this; }
+
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->GetServerVariable(m_pECB->ConnID,
+ lpszVariableName, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::WriteClient(LPVOID pBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pECB->WriteClient(m_pECB->ConnID, pBuffer,
+ lpdwBytes, dwReserved);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->ReadClient(m_pECB->ConnID, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+ return m_pECB->ServerSupportFunction(m_pECB->ConnID, dwHSERRequest,
+ lpvBuffer, lpdwSize, lpdwDataType);
+ }
+
+
+_AFXISAPI_INLINE DWORD CHtmlStream::GetStreamSize() const
+ { return m_nStreamSize; }
+
+
+_AFXISAPI_INLINE CHttpFilterContext::CHttpFilterContext(PHTTP_FILTER_CONTEXT pCtx)
+ : m_pFC(pCtx)
+ { }
+
+_AFXISAPI_INLINE BOOL CHttpFilterContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pFC->GetServerVariable(m_pFC, lpszVariableName, lpvBuffer, lpdwSize);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::AddResponseHeaders(LPTSTR lpszHeaders,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AddResponseHeaders(m_pFC, lpszHeaders, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::WriteClient(LPVOID lpvBuffer,
+ LPDWORD lpdwBytes, DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->WriteClient(m_pFC, lpvBuffer, lpdwBytes, dwReserved);
+ }
+_AFXISAPI_INLINE LPVOID CHttpFilterContext::AllocMem(DWORD cbSize,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AllocMem(m_pFC, cbSize, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+//WINBUG: HTTPFLT.H has the last two params as type DWORD
+ return m_pFC->ServerSupportFunction(m_pFC, sfReq, lpvBuffer,
+ (DWORD) lpdwSize, (DWORD) lpdwDataType);
+ }
+
+
+#endif // _AFXISAPI_INLINE
diff --git a/public/sdk/inc/mfc42/afxisapi.rc b/public/sdk/inc/mfc42/afxisapi.rc
new file mode 100644
index 000000000..8eeefce07
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.rc
@@ -0,0 +1,45 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_RC__
+#define __AFXISAPI_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// ISAPI HTML Text for HTTP error conditions
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_HTTP_TITLE "<HEAD><TITLE>HTTP Error %d</TITLE></HEAD>"
+ AFX_IDS_HTTP_NO_TEXT "<BODY><H1>HTTP Error %d: No message available</H1></BODY>\r\n"
+ AFX_IDS_HTTP_BAD_REQUEST "<BODY><H1>BAD REQUEST</H1><P>Your client sent a request that this server didn't understand.<br>Request: %s\r\n"
+ AFX_IDS_HTTP_AUTH_REQUIRED "<BODY><H1>AUTH REQUIRED</H1><P>Browser not authentication-capable or authentication failed.</BODY>\r\n"
+ AFX_IDS_HTTP_FORBIDDEN "<BODY><H1>FORBIDDEN</H1><P>Your client does not have permission to get this URL from the server.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_FOUND "<BODY><H1>NOT FOUND</H1><P>The requested URL was not found on this server.</BODY>\r\n"
+ AFX_IDS_HTTP_SERVER_ERROR "<BODY><H1>SERVER ERROR</H1>The server encountered an internal error or misconfiguration and was unable to complete your request.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_IMPLEMENTED "<BODY><H1>NOT IMPLEMENTED</H1>The server is unable to perform the method <b>%s</b> at this time.</BODY>\r\n"
+END
+
+
+#endif //!_AFXDLL
+#endif //!__AFXISAPI_RC__
diff --git a/public/sdk/inc/mfc42/afxmsg_.h b/public/sdk/inc/mfc42/afxmsg_.h
new file mode 100644
index 000000000..73feb1f05
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmsg_.h
@@ -0,0 +1,695 @@
+
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Entries in a message map (a 'AFX_MSGMAP_ENTRY') table can be of 9 formats
+//
+// 1) control notification message (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlID, nControlID, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX, AfxSig_vv, ... )
+// 2) control notification message range (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlIDFirst, nControlIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX1, IDC_LISTBOX5, AfxSig_vw, ... )
+// 3) WM_NOTIFY notification
+// WM_NOTIFY, nNotifyCode, nControlID, nControlID, signature type, ...)
+// 3) Update Command UI
+// -1, 0, nControlID, 0, signature Unknown, parameterless member function
+// 4) Update Command UI Range
+// -1, 0, nControlIDFirst, nControlIDLast, signature Unknown, parameterless member function
+// 5) menu/accelerator notification message (i.e. special case of first format)
+// WM_COMMAND, 0, nID, 0, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILESAVE, 0, AfxSig_vv, ... )
+// 6) menu/accelerator notification message range
+// WM_COMMAND, 0, nIDFirst, nIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILE_MRU1, IDM_FILE_MRU4, AfxSig_vw, ... )
+// 7) constant windows message
+// nMessage, 0, 0, 0, signature type, member function
+// (eg: WM_PAINT, 0, ...)
+// 8) variable windows message (using RegisterWindowMessage)
+// 0xC000, 0, 0, 0, &nMessage, special member function
+//
+// The end of the message map is marked with a special value
+// 0, 0, AfxSig_end, 0
+/////////////////////////////////////////////////////////////////////////////
+
+enum AfxSig
+{
+ AfxSig_end = 0, // [marks end of message map]
+
+ AfxSig_bD, // BOOL (CDC*)
+ AfxSig_bb, // BOOL (BOOL)
+ AfxSig_bWww, // BOOL (CWnd*, UINT, UINT)
+ AfxSig_hDWw, // HBRUSH (CDC*, CWnd*, UINT)
+ AfxSig_hDw, // HBRUSH (CDC*, UINT)
+ AfxSig_iwWw, // int (UINT, CWnd*, UINT)
+ AfxSig_iww, // int (UINT, UINT)
+ AfxSig_iWww, // int (CWnd*, UINT, UINT)
+ AfxSig_is, // int (LPTSTR)
+ AfxSig_lwl, // LRESULT (WPARAM, LPARAM)
+ AfxSig_lwwM, // LRESULT (UINT, UINT, CMenu*)
+ AfxSig_vv, // void (void)
+
+ AfxSig_vw, // void (UINT)
+ AfxSig_vww, // void (UINT, UINT)
+ AfxSig_vvii, // void (int, int) // wParam is ignored
+ AfxSig_vwww, // void (UINT, UINT, UINT)
+ AfxSig_vwii, // void (UINT, int, int)
+ AfxSig_vwl, // void (UINT, LPARAM)
+ AfxSig_vbWW, // void (BOOL, CWnd*, CWnd*)
+ AfxSig_vD, // void (CDC*)
+ AfxSig_vM, // void (CMenu*)
+ AfxSig_vMwb, // void (CMenu*, UINT, BOOL)
+
+ AfxSig_vW, // void (CWnd*)
+ AfxSig_vWww, // void (CWnd*, UINT, UINT)
+ AfxSig_vWp, // void (CWnd*, CPoint)
+ AfxSig_vWh, // void (CWnd*, HANDLE)
+ AfxSig_vwW, // void (UINT, CWnd*)
+ AfxSig_vwWb, // void (UINT, CWnd*, BOOL)
+ AfxSig_vwwW, // void (UINT, UINT, CWnd*)
+ AfxSig_vwwx, // void (UINT, UINT)
+ AfxSig_vs, // void (LPTSTR)
+ AfxSig_vOWNER, // void (int, LPTSTR), force return TRUE
+ AfxSig_iis, // int (int, LPTSTR)
+ AfxSig_wp, // UINT (CPoint)
+ AfxSig_wv, // UINT (void)
+ AfxSig_vPOS, // void (WINDOWPOS*)
+ AfxSig_vCALC, // void (BOOL, NCCALCSIZE_PARAMS*)
+ AfxSig_vNMHDRpl, // void (NMHDR*, LRESULT*)
+ AfxSig_bNMHDRpl, // BOOL (NMHDR*, LRESULT*)
+ AfxSig_vwNMHDRpl, // void (UINT, NMHDR*, LRESULT*)
+ AfxSig_bwNMHDRpl, // BOOL (UINT, NMHDR*, LRESULT*)
+ AfxSig_bHELPINFO, // BOOL (HELPINFO*)
+ AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ // signatures specific to CCmdTarget
+ AfxSig_cmdui, // void (CCmdUI*)
+ AfxSig_cmduiw, // void (CCmdUI*, UINT)
+ AfxSig_vpv, // void (void*)
+ AfxSig_bpv, // BOOL (void*)
+
+ // Other aliases (based on implementation)
+ AfxSig_vwwh, // void (UINT, UINT, HANDLE)
+ AfxSig_vwp, // void (UINT, CPoint)
+ AfxSig_bw = AfxSig_bb, // BOOL (UINT)
+ AfxSig_bh = AfxSig_bb, // BOOL (HANDLE)
+ AfxSig_iw = AfxSig_bb, // int (UINT)
+ AfxSig_ww = AfxSig_bb, // UINT (UINT)
+ AfxSig_bv = AfxSig_wv, // BOOL (void)
+ AfxSig_hv = AfxSig_wv, // HANDLE (void)
+ AfxSig_vb = AfxSig_vw, // void (BOOL)
+ AfxSig_vbh = AfxSig_vww, // void (BOOL, HANDLE)
+ AfxSig_vbw = AfxSig_vww, // void (BOOL, UINT)
+ AfxSig_vhh = AfxSig_vww, // void (HANDLE, HANDLE)
+ AfxSig_vh = AfxSig_vw, // void (HANDLE)
+ AfxSig_viSS = AfxSig_vwl, // void (int, STYLESTRUCT*)
+ AfxSig_bwl = AfxSig_lwl,
+ AfxSig_vwMOVING = AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ AfxSig_vW2, // void (CWnd*) (CWnd* comes from lParam)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Command notifications for CCmdTarget notifications
+
+#define CN_COMMAND 0 // void ()
+#define CN_UPDATE_COMMAND_UI ((UINT)(-1)) // void (CCmdUI*)
+#define CN_EVENT ((UINT)(-2)) // OLE event
+#define CN_OLECOMMAND ((UINT)(-3)) // OLE document command
+// > 0 are control notifications
+
+#define ON_COMMAND(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)&memberFxn },
+ // ON_COMMAND(id, OnFoo) is the same as
+ // ON_CONTROL(0, id, OnFoo) or ON_BN_CLICKED(0, id, OnFoo)
+
+#define ON_COMMAND_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+ // ON_COMMAND_RANGE(id, idLast, OnFoo) is the same as
+ // ON_CONTROL_RANGE(0, id, idLast, OnFoo)
+
+#define ON_COMMAND_EX(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+#define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+// update ui's are listed as WM_COMMAND's so they get routed like commands
+#define ON_UPDATE_COMMAND_UI(id, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)id, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)idLast, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+#define ON_NOTIFY(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vwNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+// for general controls
+#define ON_CONTROL(wNotifyCode, id, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vv, \
+ (AFX_PMSG)&memberFxn },
+
+#define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+#define WM_REFLECT_BASE 0xBC00
+
+// for control notification reflection
+#define ON_CONTROL_REFLECT(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)&memberFxn },
+
+#define ON_CONTROL_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)())&memberFxn },
+
+#define ON_NOTIFY_REFLECT(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_bNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_REFLECT(memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, CN_UPDATE_COMMAND_UI, 0, 0, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Windows messages
+
+#define ON_WM_CREATE() \
+ { WM_CREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnCreate },
+#define ON_WM_DESTROY() \
+ { WM_DESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroy },
+#define ON_WM_MOVE() \
+ { WM_MOVE, 0, 0, 0, AfxSig_vvii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, int))&OnMove },
+#define ON_WM_SIZE() \
+ { WM_SIZE, 0, 0, 0, AfxSig_vwii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))&OnSize },
+#define ON_WM_ACTIVATE() \
+ { WM_ACTIVATE, 0, 0, 0, AfxSig_vwWb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*, BOOL))&OnActivate },
+#define ON_WM_SETFOCUS() \
+ { WM_SETFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnSetFocus },
+#define ON_WM_KILLFOCUS() \
+ { WM_KILLFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnKillFocus },
+#define ON_WM_ENABLE() \
+ { WM_ENABLE, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnable },
+#define ON_WM_HELPINFO() \
+ { WM_HELP, 0, 0, 0, AfxSig_bHELPINFO, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(HELPINFO*))&OnHelpInfo },
+#define ON_WM_PAINT() \
+ { WM_PAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnPaint },
+#define ON_WM_CLOSE() \
+ { WM_CLOSE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnClose },
+#define ON_WM_QUERYENDSESSION() \
+ { WM_QUERYENDSESSION, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryEndSession },
+#define ON_WM_QUERYOPEN() \
+ { WM_QUERYOPEN, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryOpen },
+#define ON_WM_ERASEBKGND() \
+ { WM_ERASEBKGND, 0, 0, 0, AfxSig_bD, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CDC*))&OnEraseBkgnd },
+#define ON_WM_SYSCOLORCHANGE() \
+ { WM_SYSCOLORCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnSysColorChange },
+#define ON_WM_ENDSESSION() \
+ { WM_ENDSESSION, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEndSession },
+#define ON_WM_SHOWWINDOW() \
+ { WM_SHOWWINDOW, 0, 0, 0, AfxSig_vbw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, UINT))&OnShowWindow },
+#define ON_WM_CTLCOLOR() \
+ { WM_CTLCOLOR, 0, 0, 0, AfxSig_hDWw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, CWnd*, UINT))&OnCtlColor },
+#define ON_WM_CTLCOLOR_REFLECT() \
+ { WM_CTLCOLOR+WM_REFLECT_BASE, 0, 0, 0, AfxSig_hDw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, UINT))CtlColor },
+#define ON_WM_WININICHANGE() \
+ { WM_WININICHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPCTSTR))&OnWinIniChange },
+#define ON_WM_DEVMODECHANGE() \
+ { WM_DEVMODECHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPTSTR))&OnDevModeChange },
+#define ON_WM_ACTIVATEAPP() \
+ { WM_ACTIVATEAPP, 0, 0, 0, AfxSig_vbh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, HTASK))&OnActivateApp },
+#define ON_WM_FONTCHANGE() \
+ { WM_FONTCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnFontChange },
+#define ON_WM_TIMECHANGE() \
+ { WM_TIMECHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnTimeChange },
+#define ON_WM_CANCELMODE() \
+ { WM_CANCELMODE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnCancelMode },
+#define ON_WM_SETCURSOR() \
+ { WM_SETCURSOR, 0, 0, 0, AfxSig_bWww, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnSetCursor },
+#define ON_WM_MOUSEACTIVATE() \
+ { WM_MOUSEACTIVATE, 0, 0, 0, AfxSig_iWww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnMouseActivate },
+#define ON_WM_CHILDACTIVATE() \
+ { WM_CHILDACTIVATE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnChildActivate },
+#define ON_WM_GETMINMAXINFO() \
+ { WM_GETMINMAXINFO, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(MINMAXINFO*))&OnGetMinMaxInfo },
+#define ON_WM_ICONERASEBKGND() \
+ { WM_ICONERASEBKGND, 0, 0, 0, AfxSig_vD, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CDC*))&OnIconEraseBkgnd },
+#define ON_WM_SPOOLERSTATUS() \
+ { WM_SPOOLERSTATUS, 0, 0, 0, AfxSig_vww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))&OnSpoolerStatus },
+#define ON_WM_DRAWITEM() \
+ { WM_DRAWITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDRAWITEMSTRUCT))&OnDrawItem },
+#define ON_WM_DRAWITEM_REFLECT() \
+ { WM_DRAWITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDRAWITEMSTRUCT))DrawItem },
+#define ON_WM_MEASUREITEM() \
+ { WM_MEASUREITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPMEASUREITEMSTRUCT))&OnMeasureItem },
+#define ON_WM_MEASUREITEM_REFLECT() \
+ { WM_MEASUREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPMEASUREITEMSTRUCT))MeasureItem },
+#define ON_WM_DELETEITEM() \
+ { WM_DELETEITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDELETEITEMSTRUCT))&OnDeleteItem },
+#define ON_WM_DELETEITEM_REFLECT() \
+ { WM_DELETEITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDELETEITEMSTRUCT))DeleteItem },
+#define ON_WM_CHARTOITEM() \
+ { WM_CHARTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnCharToItem },
+#define ON_WM_CHARTOITEM_REFLECT() \
+ { WM_CHARTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))CharToItem },
+#define ON_WM_VKEYTOITEM() \
+ { WM_VKEYTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnVKeyToItem },
+#define ON_WM_VKEYTOITEM_REFLECT() \
+ { WM_VKEYTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))VKeyToItem },
+#define ON_WM_QUERYDRAGICON() \
+ { WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, \
+ (AFX_PMSG)(AFX_PMSGW)(HCURSOR (AFX_MSG_CALL CWnd::*)())&OnQueryDragIcon },
+#define ON_WM_COMPAREITEM() \
+ { WM_COMPAREITEM, 0, 0, 0, AfxSig_iis, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(int, LPCOMPAREITEMSTRUCT))&OnCompareItem },
+#define ON_WM_COMPAREITEM_REFLECT() \
+ { WM_COMPAREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCOMPAREITEMSTRUCT))CompareItem },
+#define ON_WM_COMPACTING() \
+ { WM_COMPACTING, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnCompacting },
+#define ON_WM_NCCREATE() \
+ { WM_NCCREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnNcCreate },
+#define ON_WM_NCDESTROY() \
+ { WM_NCDESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcDestroy },
+#define ON_WM_NCCALCSIZE() \
+ { WM_NCCALCSIZE, 0, 0, 0, AfxSig_vCALC, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, NCCALCSIZE_PARAMS*))&OnNcCalcSize },
+#define ON_WM_NCHITTEST() \
+ { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))&OnNcHitTest },
+#define ON_WM_NCPAINT() \
+ { WM_NCPAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcPaint },
+#define ON_WM_NCACTIVATE() \
+ { WM_NCACTIVATE, 0, 0, 0, AfxSig_bb, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BOOL))&OnNcActivate },
+#define ON_WM_GETDLGCODE() \
+ { WM_GETDLGCODE, 0, 0, 0, AfxSig_wv, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(void))&OnGetDlgCode },
+#define ON_WM_NCMOUSEMOVE() \
+ { WM_NCMOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMouseMove },
+#define ON_WM_NCLBUTTONDOWN() \
+ { WM_NCLBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDown },
+#define ON_WM_NCLBUTTONUP() \
+ { WM_NCLBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonUp },
+#define ON_WM_NCLBUTTONDBLCLK() \
+ { WM_NCLBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDblClk },
+#define ON_WM_NCRBUTTONDOWN() \
+ { WM_NCRBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDown },
+#define ON_WM_NCRBUTTONUP() \
+ { WM_NCRBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonUp },
+#define ON_WM_NCRBUTTONDBLCLK() \
+ { WM_NCRBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDblClk },
+#define ON_WM_NCMBUTTONDOWN() \
+ { WM_NCMBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDown },
+#define ON_WM_NCMBUTTONUP() \
+ { WM_NCMBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonUp },
+#define ON_WM_NCMBUTTONDBLCLK() \
+ { WM_NCMBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDblClk },
+#define ON_WM_KEYDOWN() \
+ { WM_KEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyDown },
+#define ON_WM_KEYUP() \
+ { WM_KEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyUp },
+#define ON_WM_CHAR() \
+ { WM_CHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnChar },
+#define ON_WM_DEADCHAR() \
+ { WM_DEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnDeadChar },
+#define ON_WM_SYSKEYDOWN() \
+ { WM_SYSKEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyDown },
+#define ON_WM_SYSKEYUP() \
+ { WM_SYSKEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyUp },
+#define ON_WM_SYSCHAR() \
+ { WM_SYSCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysChar },
+#define ON_WM_SYSDEADCHAR() \
+ { WM_SYSDEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysDeadChar },
+#define ON_WM_SYSCOMMAND() \
+ { WM_SYSCOMMAND, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnSysCommand },
+#define ON_WM_TCARD() \
+ { WM_TCARD, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnTCard },
+#define ON_WM_TIMER() \
+ { WM_TIMER, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnTimer },
+#define ON_WM_HSCROLL() \
+ { WM_HSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnHScroll },
+#define ON_WM_HSCROLL_REFLECT() \
+ { WM_HSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))HScroll },
+#define ON_WM_VSCROLL() \
+ { WM_VSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnVScroll },
+#define ON_WM_VSCROLL_REFLECT() \
+ { WM_VSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))VScroll },
+#define ON_WM_INITMENU() \
+ { WM_INITMENU, 0, 0, 0, AfxSig_vM, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*))&OnInitMenu },
+#define ON_WM_INITMENUPOPUP() \
+ { WM_INITMENUPOPUP, 0, 0, 0, AfxSig_vMwb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*, UINT, BOOL))&OnInitMenuPopup },
+#define ON_WM_MENUSELECT() \
+ { WM_MENUSELECT, 0, 0, 0, AfxSig_vwwh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, HMENU))&OnMenuSelect },
+#define ON_WM_MENUCHAR() \
+ { WM_MENUCHAR, 0, 0, 0, AfxSig_lwwM, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(UINT, UINT, CMenu*))&OnMenuChar },
+#define ON_WM_ENTERIDLE() \
+ { WM_ENTERIDLE, 0, 0, 0, AfxSig_vwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*))&OnEnterIdle },
+#define ON_WM_MOUSEMOVE() \
+ { WM_MOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMouseMove },
+#define ON_WM_LBUTTONDOWN() \
+ { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDown },
+#define ON_WM_LBUTTONUP() \
+ { WM_LBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonUp },
+#define ON_WM_LBUTTONDBLCLK() \
+ { WM_LBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDblClk },
+#define ON_WM_RBUTTONDOWN() \
+ { WM_RBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDown },
+#define ON_WM_RBUTTONUP() \
+ { WM_RBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonUp },
+#define ON_WM_RBUTTONDBLCLK() \
+ { WM_RBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDblClk },
+#define ON_WM_MBUTTONDOWN() \
+ { WM_MBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDown },
+#define ON_WM_MBUTTONUP() \
+ { WM_MBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonUp },
+#define ON_WM_MBUTTONDBLCLK() \
+ { WM_MBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDblClk },
+#define ON_WM_PARENTNOTIFY() \
+ { WM_PARENTNOTIFY, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnParentNotify },
+#define ON_WM_PARENTNOTIFY_REFLECT() \
+ { WM_PARENTNOTIFY+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))ParentNotify },
+#define ON_WM_MDIACTIVATE() \
+ { WM_MDIACTIVATE, 0, 0, 0, AfxSig_vbWW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, CWnd*, CWnd*))&OnMDIActivate },
+#define ON_WM_RENDERFORMAT() \
+ { WM_RENDERFORMAT, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnRenderFormat },
+#define ON_WM_RENDERALLFORMATS() \
+ { WM_RENDERALLFORMATS, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnRenderAllFormats },
+#define ON_WM_DESTROYCLIPBOARD() \
+ { WM_DESTROYCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroyClipboard },
+#define ON_WM_DRAWCLIPBOARD() \
+ { WM_DRAWCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDrawClipboard },
+#define ON_WM_PAINTCLIPBOARD() \
+ { WM_PAINTCLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnPaintClipboard },
+#define ON_WM_VSCROLLCLIPBOARD() \
+ { WM_VSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnVScrollClipboard },
+#define ON_WM_CONTEXTMENU() \
+ { WM_CONTEXTMENU, 0, 0, 0, AfxSig_vWp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, CPoint))&OnContextMenu },
+#define ON_WM_SIZECLIPBOARD() \
+ { WM_SIZECLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnSizeClipboard },
+#define ON_WM_ASKCBFORMATNAME() \
+ { WM_ASKCBFORMATNAME, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPTSTR))&OnAskCbFormatName },
+#define ON_WM_CHANGECBCHAIN() \
+ { WM_CHANGECBCHAIN, 0, 0, 0, AfxSig_vhh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HWND, HWND))&OnChangeCbChain },
+#define ON_WM_HSCROLLCLIPBOARD() \
+ { WM_HSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnHScrollClipboard },
+#define ON_WM_QUERYNEWPALETTE() \
+ { WM_QUERYNEWPALETTE, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryNewPalette },
+#define ON_WM_PALETTECHANGED() \
+ { WM_PALETTECHANGED, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteChanged },
+
+#define ON_WM_PALETTEISCHANGING() \
+ { WM_PALETTEISCHANGING, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteIsChanging },
+#define ON_WM_DROPFILES() \
+ { WM_DROPFILES, 0, 0, 0, AfxSig_vh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HDROP))&OnDropFiles },
+#define ON_WM_WINDOWPOSCHANGING() \
+ { WM_WINDOWPOSCHANGING, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanging },
+#define ON_WM_WINDOWPOSCHANGED() \
+ { WM_WINDOWPOSCHANGED, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanged },
+
+#define ON_WM_EXITMENULOOP() \
+ { WM_EXITMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnExitMenuLoop },
+#define ON_WM_ENTERMENULOOP() \
+ { WM_ENTERMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnterMenuLoop },
+
+#define ON_WM_STYLECHANGED() \
+ { WM_STYLECHANGED, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanged },
+#define ON_WM_STYLECHANGING() \
+ { WM_STYLECHANGING, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanging },
+#define ON_WM_SIZING() \
+ { WM_SIZING, 0, 0, 0, AfxSig_vwSIZING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnSizing },
+#define ON_WM_MOVING() \
+ { WM_MOVING, 0, 0, 0, AfxSig_vwMOVING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnMoving },
+#define ON_WM_CAPTURECHANGED() \
+ { WM_CAPTURECHANGED, 0, 0, 0, AfxSig_vW2, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnCaptureChanged },
+#define ON_WM_DEVICECHANGE() \
+ { WM_DEVICECHANGE, 0, 0, 0, AfxSig_bwl, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnDeviceChange },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Control Notification messages
+
+// Static control notification codes
+#define ON_STN_CLICKED(id, memberFxn) \
+ ON_CONTROL(STN_CLICKED, id, memberFxn)
+#define ON_STN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(STN_DBLCLK, id, memberFxn)
+#define ON_STN_ENABLE(id, memberFxn) \
+ ON_CONTROL(STN_ENABLE, id, memberFxn)
+#define ON_STN_DISABLE(id, memberFxn) \
+ ON_CONTROL(STN_DISABLE, id, memberFxn)
+
+
+// Edit Control Notification Codes
+#define ON_EN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_SETFOCUS, id, memberFxn)
+#define ON_EN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_KILLFOCUS, id, memberFxn)
+#define ON_EN_CHANGE(id, memberFxn) \
+ ON_CONTROL(EN_CHANGE, id, memberFxn)
+#define ON_EN_UPDATE(id, memberFxn) \
+ ON_CONTROL(EN_UPDATE, id, memberFxn)
+#define ON_EN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(EN_ERRSPACE, id, memberFxn)
+#define ON_EN_MAXTEXT(id, memberFxn) \
+ ON_CONTROL(EN_MAXTEXT, id, memberFxn)
+#define ON_EN_HSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_HSCROLL, id, memberFxn)
+#define ON_EN_VSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_VSCROLL, id, memberFxn)
+
+// User Button Notification Codes
+#define ON_BN_CLICKED(id, memberFxn) \
+ ON_CONTROL(BN_CLICKED, id, memberFxn)
+#define ON_BN_DOUBLECLICKED(id, memberFxn) \
+ ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
+#define ON_BN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_SETFOCUS, id, memberFxn)
+#define ON_BN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_KILLFOCUS, id, memberFxn)
+
+// old BS_USERBUTTON button notifications - obsolete in Win31
+#define ON_BN_PAINT(id, memberFxn) \
+ ON_CONTROL(BN_PAINT, id, memberFxn)
+#define ON_BN_HILITE(id, memberFxn) \
+ ON_CONTROL(BN_HILITE, id, memberFxn)
+#define ON_BN_UNHILITE(id, memberFxn) \
+ ON_CONTROL(BN_UNHILITE, id, memberFxn)
+#define ON_BN_DISABLE(id, memberFxn) \
+ ON_CONTROL(BN_DISABLE, id, memberFxn)
+
+// Listbox Notification Codes
+#define ON_LBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(LBN_ERRSPACE, id, memberFxn)
+#define ON_LBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(LBN_SELCHANGE, id, memberFxn)
+#define ON_LBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(LBN_DBLCLK, id, memberFxn)
+#define ON_LBN_SELCANCEL(id, memberFxn) \
+ ON_CONTROL(LBN_SELCANCEL, id, memberFxn)
+#define ON_LBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_SETFOCUS, id, memberFxn)
+#define ON_LBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_KILLFOCUS, id, memberFxn)
+
+// Check Listbox Notification codes
+#define CLBN_CHKCHANGE (40)
+#define ON_CLBN_CHKCHANGE(id, memberFxn) \
+ ON_CONTROL(CLBN_CHKCHANGE, id, memberFxn)
+
+// Combo Box Notification Codes
+#define ON_CBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(CBN_ERRSPACE, id, memberFxn)
+#define ON_CBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_SELCHANGE, id, memberFxn)
+#define ON_CBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(CBN_DBLCLK, id, memberFxn)
+#define ON_CBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_SETFOCUS, id, memberFxn)
+#define ON_CBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_KILLFOCUS, id, memberFxn)
+#define ON_CBN_EDITCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITCHANGE, id, memberFxn)
+#define ON_CBN_EDITUPDATE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITUPDATE, id, memberFxn)
+#define ON_CBN_DROPDOWN(id, memberFxn) \
+ ON_CONTROL(CBN_DROPDOWN, id, memberFxn)
+#define ON_CBN_CLOSEUP(id, memberFxn) \
+ ON_CONTROL(CBN_CLOSEUP, id, memberFxn)
+#define ON_CBN_SELENDOK(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDOK, id, memberFxn)
+#define ON_CBN_SELENDCANCEL(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDCANCEL, id, memberFxn)
+
+/////////////////////////////////////////////////////////////////////////////
+// User extensions for message map entries
+
+// for Windows messages
+#define ON_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_lwl, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_lwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Thread messages
+#define ON_THREAD_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGT)(void (AFX_MSG_CALL CWinThread::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_THREAD_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_vwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxmt.h b/public/sdk/inc/mfc42/afxmt.h
new file mode 100644
index 000000000..d12d79aba
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmt.h
@@ -0,0 +1,255 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXMT_H__
+#define __AFXMT_H__
+
+#ifdef _MAC
+ #error Multithreaded classes not supported in this library variant.
+#endif
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXMT - MFC Multithreaded Extensions (Syncronization Objects)
+
+// Classes declared in this file
+
+//CObject
+ class CSyncObject;
+ class CSemaphore;
+ class CMutex;
+ class CEvent;
+ class CCriticalSection;
+
+class CSingleLock;
+class CMultiLock;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic synchronization object
+
+class CSyncObject : public CObject
+{
+ DECLARE_DYNAMIC(CSyncObject)
+
+// Constructor
+public:
+ CSyncObject(LPCTSTR pstrName);
+
+// Attributes
+public:
+ operator HANDLE() const;
+ HANDLE m_hObject;
+
+// Operations
+ virtual BOOL Lock(DWORD dwTimeout = INFINITE);
+ virtual BOOL Unlock() = 0;
+ virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)
+ { return TRUE; }
+
+// Implementation
+public:
+ virtual ~CSyncObject();
+#ifdef _DEBUG
+ CString m_strName;
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ friend class CSingleLock;
+ friend class CMultiLock;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSemaphore
+
+class CSemaphore : public CSyncObject
+{
+ DECLARE_DYNAMIC(CSemaphore)
+
+// Constructor
+public:
+ CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1,
+ LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL);
+
+// Implementation
+public:
+ virtual ~CSemaphore();
+ virtual BOOL Unlock();
+ virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMutex
+
+class CMutex : public CSyncObject
+{
+ DECLARE_DYNAMIC(CMutex)
+
+// Constructor
+public:
+ CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL,
+ LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Implementation
+public:
+ virtual ~CMutex();
+ BOOL Unlock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEvent
+
+class CEvent : public CSyncObject
+{
+ DECLARE_DYNAMIC(CEvent)
+
+// Constructor
+public:
+ CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE,
+ LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Operations
+public:
+ BOOL SetEvent();
+ BOOL PulseEvent();
+ BOOL ResetEvent();
+ BOOL Unlock();
+
+// Implementation
+public:
+ virtual ~CEvent();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CCriticalSection
+
+class CCriticalSection : public CSyncObject
+{
+ DECLARE_DYNAMIC(CCriticalSection)
+
+// Constructor
+public:
+ CCriticalSection();
+
+// Attributes
+public:
+ operator CRITICAL_SECTION*();
+ CRITICAL_SECTION m_sect;
+
+// Operations
+public:
+ BOOL Unlock();
+ BOOL Lock();
+ BOOL Lock(DWORD dwTimeout);
+
+// Implementation
+public:
+ virtual ~CCriticalSection();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSingleLock
+
+class CSingleLock
+{
+// Constructors
+public:
+ CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ BOOL Lock(DWORD dwTimeOut = INFINITE);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked();
+
+// Implementation
+public:
+ ~CSingleLock();
+
+protected:
+ CSyncObject* m_pObject;
+ HANDLE m_hObject;
+ BOOL m_bAcquired;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMultiLock
+
+class CMultiLock
+{
+// Constructor
+public:
+ CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE,
+ DWORD dwWakeMask = 0);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked(DWORD dwItem);
+
+// Implementation
+public:
+ ~CMultiLock();
+
+protected:
+ HANDLE m_hPreallocated[8];
+ BOOL m_bPreallocated[8];
+
+ CSyncObject* const * m_ppObjectArray;
+ HANDLE* m_pHandleArray;
+ BOOL* m_bLockedArray;
+ DWORD m_dwCount;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXMT_INLINE inline
+#include <afxmt.inl>
+#undef _AFXMT_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXMT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxmt.inl b/public/sdk/inc/mfc42/afxmt.inl
new file mode 100644
index 000000000..036c5c2a4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmt.inl
@@ -0,0 +1,50 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXMT.H
+
+#ifdef _AFXMT_INLINE
+
+_AFXMT_INLINE CSyncObject::operator HANDLE() const
+ { return m_hObject;}
+
+_AFXMT_INLINE BOOL CSemaphore::Unlock()
+ { return Unlock(1, NULL); }
+
+_AFXMT_INLINE BOOL CEvent::SetEvent()
+ { ASSERT(m_hObject != NULL); return ::SetEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::PulseEvent()
+ { ASSERT(m_hObject != NULL); return ::PulseEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::ResetEvent()
+ { ASSERT(m_hObject != NULL); return ::ResetEvent(m_hObject); }
+
+_AFXMT_INLINE CSingleLock::~CSingleLock()
+ { Unlock(); }
+_AFXMT_INLINE BOOL CSingleLock::IsLocked()
+ { return m_bAcquired; }
+
+_AFXMT_INLINE BOOL CMultiLock::IsLocked(DWORD dwObject)
+ { ASSERT(dwObject >= 0 && dwObject < m_dwCount);
+ return m_bLockedArray[dwObject]; }
+
+_AFXMT_INLINE CCriticalSection::CCriticalSection() : CSyncObject(NULL)
+ { ::InitializeCriticalSection(&m_sect); }
+_AFXMT_INLINE CCriticalSection::operator CRITICAL_SECTION*()
+ { return (CRITICAL_SECTION*) &m_sect; }
+_AFXMT_INLINE CCriticalSection::~CCriticalSection()
+ { ::DeleteCriticalSection(&m_sect); }
+_AFXMT_INLINE BOOL CCriticalSection::Lock()
+ { ::EnterCriticalSection(&m_sect); return TRUE; }
+_AFXMT_INLINE BOOL CCriticalSection::Lock(DWORD /* dwTimeout */)
+ { return Lock(); }
+_AFXMT_INLINE BOOL CCriticalSection::Unlock()
+ { ::LeaveCriticalSection(&m_sect); return TRUE; }
+
+#endif //_AFXMT_INLINE
diff --git a/public/sdk/inc/mfc42/afxodlgs.h b/public/sdk/inc/mfc42/afxodlgs.h
new file mode 100644
index 000000000..dd887df4c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxodlgs.h
@@ -0,0 +1,502 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXODLGS_H__
+#define __AFXODLGS_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _MAC
+ // include OLE dialog/helper APIs
+ #include <ole2ui.h>
+#else
+ // include OLE dialog/helper APIs
+ #ifndef _OLEDLG_H_
+ #include <oledlg.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXODLGS.H - MFC OLE dialogs
+
+// Classes declared in this file
+
+//CCommonDialog
+ class COleDialog; // base class for OLE dialog wrappers
+ class COleInsertDialog; // insert object dialog
+ class COleConvertDialog; // convert dialog
+ class COleChangeIconDialog; // change icon dialog
+ class COlePasteSpecialDialog; // paste special dialog
+ class COleLinksDialog; // edit links dialog
+ class COleUpdateDialog; // update links/embeddings dialog
+ class COleBusyDialog; // used for
+ class COlePropertiesDialog;
+ class COleChangeSourceDialog;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUILinkInfo -- used internally to implement
+// IOleUILinkInfo and IOleUILinkContainer
+// used by COleLinksDialog and COleChangeSourceDialog
+
+class COleUILinkInfo : public IOleUILinkInfo
+{
+public:
+ COleUILinkInfo(COleDocument* pDocument);
+
+// Implementation
+ COleDocument* m_pDocument; // document being manipulated
+ COleClientItem* m_pSelectedItem; // primary selected item in m_pDocument
+ POSITION m_pos; // used during link enumeration
+ BOOL m_bUpdateLinks; // update links?
+ BOOL m_bUpdateEmbeddings; // update embeddings?
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ // IOleUILinkContainer
+ STDMETHOD_(DWORD,GetNextLink)(DWORD);
+ STDMETHOD(SetLinkUpdateOptions)(DWORD, DWORD);
+ STDMETHOD(GetLinkUpdateOptions)(DWORD, LPDWORD);
+ STDMETHOD(SetLinkSource)(DWORD, LPTSTR, ULONG, ULONG*, BOOL);
+ STDMETHOD(GetLinkSource)(DWORD, LPTSTR*, ULONG*, LPTSTR*, LPTSTR*, BOOL*,
+ BOOL*);
+ STDMETHOD(OpenLinkSource)(DWORD);
+ STDMETHOD(UpdateLink)(DWORD, BOOL, BOOL);
+ STDMETHOD(CancelLink)(DWORD);
+ // IOleUILinkInfo
+ STDMETHOD(GetLastUpdate)(DWORD dwLink, FILETIME* lpLastUpdate);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Wrappers for OLE UI dialogs
+
+class COleDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(COleDialog)
+
+// Attributes
+public:
+ UINT GetLastError() const;
+
+// Implementation
+public:
+ int MapResult(UINT nResult);
+ COleDialog(CWnd* pParentWnd);
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ UINT m_nLastError;
+
+protected:
+ friend UINT CALLBACK _AfxOleHookProc(HWND, UINT, WPARAM, LPARAM);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleInsertDialog
+
+class COleInsertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleInsertDialog)
+
+// Attributes
+public:
+ OLEUIINSERTOBJECT m_io; // structure for OleUIInsertObject
+
+// Constructors
+ COleInsertDialog(DWORD dwFlags = IOF_SELECTCREATENEW,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem* pItem);
+ // call after DoModal to create item based on dialog data
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { createNewItem, insertFromFile, linkToFile };
+ UINT GetSelectionType() const;
+ // return type of selection made
+
+ CString GetPathName() const; // return full path name
+ REFCLSID GetClassID() const; // get class ID of new item
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COleInsertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFileName[_MAX_PATH];
+ // contains full path name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleConvertDialog
+
+class COleConvertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleConvertDialog)
+
+// Attributes
+public:
+ OLEUICONVERT m_cv; // structure for OleUIConvert
+
+// Constructors
+ COleConvertDialog(COleClientItem* pItem,
+ DWORD dwFlags = CF_SELECTCONVERTTO, CLSID* pClassID = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ // just display the dialog and collect convert info
+ BOOL DoConvert(COleClientItem* pItem);
+ // do the conversion on pItem (after DoModal == IDOK)
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { noConversion, convertItem, activateAs };
+ UINT GetSelectionType() const;
+
+ HGLOBAL GetIconicMetafile() const; // will return NULL if same as before
+ REFCLSID GetClassID() const; // get class ID to convert or activate as
+ DVASPECT GetDrawAspect() const; // get new draw aspect
+
+// Implementation
+public:
+ virtual ~COleConvertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeIconDialog
+
+class COleChangeIconDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeIconDialog)
+
+// Attributes
+public:
+ OLEUICHANGEICON m_ci; // structure for OleUIChangeIcon
+
+// Constructors
+ COleChangeIconDialog(COleClientItem* pItem,
+ DWORD dwFlags = CIF_SELECTCURRENT,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL DoChangeIcon(COleClientItem* pItem);
+
+// Attributes
+ HGLOBAL GetIconicMetafile() const;
+
+// Implementation
+public:
+ virtual ~COleChangeIconDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COlePasteSpecialDialog
+
+class COlePasteSpecialDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePasteSpecialDialog)
+
+// Attributes
+public:
+ OLEUIPASTESPECIAL m_ps; // structure for OleUIPasteSpecial
+
+// Constructors
+ COlePasteSpecialDialog(DWORD dwFlags = PSF_SELECTPASTE,
+ COleDataObject* pDataObject = NULL, CWnd *pParentWnd = NULL);
+
+// Operations
+ OLEUIPASTEFLAG AddLinkEntry(UINT cf);
+ void AddFormat(const FORMATETC& formatEtc, LPTSTR lpszFormat,
+ LPTSTR lpszResult, DWORD flags);
+ void AddFormat(UINT cf, DWORD tymed, UINT nFormatID, BOOL bEnableIcon,
+ BOOL bLink);
+ void AddStandardFormats(BOOL bEnableLink = TRUE);
+
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem *pNewItem);
+ // creates a standard OLE item from selection data
+
+// Attributes (after DoModal returns IDOK)
+ int GetPasteIndex() const; // resulting index to use for paste
+
+ enum Selection { pasteLink = 1, pasteNormal = 2, pasteStatic = 3, pasteOther = 4};
+ UINT GetSelectionType() const;
+ // get selection type (pasteLink, pasteNormal, pasteStatic)
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COlePasteSpecialDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ unsigned int m_arrLinkTypes[8];
+ // size limit imposed by MFCUIx32.DLL library
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinksDialog
+
+class COleLinksDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleLinksDialog)
+
+// Attributes
+public:
+ OLEUIEDITLINKS m_el; // structure for OleUIEditLinks
+
+// Constructors
+ COleLinksDialog(COleDocument* pDoc, CView* pView, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal(); // display the dialog and edit links
+
+// Implementation
+public:
+ virtual ~COleLinksDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+public:
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUpdateDialog
+
+class COleUpdateDialog : public COleLinksDialog
+{
+ DECLARE_DYNAMIC(COleUpdateDialog)
+
+// Constructors
+public:
+ COleUpdateDialog(COleDocument* pDoc,
+ BOOL bUpdateLinks = TRUE, BOOL bUpdateEmbeddings = FALSE,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Implementation
+public:
+ virtual ~COleUpdateDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ CString m_strCaption; // caption for the dialog
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleBusyDialog - useful in managing concurrency
+
+class COleBusyDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleBusyDialog)
+
+// Attributes
+public:
+ OLEUIBUSY m_bz;
+
+// Constructors
+ COleBusyDialog(HTASK htaskBusy, BOOL bNotResponding = FALSE,
+ DWORD dwFlags = 0, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ enum Selection { switchTo = 1, retry = 2, callUnblocked = 3 };
+ UINT GetSelectionType() const;
+
+// Implementation
+public:
+ ~COleBusyDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ Selection m_selection; // selection after DoModal returns IDOK
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleEditProperties
+
+class COlePropertiesDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePropertiesDialog)
+
+// Attributes
+public:
+ OLEUIOBJECTPROPS m_op; // structure for OleUIObjectProperties
+ OLEUIGNRLPROPS m_gp; // specific to "General" page
+ OLEUIVIEWPROPS m_vp; // specific to "View" page
+ OLEUILINKPROPS m_lp; // specific to "Link" page
+ PROPSHEETHEADER m_psh; // PROPSHEETHEADER for customization
+
+// Constructors
+public:
+ COlePropertiesDialog(COleClientItem* pItem,
+ UINT nScaleMin = 10, UINT nScaleMax = 500, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual BOOL OnApplyScale(
+ COleClientItem* pItem, int nCurrentScale, BOOL bRelativeToOrig);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual BOOL OnInitDialog();
+
+ BEGIN_INTERFACE_PART(OleUIObjInfo, IOleUIObjInfo)
+ INIT_INTERFACE_PART(COlePropertiesDialog, OleUIObjInfo)
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD* lpdwObjSize, LPTSTR* lplpszLabel,
+ LPTSTR* lplpszType, LPTSTR* lplpszShortType,
+ LPTSTR* lplpszLocation);
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID* lpClassID, WORD* lpwFormat,
+ CLSID* lpConvertDefaultClassID,
+ LPCLSID* lplpClsidExclude, UINT* lpcClsidExclude);
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew);
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale);
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig);
+ END_INTERFACE_PART(OleUIObjInfo)
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeSourceDialog
+
+class COleChangeSourceDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeSourceDialog)
+
+// Attributes
+public:
+ OLEUICHANGESOURCE m_cs; // structure for OleUIChangeSource
+
+// Constructors
+public:
+ COleChangeSourceDialog(COleClientItem* pItem, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Attributes (after DoModal returns IDOK)
+ BOOL IsValidSource();
+ CString GetDisplayName();
+ CString GetFileName();
+ CString GetItemName();
+ CString GetFromPrefix();
+ CString GetToPrefix();
+
+// Implementation
+public:
+ COleUILinkInfo m_xLinkInfo;
+
+ virtual ~COleChangeSourceDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void PreInitDialog();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXODLGS_INLINE inline
+#include <afxole.inl>
+#undef _AFXODLGS_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXODLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxole.h b/public/sdk/inc/mfc42/afxole.h
new file mode 100644
index 000000000..9133184b9
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxole.h
@@ -0,0 +1,1907 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLE_H__
+#define __AFXOLE_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h>
+#endif
+
+// include OLE Compound Document headers
+#ifndef _OLE2_H_
+ #include <ole2.h>
+#endif
+
+#ifndef __docobj_h__
+ #include <docobj.h>
+#endif
+
+#ifndef __datapath_h__
+ #include <datapath.h>
+#endif
+
+#ifndef __AFXCOM_H__
+#include <afxcom_.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+
+#ifndef _AFX_NOFORCE_LIBS
+
+#ifndef _MAC
+ #pragma comment(lib, "urlmon.lib")
+#endif // !_MAC
+
+#endif // !_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXOLE.H - MFC OLE support
+
+// Classes declared in this file
+
+//CDocument
+ class COleDocument; // OLE container document
+ class COleLinkingDoc; // supports links to embeddings
+ class COleServerDoc; // OLE server document
+ class CDocObjectServer; // might be owned by a COleServerDoc
+
+//CCmdTarget
+ class CDocItem; // part of a document
+ class COleClientItem; // embedded ole object from outside
+ class COleServerItem; // ole object to export
+ class COleDataSource; // clipboard data source mechanism
+ class COleDropSource; // drag/drop source
+ class COleDropTarget; // drag/drop target
+ class COleMessageFilter; // concurrency management
+
+//CFrameWnd
+ class COleIPFrameWnd; // frame window for in-place servers
+
+//CControlBar
+#ifndef _MAC
+ class COleResizeBar; // implements in-place resizing
+#endif
+
+//CFile
+ class COleStreamFile; // CFile wrapper for IStream interface
+ class CMonikerFile; // bound to via IMoniker
+#ifndef _MAC
+ class CAsyncMonikerFile;// asynchronous IMoniker
+#endif
+
+class COleDataObject; // wrapper for IDataObject interface
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// backward compatibility
+
+// COleClientDoc is now obsolete -- use COleDocument instead
+#define COleClientDoc COleDocument
+
+// COleServer has been replaced by the more general COleObjectFactory
+#define COleServer COleObjectFactory
+
+/////////////////////////////////////////////////////////////////////////////
+// Useful OLE specific types (some from OLE 1.0 headers)
+
+// Codes for CallBack events
+enum OLE_NOTIFICATION
+{
+ OLE_CHANGED, // representation of a draw aspect has changed
+ OLE_SAVED, // the item has committed its storage
+ OLE_CLOSED, // the item has closed
+ OLE_RENAMED, // the item has changed its moniker
+ OLE_CHANGED_STATE, // the item state (open, active, etc.) has changed
+ OLE_CHANGED_ASPECT, // the item draw aspect has changed
+};
+
+// Object types
+enum OLE_OBJTYPE
+{
+ OT_UNKNOWN = 0,
+
+ // These are OLE 1.0 types and OLE 2.0 types as returned from GetType().
+ OT_LINK = 1,
+ OT_EMBEDDED = 2,
+ OT_STATIC = 3,
+
+ // All OLE2 objects are written with this tag when serialized. This
+ // differentiates them from OLE 1.0 objects written with MFC 2.0.
+ // This value will never be returned from GetType().
+ OT_OLE2 = 256,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataObject -- simple wrapper for IDataObject
+
+class COleDataObject
+{
+// Constructors
+public:
+ COleDataObject();
+
+// Operations
+ void Attach(LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE);
+ LPDATAOBJECT Detach(); // detach and get ownership of m_lpDataObject
+ void Release(); // detach and Release ownership of m_lpDataObject
+ BOOL AttachClipboard(); // attach to current clipboard object
+
+// Attributes
+ void BeginEnumFormats();
+ BOOL GetNextFormat(LPFORMATETC lpFormatEtc);
+ CFile* GetFileData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ HGLOBAL GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ BOOL GetData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL);
+ BOOL IsDataAvailable(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Implementation
+public:
+ LPDATAOBJECT m_lpDataObject;
+ LPENUMFORMATETC m_lpEnumerator;
+ ~COleDataObject();
+
+ // advanced use and implementation
+ LPDATAOBJECT GetIDataObject(BOOL bAddRef);
+ void EnsureClipboardObject();
+ BOOL m_bClipboard; // TRUE if represents the Win32 clipboard
+
+protected:
+ BOOL m_bAutoRelease; // TRUE if destructor should call Release
+
+private:
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+ COleDataObject(const COleDataObject&); // no implementation
+ void operator=(const COleDataObject&); // no implementation
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataSource -- wrapper for implementing IDataObject
+// (works similar to how data is provided on the clipboard)
+
+struct AFX_DATACACHE_ENTRY;
+class COleDropSource;
+
+class COleDataSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDataSource();
+
+// Operations
+ void Empty(); // empty cache (similar to ::EmptyClipboard)
+
+ // CacheData & DelayRenderData operations similar to ::SetClipboardData
+ void CacheGlobalData(CLIPFORMAT cfFormat, HGLOBAL hGlobal,
+ LPFORMATETC lpFormatEtc = NULL); // for HGLOBAL based data
+ void DelayRenderFileData(CLIPFORMAT cfFormat,
+ LPFORMATETC lpFormatEtc = NULL); // for CFile* based delayed render
+
+ // Clipboard and Drag/Drop access
+ DROPEFFECT DoDragDrop(
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
+ LPCRECT lpRectStartDrag = NULL,
+ COleDropSource* pDropSource = NULL);
+ void SetClipboard();
+ static void PASCAL FlushClipboard();
+ static COleDataSource* PASCAL GetClipboardOwner();
+
+ // Advanced: STGMEDIUM based cached data
+ void CacheData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL); // for LPSTGMEDIUM based data
+ // Advanced: STGMEDIUM or HGLOBAL based delayed render
+ void DelayRenderData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+ // Advanced: support for SetData in COleServerItem
+ // (not generally useful for clipboard or drag/drop operations)
+ void DelaySetData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Overidables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // OnRenderFileData and OnRenderGlobalData are called by
+ // the default implementation of OnRenderData.
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // used only in COleServerItem implementation
+
+// Implementation
+public:
+ virtual ~COleDataSource();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ AFX_DATACACHE_ENTRY* m_pDataCache; // data cache itself
+ UINT m_nMaxSize; // current allocated size
+ UINT m_nSize; // current size of the cache
+ UINT m_nGrowBy; // number of cache elements to grow by for new allocs
+
+ AFX_DATACACHE_ENTRY* Lookup(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir) const;
+ AFX_DATACACHE_ENTRY* GetCacheEntry(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleDataSource, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// DocItem support
+
+class CDocItem : public CCmdTarget
+{
+ DECLARE_SERIAL(CDocItem)
+
+// Constructors
+protected: // abstract class
+ CDocItem();
+
+// Attributes
+public:
+ CDocument* GetDocument() const; // return container document
+
+// Overridables
+public:
+ // Raw data access (native format)
+ virtual BOOL IsBlank() const;
+
+// Implementation
+protected:
+ COleDocument* m_pDocument;
+
+public:
+ virtual void Serialize(CArchive& ar); // for Native data
+ virtual ~CDocItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class COleDocument; // for access to back pointer
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleDocument - common OLE container behavior (enables server functionality)
+
+class COleDocument : public CDocument
+{
+ DECLARE_DYNAMIC(COleDocument)
+
+// Constructors
+public:
+ COleDocument();
+
+// Attributes
+ BOOL HasBlankItems() const; // check for BLANK items
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ // return in-place active item for this view or NULL if none
+
+// Operations
+ // iterating over existing items
+ virtual POSITION GetStartPosition() const;
+ virtual CDocItem* GetNextItem(POSITION& pos) const;
+
+ // iterator helpers (helpers use virtual GetNextItem above)
+ COleClientItem* GetNextClientItem(POSITION& pos) const;
+ COleServerItem* GetNextServerItem(POSITION& pos) const;
+
+ // adding new items - called from item constructors
+ virtual void AddItem(CDocItem* pItem);
+ virtual void RemoveItem(CDocItem* pItem);
+
+ void EnableCompoundFile(BOOL bEnable = TRUE);
+ // enable compound file support (only call during constructor)
+ virtual void UpdateModifiedFlag();
+ // scan for modified items -- mark document modified
+
+ // printer-device caching/control
+ BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL ApplyPrintDevice(const PRINTDLG* ppd);
+ // these apply the target device to all COleClientItem objects
+
+// Overridables
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ // return primary selected item or NULL if none
+ virtual void OnShowViews(BOOL bVisible);
+ // called during app-idle when visibility of a document has changed
+
+// Implementation
+public:
+ CObList m_docItemList; // not owned items
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ CFrameWnd* GetFirstFrame();
+
+ // document handling overrides
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+ virtual ~COleDocument();
+ virtual void DeleteContents(); // delete client items in list
+ virtual void Serialize(CArchive& ar); // serialize items to file
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified();
+ virtual void OnIdle();
+
+ // compound file implementation
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ void CommitItems(BOOL bSuccess); // called during File.Save & File.Save As
+
+ // minimal linking protocol
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual LPOLEITEMCONTAINER GetContainer();
+
+protected:
+ // document state implementation
+ UINT m_dwNextItemNumber;// serial number for next item in this document
+ BOOL m_bLastVisible; // TRUE if one or more views was last visible
+
+ // 'docfile' support
+ BOOL m_bCompoundFile; // TRUE if use compound files
+ LPSTORAGE m_lpRootStg; // root storage for the document
+ BOOL m_bSameAsLoad; // TRUE = file-save, FALSE = Save [Copy] As
+ BOOL m_bRemember; // if FALSE, indicates Save Copy As
+
+ DVTARGETDEVICE* m_ptd; // current document target device
+
+ // implementation helpers
+ virtual void LoadFromStorage();
+ virtual void SaveToStorage(CObject* pObject = NULL);
+ CDocItem* GetNextItemOfKind(POSITION& pos, CRuntimeClass* pClass) const;
+
+ // command handling
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+ afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);
+ afx_msg void OnEditLinks();
+ afx_msg void OnEditConvert();
+ afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);
+ afx_msg void OnEditChangeIcon();
+ afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);
+ afx_msg void OnFileSendMail();
+
+ friend class COleClientItem;
+ friend class COleServerItem;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleClientItem - Supports OLE2 non-inplace editing.
+// implements IOleClientSite, IAdviseSink, and IOleInPlaceSite
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class COleClientItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleClientItem)
+
+// Constructors
+public:
+ COleClientItem(COleDocument* pContainerDoc = NULL);
+
+ // create from the clipboard
+ BOOL CreateFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from a class ID (Insert New Object dialog)
+ BOOL CreateNewItem(REFCLSID clsid, OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from COleDataObject
+ BOOL CreateFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from file (package support)
+ BOOL CreateFromFile(LPCTSTR lpszFileName, REFCLSID clsid = CLSID_NULL,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromFile(LPCTSTR lpszFileName,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create a copy
+ BOOL CreateCloneFrom(const COleClientItem* pSrcItem);
+
+// General Attributes
+public:
+ SCODE GetLastStatus() const;
+ OLE_OBJTYPE GetType() const; // OT_LINK, OT_EMBEDDED, OT_STATIC
+ void GetClassID(CLSID* pClassID) const;
+ void GetUserType(USERCLASSTYPE nUserClassType, CString& rString);
+ BOOL GetExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+ // will return FALSE if item is BLANK
+ BOOL GetCachedExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+
+ // getting/setting iconic cache
+ HGLOBAL GetIconicMetafile();
+ BOOL SetIconicMetafile(HGLOBAL hMetaPict);
+
+ // setting/getting default display aspect
+ DVASPECT GetDrawAspect() const;
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+
+ // for printer presentation cache
+ BOOL SetPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL SetPrintDevice(const PRINTDLG* ppd);
+
+ // Item state
+ enum ItemState
+ { emptyState, loadedState, openState, activeState, activeUIState };
+ UINT GetItemState() const;
+
+ BOOL IsModified() const;
+ BOOL IsRunning() const;
+ BOOL IsInPlaceActive() const;
+ BOOL IsOpen() const;
+ CView* GetActiveView() const;
+
+ // Data access
+ void AttachDataObject(COleDataObject& rDataObject) const;
+
+ // other rare access information
+ COleDocument* GetDocument() const; // return container
+
+ // helpers for checking clipboard data availability
+ static BOOL PASCAL CanPaste();
+ static BOOL PASCAL CanPasteLink();
+
+ // helpers for checking COleDataObject, useful in drag drop
+ static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);
+ static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);
+
+// General Operations
+ virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);
+ // cleanup, detach (close if needed)
+ void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);
+ // close without releasing the item
+ void Delete(BOOL bAutoDelete = TRUE);
+ // logically delete from file -- not part of the document anymore
+ void Run(); // insure item is in running state
+
+ // Drawing
+ BOOL Draw(CDC* pDC, LPCRECT lpBounds,
+ DVASPECT nDrawAspect = (DVASPECT)-1); // defaults to m_nDrawAspect
+
+ // Activation
+ virtual BOOL DoVerb(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+ void Activate(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+
+ // In-place Activation
+ void Deactivate(); // completely deactivate
+ void DeactivateUI(); // deactivate the user interface
+ BOOL ReactivateAndUndo(); // reactivate then perform undo command
+ BOOL SetItemRects(LPCRECT lpPosRect = NULL, LPCRECT lpClipRect = NULL);
+ CWnd* GetInPlaceWindow();
+
+ // Clipboard operations
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ DROPEFFECT DoDragDrop(LPCRECT lpItemRect, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+ // called for creating a COleDataSource by CopyToClipboard and DoDragDrop
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+
+ // Operations that apply to embedded items only
+ void SetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+ void SetExtent(const CSize& size, DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // Operations that apply to linked items only
+ // (link options are rarely changed, except through Links dialog)
+ OLEUPDATE GetLinkUpdateOptions();
+ void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);
+
+ // Link-source update status (also useful for embeddings that contain links)
+ BOOL UpdateLink(); // make up-to-date
+ BOOL IsLinkUpToDate() const; // is link up-to-date
+
+ // object conversion
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld, REFCLSID clsidNew);
+ BOOL Reload(); // for lazy reload after ActivateAs
+
+// Overridables (notifications of IAdviseSink, IOleClientSite and IOleInPlaceSite)
+ // Callbacks/notifications from the server you must/should implement
+ virtual void OnChange(OLE_NOTIFICATION nCode, DWORD dwParam);
+ // implement OnChange to invalidate when item changes
+
+protected:
+ virtual void OnGetItemPosition(CRect& rPosition);
+ // implement OnGetItemPosition if you support in-place activation
+
+ // Common overrides for in-place activation
+ virtual BOOL OnScrollBy(CSize sizeExtent);
+
+ // Common overrides for applications supporting undo
+ virtual void OnDiscardUndoState();
+ virtual void OnDeactivateAndUndo();
+
+public:
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ // Common overrides for applications supporting links to embeddings
+ virtual void OnShowItem();
+
+ // Advanced overrides for in-place activation
+ virtual void OnGetClipRect(CRect& rClipRect);
+ virtual BOOL CanActivate();
+
+public:
+ virtual void OnActivate();
+ virtual void OnActivateUI();
+ virtual void OnDeactivate();
+
+protected:
+ virtual BOOL OnGetWindowContext(CFrameWnd** ppMainFrame,
+ CFrameWnd** ppDocFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+ // default calls SetItemRects and caches the pos rect
+
+public:
+ // Advanced overrides for menu/title handling (rarely overridden)
+ virtual void OnInsertMenus(CMenu* pMenuShared,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+ virtual void OnSetMenu(CMenu* pMenuShared, HOLEMENU holemenu,
+ HWND hwndActiveObject);
+ virtual void OnRemoveMenus(CMenu* pMenuShared);
+ virtual BOOL OnUpdateFrameTitle();
+
+ // Advanced override for control bar handling
+ virtual BOOL OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+
+// Implementation
+public:
+ // data to support non-inplace activated items
+ LPOLEOBJECT m_lpObject; // in case you want direct access to the OLE object
+ LPVIEWOBJECT2 m_lpViewObject;// IViewObject for IOleObject above
+ DWORD m_dwItemNumber; // serial number for this item in this document
+ DVASPECT m_nDrawAspect; // current default display aspect
+ SCODE m_scLast; // last error code encountered
+ LPSTORAGE m_lpStorage; // provides storage for m_lpObject
+ LPLOCKBYTES m_lpLockBytes; // part of implementation of m_lpStorage
+ DWORD m_dwConnection; // advise connection to the m_lpObject
+ BYTE m_bLinkUnavail; // TRUE if link is currently unavailable
+ BYTE m_bMoniker; // TRUE if moniker is assigned
+ BYTE m_bLocked; // TRUE if object has external lock
+ BYTE m_bNeedCommit; // TRUE if need CommitItem
+ BYTE m_bClosing; // TRUE if currently doing COleClientItem::Close
+ BYTE m_bReserved[3]; // (reserved for future use)
+
+ // for compound file support
+ LPSTORAGE m_lpNewStorage; // used during Save As situations
+
+ // item state & item type
+ ItemState m_nItemState; // item state (see ItemState enumeration)
+ OLE_OBJTYPE m_nItemType; // item type (depends on how created)
+
+ // data valid when in-place activated
+ CView* m_pView; // view when object is in-place activated
+ DWORD m_dwContainerStyle; // style of the container wnd before activation
+ COleFrameHook* m_pInPlaceFrame;// frame window when in-place active
+ COleFrameHook* m_pInPlaceDoc; // doc window when in-place (may be NULL)
+ HWND m_hWndServer; // HWND of in-place server window
+
+public:
+ virtual ~COleClientItem();
+ virtual void Serialize(CArchive& ar);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+// Implementation
+public:
+ virtual BOOL ReportError(SCODE sc) const;
+ virtual BOOL FreezeLink(); // converts to static: for edit links dialog
+
+ DWORD GetNewItemNumber(); // generates new item number
+ void GetItemName(LPTSTR lpszItemName) const; // gets readable item name
+
+ void UpdateItemType(); // update m_nItemType
+
+protected:
+ // clipboard helpers
+ void GetEmbeddedItemData(LPSTGMEDIUM lpStgMedium);
+ void AddCachedData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+ // interface helpers
+ virtual LPOLECLIENTSITE GetClientSite();
+
+ // helpers for printer-cached representation
+ BOOL GetPrintDeviceInfo(LPOLECACHE* plpOleCache,
+ DVTARGETDEVICE** pptd, DWORD* pdwConnection);
+
+// Advanced Overridables for implementation
+protected:
+ virtual BOOL FinishCreate(SCODE sc);
+ virtual void CheckGeneral(SCODE sc);
+
+ virtual void OnDataChange(LPFORMATETC lpFormatEtc,
+ LPSTGMEDIUM lpStgMedium);
+
+public:
+ // for storage hookability (override to use 'docfiles')
+ virtual void GetItemStorage(); // allocate storage for new item
+ virtual void ReadItem(CArchive& ar); // read item from archive
+ virtual void WriteItem(CArchive& ar); // write item to archive
+ virtual void CommitItem(BOOL bSuccess); // commit item's storage
+
+ // compound & flat file implementations of above
+ void GetItemStorageFlat();
+ void ReadItemFlat(CArchive& ar);
+ void WriteItemFlat(CArchive& ar);
+ void GetItemStorageCompound();
+ void ReadItemCompound(CArchive& ar);
+ void WriteItemCompound(CArchive& ar);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite)
+ INIT_INTERFACE_PART(COleClientItem, OleClientSite)
+ STDMETHOD(SaveObject)();
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(GetContainer)(LPOLECONTAINER*);
+ STDMETHOD(ShowObject)();
+ STDMETHOD(OnShowWindow)(BOOL);
+ STDMETHOD(RequestNewObjectLayout)();
+ END_INTERFACE_PART(OleClientSite)
+
+ BEGIN_INTERFACE_PART(AdviseSink, IAdviseSink)
+ INIT_INTERFACE_PART(COleClientItem, AdviseSink)
+ STDMETHOD_(void,OnDataChange)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD_(void,OnViewChange)(DWORD, LONG);
+ STDMETHOD_(void,OnRename)(LPMONIKER);
+ STDMETHOD_(void,OnSave)();
+ STDMETHOD_(void,OnClose)();
+ END_INTERFACE_PART(AdviseSink)
+
+ BEGIN_INTERFACE_PART(OleIPSite, IOleInPlaceSite)
+ INIT_INTERFACE_PART(COleClientItem, OleIPSite)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(CanInPlaceActivate)();
+ STDMETHOD(OnInPlaceActivate)();
+ STDMETHOD(OnUIActivate)();
+ STDMETHOD(GetWindowContext)(LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(Scroll)(SIZE);
+ STDMETHOD(OnUIDeactivate)(BOOL);
+ STDMETHOD(OnInPlaceDeactivate)();
+ STDMETHOD(DiscardUndoState)();
+ STDMETHOD(DeactivateAndUndo)();
+ STDMETHOD(OnPosRectChange)(LPCRECT);
+ END_INTERFACE_PART(OleIPSite)
+
+ DECLARE_INTERFACE_MAP()
+
+// Friendship declarations (to avoid many public members)
+ friend class COleUIWindow;
+ friend class COleFrameWindow;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleServerItem - IOleObject & IDataObject OLE component
+
+class COleServerItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleServerItem)
+protected:
+ // NOTE: many members in this class are protected - since everything
+ // in this class is designed for implementing an OLE server.
+ // Requests will come from OLE containers through non-C++ mechanisms,
+ // which will result in virtual functions in this class being called.
+
+// Constructors
+ COleServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+ // If your COleServerItem is an integral part of your data,
+ // bAutoDelete should be FALSE. If your COleServerItem can be
+ // deleted when a link is released, it can be TRUE.
+
+ COleDataSource* GetDataSource();
+ // Use this data source to add conversion formats that your
+ // server should support. Usually such formats are
+ // added in the item's constructor.
+
+// Public Attributes
+public:
+ COleServerDoc* GetDocument() const; // return server document
+
+ // naming (for links only)
+ const CString& GetItemName() const; // get name of linked item
+ void SetItemName(LPCTSTR lpszItemName); // set name of linked item
+
+ // link state
+ BOOL IsConnected() const; // returns TRUE if item has a client
+ BOOL IsLinkedItem() const; // returns TRUE if item is not embedded item
+
+ // extents
+ CSize m_sizeExtent;
+ // HIMETRIC size -- the default implementation of OnSetExtent
+ // updates this member variable. This member tells the server how
+ // much of the object is visible in the container document.
+
+// Operations
+public:
+ void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
+ // call this after you change item
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ // helper for implementing server 'copy to clipboard'
+ DROPEFFECT DoDragDrop(LPCRECT lpRectItem, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+// Overridables
+ // overridables you must implement for yourself
+ virtual BOOL OnDraw(CDC* pDC, CSize& rSize) = 0;
+ // drawing for metafile format (return FALSE if not supported or error)
+ // (called for DVASPECT_CONTENT only)
+
+ // overridables you may want to implement yourself
+ virtual void OnUpdate(COleServerItem* pSender,
+ LPARAM lHint, CObject* pHint, DVASPECT nDrawAspect);
+ // the default implementation always calls NotifyChanged
+
+ virtual BOOL OnDrawEx(CDC* pDC, DVASPECT nDrawAspect, CSize& rSize);
+ // advanced drawing -- called for DVASPECT other than DVASPECT_CONTENT
+ virtual BOOL OnSetExtent(DVASPECT nDrawAspect, const CSize& size);
+ virtual BOOL OnGetExtent(DVASPECT nDrawAspect, CSize& rSize);
+ // default implementation uses m_sizeExtent
+
+ // overridables you do not have to implement
+ virtual void OnDoVerb(LONG iVerb);
+ // default routes to OnShow &/or OnOpen
+ virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
+ // default does nothing
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+ // called for access to clipboard data
+ virtual BOOL OnQueryUpdateItems();
+ // called to determine if there are any contained out-of-date links
+ virtual void OnUpdateItems();
+ // called to update any out-of-date links
+
+protected:
+ virtual void OnShow();
+ // show item in the user interface (may edit in-place)
+ virtual void OnOpen();
+ // show item in the user interface (must open fully)
+ virtual void OnHide();
+ // hide document (and sometimes application)
+
+ // very advanced overridables
+public:
+ virtual BOOL OnInitFromData(COleDataObject* pDataObject, BOOL bCreation);
+ // initialize object from IDataObject
+
+ // see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // Rare -- only if you support SetData (programmatic paste)
+
+ // advanced helpers for CopyToClipboard
+ void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
+ void AddOtherClipboardData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+// Implementation
+public:
+ BOOL m_bNeedUnlock; // if TRUE need to pDoc->LockExternal(FALSE)
+ BOOL m_bAutoDelete; // if TRUE will OnRelease will 'delete this'
+
+ // special version of OnFinalRelease to implement document locking
+ virtual void OnFinalRelease();
+
+protected:
+ CString m_strItemName; // simple item name
+
+public:
+ LPOLEADVISEHOLDER m_lpOleAdviseHolder; // may be NULL
+ LPDATAADVISEHOLDER m_lpDataAdviseHolder; // may be NULL
+
+ virtual ~COleServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation helpers
+ void NotifyClient(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ LPDATAOBJECT GetDataObject();
+ LPOLEOBJECT GetOleObject();
+ LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+protected:
+ virtual BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM pmedium);
+ // calls OnDraw or OnDrawEx
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+ virtual BOOL IsBlank() const;
+
+ // CItemDataSource implements OnRender reflections to COleServerItem
+ class CItemDataSource : public COleDataSource
+ {
+ protected:
+ // the GetData and SetData interfaces forward to m_pItem
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ };
+ CItemDataSource m_dataSource;
+ // data source used to implement IDataObject
+
+// Interface Maps
+// (Note: these interface maps are used just for link implementation)
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerItem, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(LPENUMOLEVERB*);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(LPCLSID);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerItem, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class CItemDataSource;
+ friend class COleServerDoc;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinkingDoc -
+// (enables linking to embeddings - beginnings of server fuctionality)
+
+class COleLinkingDoc : public COleDocument
+{
+ DECLARE_DYNAMIC(COleLinkingDoc)
+
+// Constructors
+public:
+ COleLinkingDoc();
+
+// Operations
+ BOOL Register(COleObjectFactory* pFactory, LPCTSTR lpszPathName);
+ // notify the running object table and connect to pServer
+ void Revoke();
+ // revoke from running object table
+
+// Overridables
+protected:
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (for supporting links)
+ virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
+ // return item for the named embedded item (for links to embeddings)
+
+// Implementation
+public:
+ COleObjectFactory* m_pFactory; // back-pointer to server
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleLinkingDoc();
+
+ // overrides for updating of monikers & running object table registration
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual LPOLEITEMCONTAINER GetContainer();
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+ // special handling of error messages during save/load
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ void BeginDeferErrors();
+ SCODE EndDeferErrors(SCODE sc);
+
+protected:
+ BOOL m_bDeferErrors; // TRUE if in non-interactive OLE mode
+ CException* m_pLastException;
+
+ DWORD m_dwRegister; // file moniker's registration in the ROT
+ LPMONIKER m_lpMonikerROT; // file moniker that is registered
+ CString m_strMoniker; // filename used to create moniker
+ BOOL m_bVisibleLock; // TRUE if user is holding lock on document
+
+ // implementation helpers
+ virtual BOOL RegisterIfServerAttached(LPCTSTR lpszPathName, BOOL bMessage);
+ void LockExternal(BOOL bLock, BOOL bRemoveRefs);
+ void UpdateVisibleLock(BOOL bVisible, BOOL bRemoveRefs);
+ virtual void OnShowViews(BOOL bVisible);
+
+ virtual void SaveToStorage(CObject* pObject = NULL);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistFile, IPersistFile)
+ INIT_INTERFACE_PART(COleLinkingDoc, PersistFile)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPCOLESTR, DWORD);
+ STDMETHOD(Save)(LPCOLESTR, BOOL);
+ STDMETHOD(SaveCompleted)(LPCOLESTR);
+ STDMETHOD(GetCurFile)(LPOLESTR*);
+ END_INTERFACE_PART(PersistFile)
+
+ BEGIN_INTERFACE_PART(OleItemContainer, IOleItemContainer)
+ INIT_INTERFACE_PART(COleLinkingDoc, OleItemContainer)
+ STDMETHOD(ParseDisplayName)(LPBC, LPOLESTR, ULONG*, LPMONIKER*);
+ STDMETHOD(EnumObjects)(DWORD, LPENUMUNKNOWN*);
+ STDMETHOD(LockContainer)(BOOL);
+ STDMETHOD(GetObject)(LPOLESTR, DWORD, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(GetObjectStorage)(LPOLESTR, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(IsRunning)(LPOLESTR);
+ END_INTERFACE_PART(OleItemContainer)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleClientItem;
+ friend class COleClientItem::XOleClientSite;
+ friend class COleServerItem::XOleObject;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleServerDoc - registered server document containing COleServerItems
+
+class COleServerDoc : public COleLinkingDoc
+{
+ DECLARE_DYNAMIC(COleServerDoc)
+
+// Constructors and Destructors
+public:
+ COleServerDoc();
+
+// Attributes
+ BOOL IsEmbedded() const; // TRUE if document is an embedding
+ BOOL IsDocObject() const; // TRUE if document is a DocObject
+ COleServerItem* GetEmbeddedItem();
+ // return embedded item for document (will allocate if necessary)
+
+ // attributes specific to in-place activation
+ BOOL IsInPlaceActive() const;
+ void GetItemPosition(LPRECT lpPosRect) const;
+ // get current position rectangle of in-place edit
+ void GetItemClipRect(LPRECT lpClipRect) const;
+ // get current clipping rectangle of in-place edit
+ BOOL GetZoomFactor(LPSIZE lpSizeNum = NULL, LPSIZE lpSizeDenom = NULL,
+ LPCRECT lpPosRect = NULL) const;
+ // returns the zoom factor in pixels
+
+// Operations
+ void NotifyChanged();
+ // call this after you change some global attribute like
+ // document dimensions
+ void UpdateAllItems(COleServerItem* pSender,
+ LPARAM lHint = 0L, CObject* pHint = NULL,
+ DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // changes to the entire document (automatically notifies clients)
+ void NotifyRename(LPCTSTR lpszNewName);
+ void NotifySaved();
+ void NotifyClosed(); // call this after you close document
+
+ // specific operations for embedded documents
+ void SaveEmbedding(); // call this to save embedded (before closing)
+
+ // specific to in-place activation
+ BOOL ActivateInPlace();
+ void ActivateDocObject();
+ void RequestPositionChange(LPCRECT lpPosRect);
+ BOOL ScrollContainerBy(CSize sizeScroll);
+ BOOL DeactivateAndUndo();
+ BOOL DiscardUndoState();
+
+public:
+// Overridables for standard user interface (full server)
+ virtual BOOL OnUpdateDocument(); // implementation of embedded update
+
+protected:
+// Overridables you must implement for yourself
+ virtual COleServerItem* OnGetEmbeddedItem() = 0;
+ // return item representing entire (embedded) document
+
+// Overridables you do not have to implement
+ virtual void OnClose(OLECLOSE dwCloseOption);
+ virtual void OnSetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+#ifndef _MAC
+ virtual HRESULT OnExecOleCmd(const GUID* pguidCmdGroup, DWORD nCmdID,
+ DWORD nCmdExecOpt, VARIANTARG* pvarargIn, VARIANTARG* pvarargOut);
+ virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);
+#endif
+
+// Advanced overridables
+ LPUNKNOWN GetInterfaceHook(const void* piid);
+ virtual void OnShowDocument(BOOL bShow);
+ // show first frame for document or hide all frames for document
+
+// Advanced overridables for in-place activation
+public:
+ virtual void OnDeactivate();
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ virtual BOOL OnReactivateAndUndo();
+
+ virtual void OnFrameWindowActivate(BOOL bActivate);
+ virtual void OnDocWindowActivate(BOOL bActivate);
+ virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+ virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
+ virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
+public:
+ virtual void OnResizeBorder(LPCRECT lpRectBorder,
+ LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
+
+// Implementation
+protected:
+ LPOLECLIENTSITE m_lpClientSite; // for embedded item
+ CString m_strHostObj; // name of document in container
+ BOOL m_bCntrVisible; // TRUE if OnShowWindow(TRUE) called
+ BOOL m_bClosing; // TRUE if shutting down
+#ifdef _MAC
+ BOOL m_bDeactivating; // TRUE if in-place deactivating
+#endif
+ COleServerItem* m_pEmbeddedItem; // pointer to embedded item for document
+
+ COleIPFrameWnd* m_pInPlaceFrame; // not NULL if in-place activated
+ CWnd* m_pOrigParent; // not NULL if existing view used
+ DWORD m_dwOrigStyle; // original style of in-place view
+ DWORD m_dwOrigStyleEx; // original extended style
+
+ CDocObjectServer* m_pDocObjectServer; // if DocObject, ptr to doc site
+
+public:
+ virtual ~COleServerDoc();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // overridables for implementation
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual void DeleteContents(); // delete auto-delete server items
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (only if supporting links)
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+
+protected:
+ // overrides to handle server user-interface
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual HMENU GetDefaultMenu(); // return menu based on doc type
+ virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
+ virtual BOOL GetFileTypeString(CString& rString);
+
+ // IPersistStorage implementation
+ virtual void OnNewEmbedding(LPSTORAGE lpStorage);
+ virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+
+ // Implementation helpers
+ void NotifyAllItems(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ BOOL SaveModifiedPrompt();
+ void ConnectView(CWnd* pParentWnd, CView* pView);
+ void UpdateUsingHostObj(UINT nIDS, CCmdUI* pCmdUI);
+
+// Message Maps
+ //{{AFX_MSG(COleServerDoc)
+ afx_msg void OnFileUpdate();
+ afx_msg void OnFileSaveCopyAs();
+ afx_msg void OnUpdateFileUpdate(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateFileExit(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleServerDoc, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerDoc, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServer;
+ friend class COleServerItem;
+ friend class CDocObjectServer;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleIPFrameWnd
+
+class COleCntrFrameWnd;
+
+class COleIPFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(COleIPFrameWnd)
+
+// Constructors
+public:
+ COleIPFrameWnd();
+
+// Overridables
+public:
+ virtual BOOL OnCreateControlBars(CWnd* pWndFrame, CWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+ virtual BOOL OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+
+ virtual void RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ // Advanced: reposition frame to wrap around new lpPosRect
+
+// Implementation
+public:
+ BOOL m_bUIActive; // TRUE if currently in uiacitve state
+
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_CHILD|WS_BORDER|WS_CLIPSIBLINGS,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ virtual ~COleIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ // in-place state
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEFRAME m_lpFrame;
+ LPOLEINPLACEUIWINDOW m_lpDocFrame;
+ COleCntrFrameWnd* m_pMainFrame;
+ COleCntrFrameWnd* m_pDocFrame;
+
+ HMENU m_hSharedMenu;
+ OLEMENUGROUPWIDTHS m_menuWidths;
+ HOLEMENU m_hOleMenu;
+ CRect m_rectPos; // client area rect of the item
+ CRect m_rectClip; // area to which frame should be clipped
+ BOOL m_bInsideRecalc;
+
+ HMENU m_hMenuHelpPopup; // shared Help menu for DocObjects
+
+ // Advanced: in-place activation virtual implementation
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+ virtual HMENU GetInPlaceMenu();
+
+ // Advanced: possible override to change in-place sizing behavior
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+
+protected:
+ //{{AFX_MSG(COleIPFrameWnd)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnRecalcParent(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg LRESULT OnResizeChild(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnContextHelp();
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+#ifdef _MAC
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+#endif
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class COleServerDoc;
+ friend class COleCntrFrameWnd;
+ friend class CDocObjectServer;
+};
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+// COleResizeBar - supports in-place resizing in server applications
+
+class COleResizeBar : public CControlBar
+{
+ DECLARE_DYNAMIC(COleResizeBar)
+
+// Constructors
+public:
+ COleResizeBar();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_RESIZE_BAR);
+
+// Implementation
+public:
+ virtual ~COleResizeBar();
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ CRectTracker m_tracker; // implemented with a tracker
+
+protected:
+ //{{AFX_MSG(COleResizeBar)
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnLButtonDown(UINT, CPoint point);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// COleStreamFile - implementation of CFile which uses an IStream
+
+class COleStreamFile : public CFile
+{
+ DECLARE_DYNAMIC(COleStreamFile)
+
+// Constructors and Destructors
+public:
+ COleStreamFile(LPSTREAM lpStream = NULL);
+
+// Operations
+ // Note: OpenStream and CreateStream can accept eith STGM_ flags or
+ // CFile::OpenFlags bits since common values are guaranteed to have
+ // the same semantics.
+ BOOL OpenStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive,
+ CFileException* pError = NULL);
+ BOOL CreateStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive|modeCreate,
+ CFileException* pError = NULL);
+
+ BOOL CreateMemoryStream(CFileException* pError = NULL);
+
+ // attach & detach can be used when Open/Create functions aren't adequate
+ void Attach(LPSTREAM lpStream);
+ LPSTREAM Detach();
+
+ IStream* GetStream() const;
+ // Returns the current stream
+
+// Implementation
+public:
+ LPSTREAM m_lpStream;
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleStreamFile();
+
+ // attributes for implementation
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual DWORD GetPosition() const;
+
+ virtual const CString GetStorageName() const;
+
+ // overrides for implementation
+ virtual CFile* Duplicate() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+protected:
+ CString m_strStorageName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMonikerFile - implementation of COleStreamFile that uses an IMoniker to
+// get the IStream
+
+class CMonikerFile: public COleStreamFile
+{
+ DECLARE_DYNAMIC(CMonikerFile)
+
+public:
+ CMonikerFile();
+
+#ifndef _MAC
+ virtual BOOL Open(LPCTSTR lpszURL, CFileException* pError=NULL);
+ // Uses synchronous URLMonikers to create a moniker.
+ // Opens the URL specified.
+ // If provided, pError will be set in case of error.
+ // Return value: TRUE if successful, FALSE otherwise.
+#endif //!_MAC
+
+ virtual BOOL Open(IMoniker* pMoniker, CFileException* pError=NULL);
+ // Binds to the provided moniker to obtain a stream.
+ // If provided, pError will be set in case of error.
+ // Return value: TRUE if successful, FALSE otherwise.
+
+ virtual void Close();
+ // Detaches the stream, Release()s it, and the moniker. Close may be
+ // called on unopened, or already closed streams.
+
+ BOOL Detach(CFileException* pError = NULL);
+ // Closes the stream. If there is an error when closing, then the
+ // error code will be placed in pError and the function will return FALSE.
+
+ IMoniker* GetMoniker() const;
+ // Returns the current moniker. The moniker returned is not AddRef()'ed.
+
+protected:
+// Overidables
+ IBindCtx* CreateBindContext(CFileException* pError);
+ // A hook so users can provide a particular IBindCtx, potentially one
+ // on which the user has registered one or more objects.
+
+// Implementation
+protected:
+#ifndef _MAC
+ virtual BOOL Open(LPCTSTR lpszUrl, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+ BOOL Attach(LPCTSTR lpszUrl, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+#endif
+ virtual BOOL Open(IMoniker* pMoniker, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+
+ BOOL Attach(IMoniker* pMoniker, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+
+ virtual BOOL PostBindToStream(CFileException* pError);
+
+ static IBindHost* CreateBindHost();
+public:
+ virtual ~CMonikerFile();
+ // Closes the stream, and releases the moniker if needed.
+
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ // Calls COleStreamFile::Dump(), and prints out moniker value.
+#endif
+
+private:
+ IPTR(IMoniker) m_Moniker;
+ // The moniker provided or created to which this class is bound.
+
+ CMonikerFile(const CMonikerFile&);
+ // Prevents copying.
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncMonikerFile - implementation of COleStreamFile that uses an
+// asynchronous IMoniker to get the IStream
+
+#ifndef _MAC
+
+class _AfxBindStatusCallback; // Forward declaration
+
+class CAsyncMonikerFile: public CMonikerFile
+{
+ DECLARE_DYNAMIC(CAsyncMonikerFile)
+
+public:
+ CAsyncMonikerFile();
+ // Creates the IBindStatusCallback used internally to provide asynchronous
+ // operation.
+
+ //All Open overloads call one of these two.
+ virtual BOOL Open(LPCTSTR lpszURL, IBindHost* pBindHost,
+ CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IBindHost* pBindHost,
+ CFileException* pError=NULL);
+
+ //Open overloads that take monikers
+ virtual BOOL Open(IMoniker* pMoniker, CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IServiceProvider* pServiceProvider,
+ CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IUnknown* pUnknown,
+ CFileException* pError=NULL);
+
+ //Open overloads that take strings
+ virtual BOOL Open(LPCTSTR lpszURL, CFileException* pError=NULL);
+ virtual BOOL Open(LPCTSTR lpszURL, IServiceProvider* pServiceProvider,
+ CFileException* pError=NULL);
+ virtual BOOL Open(LPCTSTR lpszURL, IUnknown* pUnknown,
+ CFileException* pError=NULL);
+
+ virtual void Close();
+
+ IBinding* GetBinding() const;
+ // Returns the binding provided when the asychronous transfer begins.
+ // With the IBinding*, the user may abort, or pause the transfer.
+ // NULL may be returned if for any reason the transfer could not be
+ // made asynchronous, or if the IBinding* has not yet been provided by
+ // the system.
+
+ FORMATETC* GetFormatEtc() const;
+ // Returns the FORMATETC for the currently opened stream. NULL will be
+ // returned if this is called from outside the context of OnDataAvailable.
+ // If you want to keep the FORMATETC beyond this call, make a copy of it.
+ // The FORMATETC indicates the format of the data in the stream.
+
+protected:
+// Overidables
+ virtual DWORD GetBindInfo() const;
+ // Returns the settings returned by IBindStatusCallback::GetBindInfo.
+ // The default values returned should work for most cases and should not
+ // be changed lightly.
+
+ virtual LONG GetPriority() const;
+ // Returns the priority at which the asynchronous transfer will take
+ // place. The value is one of the standard thread priority flags.
+ // By default THREAD_PRIORITY_NORMAL is returned.
+
+ virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
+ // Called when there is data available to be read. dwSize indicates
+ // the cumulative number of bytes which can be read. The bscfFlag may be used
+ // to identify first, last, and intermediate blocks of data.
+
+ virtual void OnLowResource();
+ // This is called when resources are low.
+
+ virtual void OnStartBinding();
+ // Called when the binding is starting up.
+
+ virtual void OnProgress(ULONG ulProgress, ULONG ulProgressMax,
+ ULONG ulStatusCode, LPCTSTR szStatusText);
+
+ virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);
+ // Called when the transfer is stopped. This function releases the
+ // IBinding and should nearly always be call when overidden.
+
+// Implementation
+public:
+ virtual ~CAsyncMonikerFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ // Calls CMonikerFile::Dump(), and prints out IBinding,
+ // IBindStatusCallback, and m_pFormatEtc values.
+#endif
+
+private:
+ friend class _AfxBindStatusCallback;
+
+ IPTR(IBinding) m_Binding;
+ _AfxBindStatusCallback* m_BSC;
+ FORMATETC* m_pFormatEtc;
+
+ void SetBinding(IBinding* pBinding);
+ // Sets and AddRefs m_Binding
+
+ void SetFormatEtc(FORMATETC* pFormatEtc);
+ // Sets the FORMATETC for the current stream.
+
+protected:
+ virtual BOOL PostBindToStream(CFileException* pError);
+};
+
+#endif // !_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropSource (advanced drop source support)
+
+class COleDropSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropSource();
+
+// Overridables
+ virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
+ virtual SCODE GiveFeedback(DROPEFFECT dropEffect);
+ virtual BOOL OnBeginDrag(CWnd* pWnd);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ BEGIN_INTERFACE_PART(DropSource, IDropSource)
+ INIT_INTERFACE_PART(COleDropSource, DropSource)
+ STDMETHOD(QueryContinueDrag)(BOOL, DWORD);
+ STDMETHOD(GiveFeedback)(DWORD);
+ END_INTERFACE_PART(DropSource)
+
+ DECLARE_INTERFACE_MAP()
+
+ CRect m_rectStartDrag; // when mouse leaves this rect, drag drop starts
+ BOOL m_bDragStarted; // has drag really started yet?
+ DWORD m_dwButtonCancel; // which button will cancel (going down)
+ DWORD m_dwButtonDrop; // which button will confirm (going up)
+
+ // metrics for drag start determination
+ static AFX_DATA UINT nDragMinDist; // min. amount mouse must move for drag
+ static AFX_DATA UINT nDragDelay; // delay before drag starts
+
+ friend class COleDataSource;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropTarget (advanced drop target support)
+
+class COleDropTarget : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropTarget();
+
+// Operations
+ BOOL Register(CWnd* pWnd);
+ virtual void Revoke(); // virtual for implementation
+
+// Overridables
+ virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual void OnDragLeave(CWnd* pWnd);
+ virtual DROPEFFECT OnDragScroll(CWnd* pWnd, DWORD dwKeyState,
+ CPoint point);
+
+// Implementation
+public:
+ virtual ~COleDropTarget();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HWND m_hWnd; // HWND this IDropTarget is attached to
+ LPDATAOBJECT m_lpDataObject; // != NULL between OnDragEnter, OnDragLeave
+ UINT m_nTimerID; // != MAKEWORD(-1, -1) when in scroll area
+ DWORD m_dwLastTick; // only valid when m_nTimerID valid
+ UINT m_nScrollDelay; // time to next scroll
+
+ // metrics for drag-scrolling
+ static AFX_DATA int nScrollInset;
+ static AFX_DATA UINT nScrollDelay;
+ static AFX_DATA UINT nScrollInterval;
+
+ // implementation helpers
+ void SetupTimer(CView* pView, UINT nTimerID);
+ void CancelTimer(CWnd* pWnd);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DropTarget, IDropTarget)
+ INIT_INTERFACE_PART(COleDropTarget, DropTarget)
+ STDMETHOD(DragEnter)(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragOver)(DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragLeave)();
+ STDMETHOD(Drop)(LPDATAOBJECT, DWORD, POINTL pt, LPDWORD);
+ END_INTERFACE_PART(DropTarget)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleMessageFilter (implements IMessageFilter)
+
+class COleMessageFilter : public CCmdTarget
+{
+// Constructors
+public:
+ COleMessageFilter();
+
+// Operations
+ BOOL Register();
+ void Revoke();
+
+ // for controlling the busy state of the server application (called app)
+ virtual void BeginBusyState();
+ virtual void EndBusyState();
+ void SetBusyReply(SERVERCALL nBusyReply);
+
+ // for controlling actions taken against rejected/retried calls
+ void SetRetryReply(DWORD nRetryReply = 0);
+ // only used when the "not responding" dialog is disabled
+ void SetMessagePendingDelay(DWORD nTimeout = 5000);
+ // used to determine amount of time before significant message
+ void EnableBusyDialog(BOOL bEnableBusy = TRUE);
+ void EnableNotRespondingDialog(BOOL bEnableNotResponding = TRUE);
+ // used to enable/disable the two types of busy dialogs
+
+// Overridables
+ virtual BOOL OnMessagePending(const MSG* pMsg);
+ // return TRUE to eat the message (usually only if processed)
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleMessageFilter();
+ virtual BOOL IsSignificantMessage(MSG* pMsg);
+ // determine if any significant messages are present in the queue
+ virtual int OnBusyDialog(HTASK htaskBusy);
+ virtual int OnNotRespondingDialog(HTASK htaskBusy);
+ // these functions display the busy dialog
+
+protected:
+ BOOL m_bRegistered;
+ LONG m_nBusyCount; // for BeginBusyState & EndBusyState
+ BOOL m_bEnableBusy;
+ BOOL m_bEnableNotResponding;
+ BOOL m_bUnblocking;
+ DWORD m_nRetryReply; // only used if m_bEnableNotResponding == FALSE
+ DWORD m_nBusyReply;
+ DWORD m_nTimeout;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(MessageFilter, IMessageFilter)
+ INIT_INTERFACE_PART(COleMessageFilter, MessageFilter)
+ STDMETHOD_(DWORD, HandleInComingCall)(DWORD, HTASK, DWORD,
+ LPINTERFACEINFO);
+ STDMETHOD_(DWORD, RetryRejectedCall)(HTASK, DWORD, DWORD);
+ STDMETHOD_(DWORD, MessagePending)(HTASK, DWORD, DWORD);
+ END_INTERFACE_PART(MessageFilter)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// message map entries for OLE verbs
+
+#define ON_STDOLEVERB(iVerb, memberFxn) \
+ { 0xC002, 0, (UINT)iVerb, (UINT)iVerb, (UINT)-1, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))&memberFxn },
+
+#define ON_OLEVERB(idsVerbName, memberFxn) \
+ { 0xC002, 0, 1, 1, idsVerbName, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers and debugging
+
+void AFXAPI AfxOleSetEditMenu(COleClientItem* pClient, CMenu* pMenu,
+ UINT iMenuItem, UINT nIDVerbMin, UINT nIDVerbMax = 0, UINT nIDConvert = 0);
+
+#ifdef _DEBUG
+// Mapping SCODEs to readable text
+LPCTSTR AFXAPI AfxGetFullScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeRangeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetSeverityString(SCODE sc);
+LPCTSTR AFXAPI AfxGetFacilityString(SCODE sc);
+
+// Mapping IIDs to readable text
+LPCTSTR AFXAPI AfxGetIIDString(REFIID iid);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXOLE_INLINE inline
+#define _AFXOLECLI_INLINE inline
+#define _AFXOLESVR_INLINE inline
+#define _AFXOLEDOBJ_INLINE inline
+#include <afxole.inl>
+#undef _AFXOLE_INLINE
+#undef _AFXOLECLI_INLINE
+#undef _AFXOLESVR_INLINE
+#undef _AFXOLEDOBJ_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXOLE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxole.inl b/public/sdk/inc/mfc42/afxole.inl
new file mode 100644
index 000000000..6a970c553
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxole.inl
@@ -0,0 +1,408 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXOLE.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE inlines (CDocItem, COleDocument)
+
+#ifdef _AFXOLE_INLINE
+
+// CDocItem
+_AFXOLE_INLINE CDocument* CDocItem::GetDocument() const
+ { return m_pDocument; }
+
+// COleDocument
+_AFXOLE_INLINE void COleDocument::EnableCompoundFile(BOOL bEnable)
+ { m_bCompoundFile = bEnable; }
+
+// COleMessageFilter
+_AFXOLE_INLINE void COleMessageFilter::SetBusyReply(SERVERCALL nBusyReply)
+ { ASSERT_VALID(this); m_nBusyReply = nBusyReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetRetryReply(DWORD nRetryReply)
+ { ASSERT_VALID(this); m_nRetryReply = nRetryReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetMessagePendingDelay(DWORD nTimeout)
+ { ASSERT_VALID(this); m_nTimeout = nTimeout; }
+_AFXOLE_INLINE void COleMessageFilter::EnableBusyDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableBusy = bEnable; }
+_AFXOLE_INLINE void COleMessageFilter::EnableNotRespondingDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableNotResponding = bEnable; }
+
+// CMonikerFile
+_AFXOLE_INLINE CMonikerFile::CMonikerFile() { }
+_AFXOLE_INLINE IMoniker* CMonikerFile::GetMoniker() const
+ { ASSERT_VALID(this); return m_Moniker; }
+
+#ifndef _MAC
+// CAsyncMonikerFile
+_AFXOLE_INLINE IBinding* CAsyncMonikerFile::GetBinding() const
+ { ASSERT_VALID(this); return m_Binding; }
+_AFXOLE_INLINE void CAsyncMonikerFile::SetBinding(IBinding* pBinding)
+ { ASSERT_VALID(this); m_Binding=pBinding; }
+_AFXOLE_INLINE void CAsyncMonikerFile::SetFormatEtc(FORMATETC* pFormatEtc)
+ { ASSERT_VALID(this); m_pFormatEtc=pFormatEtc; }
+_AFXOLE_INLINE FORMATETC* CAsyncMonikerFile::GetFormatEtc() const
+ { ASSERT_VALID(this); return m_pFormatEtc; }
+#endif // !_MAC
+
+#endif //_AFXOLE_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE automation inlines
+
+#ifdef _AFXDISP_INLINE
+
+// COleException
+_AFXDISP_INLINE COleException::COleException()
+ { m_sc = S_OK; }
+_AFXDISP_INLINE COleException::~COleException()
+ { }
+
+// CCmdTarget
+_AFXDISP_INLINE DWORD CCmdTarget::InternalAddRef()
+ { ASSERT(GetInterfaceMap() != NULL); return InterlockedIncrement(&m_dwRef); }
+
+// CObjectFactory
+_AFXDISP_INLINE BOOL COleObjectFactory::IsRegistered() const
+ { ASSERT_VALID(this); return m_dwRegister != 0; }
+_AFXDISP_INLINE REFCLSID COleObjectFactory::GetClassID() const
+ { ASSERT_VALID(this); return m_clsid; }
+
+// COleDispatchDriver
+_AFXDISP_INLINE COleDispatchDriver::~COleDispatchDriver()
+ { ReleaseDispatch(); }
+_AFXDISP_INLINE COleDispatchDriver::operator LPDISPATCH()
+ { return m_lpDispatch; }
+
+// COleVariant
+_AFXDISP_INLINE COleVariant::COleVariant()
+ { AfxVariantInit(this); }
+_AFXDISP_INLINE COleVariant::~COleVariant()
+ { ::VariantClear(this); }
+_AFXDISP_INLINE COleVariant::COleVariant(LPCTSTR lpszSrc)
+ { vt = VT_EMPTY; *this = lpszSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(CString& strSrc)
+ { vt = VT_EMPTY; *this = strSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(BYTE nSrc)
+ { vt = VT_UI1; bVal = nSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleCurrency& curSrc)
+ { vt = VT_CY; cyVal = curSrc.m_cur; }
+_AFXDISP_INLINE COleVariant::COleVariant(float fltSrc)
+ { vt = VT_R4; fltVal = fltSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(double dblSrc)
+ { vt = VT_R8; dblVal = dblSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleDateTime& dateSrc)
+ { vt = VT_DATE; date = dateSrc.m_dt; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CByteArray& arrSrc)
+ { vt = VT_EMPTY; *this = arrSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CLongBinary& lbSrc)
+ { vt = VT_EMPTY; *this = lbSrc; }
+_AFXDISP_INLINE BOOL COleVariant::operator==(LPCVARIANT pSrc) const
+ { return *this == *pSrc; }
+_AFXDISP_INLINE COleVariant::operator LPVARIANT()
+ { return this; }
+_AFXDISP_INLINE COleVariant::operator LPCVARIANT() const
+ { return this; }
+
+// COleCurrency
+_AFXDISP_INLINE COleCurrency::COleCurrency()
+ { m_cur.Hi = 0; m_cur.Lo = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(CURRENCY cySrc)
+ { m_cur = cySrc; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const COleCurrency& curSrc)
+ { m_cur = curSrc.m_cur; m_status = curSrc.m_status; }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleCurrency::CurrencyStatus COleCurrency::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleCurrency::SetStatus(CurrencyStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator+=(const COleCurrency& cur)
+ { *this = *this + cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator-=(const COleCurrency& cur)
+ { *this = *this - cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator*=(long nOperand)
+ { *this = *this * nOperand; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator/=(long nOperand)
+ { *this = *this / nOperand; return *this; }
+_AFXDISP_INLINE BOOL COleCurrency::operator==(const COleCurrency& cur) const
+ { return(m_status == cur.m_status && m_cur.Hi == cur.m_cur.Hi &&
+ m_cur.Lo == cur.m_cur.Lo); }
+_AFXDISP_INLINE BOOL COleCurrency::operator!=(const COleCurrency& cur) const
+ { return(m_status != cur.m_status || m_cur.Hi != cur.m_cur.Hi ||
+ m_cur.Lo != cur.m_cur.Lo); }
+_AFXDISP_INLINE COleCurrency::operator CURRENCY() const
+ { return m_cur; }
+
+// COleDateTime
+_AFXDISP_INLINE COleDateTime::COleDateTime()
+ { m_dt = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(DATE dtSrc)
+ { m_dt = dtSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(time_t timeSrc)
+ { *this = timeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const SYSTEMTIME& systimeSrc)
+ { *this = systimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const FILETIME& filetimeSrc)
+ { *this = filetimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec)
+ { SetDateTime(nYear, nMonth, nDay, nHour, nMin, nSec); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(WORD wDosDate, WORD wDosTime)
+ { m_status = DosDateTimeToVariantTime(wDosDate, wDosTime, &m_dt) ?
+ valid : invalid; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator=(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; return *this; }
+_AFXDISP_INLINE COleDateTime::DateTimeStatus COleDateTime::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTime::SetStatus(DateTimeStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE BOOL COleDateTime::operator==(const COleDateTime& date) const
+ { return (m_status == date.m_status && m_dt == date.m_dt); }
+_AFXDISP_INLINE BOOL COleDateTime::operator!=(const COleDateTime& date) const
+ { return (m_status != date.m_status || m_dt != date.m_dt); }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTime::operator DATE() const
+ { return m_dt; }
+_AFXDISP_INLINE COleDateTime::SetDate(int nYear, int nMonth, int nDay)
+ { return SetDateTime(nYear, nMonth, nDay, 0, 0, 0); }
+_AFXDISP_INLINE COleDateTime::SetTime(int nHour, int nMin, int nSec)
+ // Set date to zero date - 12/30/1899
+ { return SetDateTime(1899, 12, 30, nHour, nMin, nSec); }
+
+// COleDateTimeSpan
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan()
+ { m_span = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(double dblSpanSrc)
+ { m_span = dblSpanSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ const COleDateTimeSpan& dateSpanSrc)
+ { m_span = dateSpanSrc.m_span; m_status = dateSpanSrc.m_status; }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ long lDays, int nHours, int nMins, int nSecs)
+ { SetDateTimeSpan(lDays, nHours, nMins, nSecs); }
+_AFXDISP_INLINE COleDateTimeSpan::DateTimeSpanStatus COleDateTimeSpan::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTimeSpan::SetStatus(DateTimeSpanStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalDays() const
+ { ASSERT(GetStatus() == valid); return m_span; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalHours() const
+ { ASSERT(GetStatus() == valid); return m_span * 24; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalMinutes() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalSeconds() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60 * 60; }
+_AFXDISP_INLINE long COleDateTimeSpan::GetDays() const
+ { ASSERT(GetStatus() == valid); return (long)m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator==(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status == dateSpan.m_status &&
+ m_span == dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator!=(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status != dateSpan.m_status ||
+ m_span != dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span < dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span > dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span <= dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span >= dateSpan.m_span; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTimeSpan COleDateTimeSpan::operator-() const
+ { return -this->m_span; }
+_AFXDISP_INLINE COleDateTimeSpan::operator double() const
+ { return m_span; }
+
+// COleSafeArray
+_AFXDISP_INLINE COleSafeArray::COleSafeArray()
+ { AfxSafeArrayInit(this);
+ vt = VT_EMPTY; }
+_AFXDISP_INLINE COleSafeArray::~COleSafeArray()
+ { Clear(); }
+_AFXDISP_INLINE void COleSafeArray::Clear()
+ { VERIFY(::VariantClear(this) == NOERROR); }
+_AFXDISP_INLINE COleSafeArray::operator LPVARIANT()
+ { return this; }
+_AFXDISP_INLINE COleSafeArray::operator LPCVARIANT() const
+ { return this; }
+_AFXDISP_INLINE DWORD COleSafeArray::GetDim()
+ { return ::SafeArrayGetDim(parray); }
+_AFXDISP_INLINE DWORD COleSafeArray::GetElemSize()
+ { return ::SafeArrayGetElemsize(parray); }
+
+#endif //_AFXDISP_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Container inlines
+
+#ifdef _AFXOLECLI_INLINE
+
+// COleClientItem
+_AFXOLECLI_INLINE SCODE COleClientItem::GetLastStatus() const
+ { ASSERT_VALID(this); return m_scLast; }
+_AFXOLECLI_INLINE COleDocument* COleClientItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleDocument*)m_pDocument; }
+_AFXOLECLI_INLINE OLE_OBJTYPE COleClientItem::GetType() const
+ { ASSERT_VALID(this); return m_nItemType; }
+_AFXOLECLI_INLINE DVASPECT COleClientItem::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_nDrawAspect; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsRunning() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ return ::OleIsRunning(m_lpObject); }
+_AFXOLECLI_INLINE UINT COleClientItem::GetItemState() const
+ { ASSERT_VALID(this); return m_nItemState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsInPlaceActive() const
+ { ASSERT_VALID(this);
+ return m_nItemState == activeState || m_nItemState == activeUIState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsOpen() const
+ { ASSERT_VALID(this); return m_nItemState == openState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsLinkUpToDate() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ // TRUE if result is S_OK (aka S_TRUE)
+ return m_lpObject->IsUpToDate() == NOERROR; }
+_AFXOLECLI_INLINE CView* COleClientItem::GetActiveView() const
+ { return m_pView; }
+
+// COleLinkingDoc
+_AFXOLECLI_INLINE void COleLinkingDoc::BeginDeferErrors()
+ { ASSERT(m_pLastException == NULL); ++m_bDeferErrors; }
+
+#endif //_AFXOLECLI_INLINE
+
+#ifdef _AFXOLEDOBJ_INLINE
+
+// COleDataObject
+_AFXOLEDOBJ_INLINE COleDataObject::~COleDataObject()
+ { Release(); }
+
+#endif //_AFXOLECTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dialog inlines
+
+#ifdef _AFXODLGS_INLINE
+
+_AFXODLGS_INLINE UINT COleDialog::GetLastError() const
+ { return m_nLastError; }
+_AFXODLGS_INLINE CString COleInsertDialog::GetPathName() const
+ { ASSERT_VALID(this);
+ ASSERT(GetSelectionType() != createNewItem); return m_szFileName; }
+_AFXODLGS_INLINE REFCLSID COleInsertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_io.clsid; }
+_AFXODLGS_INLINE HGLOBAL COleInsertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_io.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleInsertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_io.dwFlags & IOF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COleConvertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_cv.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleConvertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return (DVASPECT)m_cv.dvAspect; }
+_AFXODLGS_INLINE REFCLSID COleConvertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_cv.clsidNew; }
+_AFXODLGS_INLINE HGLOBAL COleChangeIconDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ci.hMetaPict; }
+_AFXODLGS_INLINE int COlePasteSpecialDialog::GetPasteIndex() const
+ { ASSERT_VALID(this); return m_ps.nSelectedIndex; }
+_AFXODLGS_INLINE DVASPECT COlePasteSpecialDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_ps.dwFlags & PSF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COlePasteSpecialDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ps.hMetaPict; }
+_AFXODLGS_INLINE UINT COleBusyDialog::GetSelectionType() const
+ { ASSERT_VALID(this); return m_selection; }
+
+_AFXODLGS_INLINE BOOL COleChangeSourceDialog::IsValidSource()
+ { return m_cs.dwFlags & CSF_VALIDSOURCE; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetDisplayName()
+ { return m_cs.lpszDisplayName; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFileName()
+ { return CString(m_cs.lpszDisplayName, m_cs.nFileLength); }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetItemName()
+ { return m_cs.lpszDisplayName+m_cs.nFileLength; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFromPrefix()
+ { return m_cs.lpszFrom; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetToPrefix()
+ { return m_cs.lpszTo; }
+
+#endif //_AFXODLGS_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server inlines
+
+#ifdef _AFXOLESVR_INLINE
+
+// COleServerItem
+_AFXOLESVR_INLINE COleServerDoc* COleServerItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleServerDoc*)m_pDocument; }
+_AFXOLESVR_INLINE void COleServerItem::NotifyChanged(DVASPECT nDrawAspect)
+ { ASSERT_VALID(this); NotifyClient(OLE_CHANGED, nDrawAspect); }
+_AFXOLESVR_INLINE const CString& COleServerItem::GetItemName() const
+ { ASSERT_VALID(this); return m_strItemName; }
+_AFXOLESVR_INLINE void COleServerItem::SetItemName(LPCTSTR lpszItemName)
+{
+ ASSERT_VALID(this);
+ ASSERT(lpszItemName != NULL);
+ ASSERT(AfxIsValidString(lpszItemName));
+ m_strItemName = lpszItemName;
+}
+_AFXOLESVR_INLINE BOOL COleServerItem::IsLinkedItem() const
+ { ASSERT_VALID(this); return GetDocument()->m_pEmbeddedItem != this; }
+_AFXOLESVR_INLINE COleDataSource* COleServerItem::GetDataSource()
+ { ASSERT_VALID(this); return &m_dataSource; }
+
+// COleServerDoc
+_AFXOLESVR_INLINE void COleServerDoc::NotifyChanged()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CHANGED, DVASPECT_CONTENT); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifyClosed()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CLOSED, 0); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifySaved()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_SAVED, 0); }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsEmbedded() const
+ { ASSERT_VALID(this); return m_bEmbedded; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsDocObject() const
+ { ASSERT_VALID(this); return (m_pDocObjectServer != NULL) ? TRUE : FALSE; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsInPlaceActive() const
+ { ASSERT_VALID(this); return m_pInPlaceFrame != NULL; }
+#endif //_AFXOLESVR_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxolecl.rc b/public/sdk/inc/mfc42/afxolecl.rc
new file mode 100644
index 000000000..70e3032a7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Can not activate a static OLE object."
+ AFX_IDP_FAILED_TO_CONNECT "Failed to connect.\nLink may be broken."
+ AFX_IDP_SERVER_BUSY "Unable to process command, server busy."
+ AFX_IDP_BAD_VERB "Failed to perform server operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Failed to launch server application."
+ AFX_IDS_UPDATING_ITEMS "Updating OLE objects"
+ AFX_IDP_FAILED_TO_CONVERT "Failed to convert OLE object."
+ AFX_IDP_ASK_TO_DISCARD "OLE objects cannot be saved while exiting Windows!\nDiscard all changes to %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Picture (Metafile)\na picture"
+ AFX_IDS_DIB_FORMAT "Device Independent Bitmap\na device independent bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntext with font and paragraph formatting"
+ AFX_IDS_TEXT_FORMAT "Unformatted Text\ntext without any formatting"
+
+ AFX_IDS_INVALID_CURRENCY "Invalid Currency."
+ AFX_IDS_INVALID_DATETIME "Invalid DateTime."
+ AFX_IDS_INVALID_DATETIMESPAN "Invalid DateTimeSpan."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/afxolesv.rc b/public/sdk/inc/mfc42/afxolesv.rc
new file mode 100644
index 000000000..781dcab00
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Update %1 before proceeding?"
+ AFX_IDP_FAILED_TO_UPDATE, "Could not update client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Failed to register. OLE features may not work properly."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Failed to update the system registry.\nPlease try using REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "E&xit && Return to %1"
+ AFX_IDS_UPDATE_MENU, "&Update %1"
+ AFX_IDS_SAVEFILECOPY, "Save Copy As"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/afxplex_.h b/public/sdk/inc/mfc42/afxplex_.h
new file mode 100644
index 000000000..9f9a5e1cd
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxplex_.h
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPLEX_H__
+#define __AFXPLEX_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg(AFX_COLL_SEG)
+#endif
+
+struct CPlex // warning variable length structure
+{
+ CPlex* pNext;
+#if (_AFX_PACKING >= 8)
+ DWORD dwReserved[1]; // align on 8 byte boundary
+#endif
+ // BYTE data[maxNum*elementSize];
+
+ void* data() { return this+1; }
+
+ static CPlex* PASCAL Create(CPlex*& head, UINT nMax, UINT cbElement);
+ // like 'calloc' but no zero fill
+ // may throw memory exceptions
+
+ void FreeDataChain(); // free this one and links
+};
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg()
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif //__AFXPLEX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxprint.rc b/public/sdk/inc/mfc42/afxprint.rc
new file mode 100644
index 000000000..a3f534c49
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Printing",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "on the",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,45,40,15
+ CTEXT "Press Cmd-. to cancel.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Pre&v",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "on %1" // for print output
+ AFX_IDS_ONEPAGE, "&One Page" // for preview button
+ AFX_IDS_TWOPAGE, "&Two Page" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/afxpriv.h b/public/sdk/inc/mfc42/afxpriv.h
new file mode 100644
index 000000000..330154123
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxpriv.h
@@ -0,0 +1,789 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV_H__
+#define __AFXPRIV_H__
+
+#ifndef __AFXADV_H__
+ #include <afxadv.h>
+#endif
+
+#ifndef _INC_MALLOC
+ #include <malloc.h>
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV - MFC Private Classes
+
+// Implementation structures
+struct AFX_SIZEPARENTPARAMS; // Control bar implementation
+struct AFX_CMDHANDLERINFO; // Command routing implementation
+
+// Classes declared in this file
+
+ //CDC
+ class CPreviewDC; // Virtual DC for print preview
+
+ //CCmdTarget
+ //CWnd
+ //CView
+ class CPreviewView; // Print preview view
+ //CFrameWnd
+ class COleCntrFrameWnd;
+ //CMiniFrameWnd
+ class CMiniDockFrameWnd;
+
+class CDockContext; // for dragging control bars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Global ID ranges (see Technical note TN020 for more details)
+
+// 8000 -> FFFF command IDs (used for menu items, accelerators and controls)
+#define IS_COMMAND_ID(nID) ((nID) & 0x8000)
+
+// 8000 -> DFFF : user commands
+// E000 -> EFFF : AFX commands and other things
+// F000 -> FFFF : standard windows commands and other things etc
+ // E000 -> E7FF standard commands
+ // E800 -> E8FF control bars (first 32 are special)
+ // E900 -> EEFF standard window controls/components
+ // EF00 -> EFFF SC_ menu help
+ // F000 -> FFFF standard strings
+#define ID_COMMAND_FROM_SC(sc) (((sc - 0xF000) >> 4) + AFX_IDS_SCFIRST)
+
+// 0000 -> 7FFF IDR range
+// 0000 -> 6FFF : user resources
+// 7000 -> 7FFF : AFX (and standard windows) resources
+// IDR ranges (NOTE: IDR_ values must be <32768)
+#define ASSERT_VALID_IDR(nIDR) ASSERT((nIDR) != 0 && (nIDR) < 0x8000)
+
+/////////////////////////////////////////////////////////////////////////////
+// Context sensitive help support (see Technical note TN028 for more details)
+
+// Help ID bases
+#define HID_BASE_COMMAND 0x00010000UL // ID and IDM
+#define HID_BASE_RESOURCE 0x00020000UL // IDR and IDD
+#define HID_BASE_PROMPT 0x00030000UL // IDP
+#define HID_BASE_NCAREAS 0x00040000UL
+#define HID_BASE_CONTROL 0x00050000UL // IDC
+#define HID_BASE_DISPATCH 0x00060000UL // IDispatch help codes
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal AFX Windows messages (see Technical note TN024 for more details)
+// (0x0360 - 0x037F are reserved for MFC)
+
+#define WM_QUERYAFXWNDPROC 0x0360 // lResult = 1 if processed by AfxWndProc
+#define WM_SIZEPARENT 0x0361 // lParam = &AFX_SIZEPARENTPARAMS
+#define WM_SETMESSAGESTRING 0x0362 // wParam = nIDS (or 0),
+ // lParam = lpszOther (or NULL)
+#define WM_IDLEUPDATECMDUI 0x0363 // wParam == bDisableIfNoHandler
+#define WM_INITIALUPDATE 0x0364 // (params unused) - sent to children
+#define WM_COMMANDHELP 0x0365 // lResult = TRUE/FALSE,
+ // lParam = dwContext
+#define WM_HELPHITTEST 0x0366 // lResult = dwContext,
+ // lParam = MAKELONG(x,y)
+#define WM_EXITHELPMODE 0x0367 // (params unused)
+#define WM_RECALCPARENT 0x0368 // force RecalcLayout on frame window
+ // (only for inplace frame windows)
+#define WM_SIZECHILD 0x0369 // special notify from COleResizeBar
+ // wParam = ID of child window
+ // lParam = lpRectNew (new position/size)
+#define WM_KICKIDLE 0x036A // (params unused) causes idles to kick in
+#define WM_QUERYCENTERWND 0x036B // lParam = HWND to use as centering parent
+#define WM_DISABLEMODAL 0x036C // lResult = 0, disable during modal state
+ // lResult = 1, don't disable
+#define WM_FLOATSTATUS 0x036D // wParam combination of FS_* flags below
+
+// WM_ACTIVATETOPLEVEL is like WM_ACTIVATEAPP but works with hierarchies
+// of mixed processes (as is the case with OLE in-place activation)
+#define WM_ACTIVATETOPLEVEL 0x036E // wParam = nState (like WM_ACTIVATE)
+ // lParam = pointer to HWND[2]
+ // lParam[0] = hWnd getting WM_ACTIVATE
+ // lParam[1] = hWndOther
+
+#define WM_QUERY3DCONTROLS 0x036F // lResult != 0 if 3D controls wanted
+
+// Note: Messages 0x0370, 0x0371, and 0x372 were incorrectly used by
+// some versions of Windows. To remain compatible, MFC does not
+// use messages in that range.
+#define WM_RESERVED_0370 0x0370
+#define WM_RESERVED_0371 0x0371
+#define WM_RESERVED_0372 0x0372
+
+// WM_SOCKET_NOTIFY and WM_SOCKET_DEAD are used internally by MFC's
+// Windows sockets implementation. For more information, see sockcore.cpp
+#define WM_SOCKET_NOTIFY 0x0373
+#define WM_SOCKET_DEAD 0x0374
+
+// same as WM_SETMESSAGESTRING except not popped if IsTracking()
+#define WM_POPMESSAGESTRING 0x0375
+
+// Constants used in DLGINIT resources for OLE control containers
+// NOTE: These are NOT real Windows messages they are simply tags
+// used in the control resource and are never used as 'messages'
+#define WM_OCC_LOADFROMSTREAM 0x0376
+#define WM_OCC_LOADFROMSTORAGE 0x0377
+#define WM_OCC_INITNEW 0x0378
+#define WM_OCC_LOADFROMSTREAM_EX 0x037A
+#define WM_OCC_LOADFROMSTORAGE_EX 0x037B
+
+// Marker used while rearranging the message queue
+#define WM_QUEUE_SENTINEL 0x0379
+
+// Note: Messages 0x037C - 0x37F reserved for future MFC use.
+#define WM_RESERVED_037C 0x037C
+#define WM_RESERVED_037D 0x037D
+#define WM_RESERVED_037E 0x037E
+#define WM_RESERVED_037F 0x037F
+
+// like ON_MESSAGE but no return value
+#define ON_MESSAGE_VOID(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&memberFxn },
+
+// special struct for WM_SIZEPARENT
+struct AFX_SIZEPARENTPARAMS
+{
+ HDWP hDWP; // handle for DeferWindowPos
+ RECT rect; // parent client rectangle (trim as appropriate)
+ SIZE sizeTotal; // total size on each side as layout proceeds
+ BOOL bStretch; // should stretch to fill all space
+};
+
+// flags for wParam in the WM_FLOATSTATUS message
+enum { FS_SHOW = 0x01, FS_HIDE = 0x02,
+ FS_ACTIVATE = 0x04, FS_DEACTIVATE = 0x08,
+ FS_ENABLE = 0x10, FS_DISABLE = 0x20,
+ FS_SYNCACTIVE = 0x40 };
+
+void AFXAPI AfxRepositionWindow(AFX_SIZEPARENTPARAMS* lpLayout,
+ HWND hWnd, LPCRECT lpRect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of command routing
+
+struct AFX_CMDHANDLERINFO
+{
+ CCmdTarget* pTarget;
+ void (AFX_MSG_CALL CCmdTarget::*pmf)(void);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Robust file save support
+// opens a temp file if modeCreate specified and enough free space
+// renaming, etc occurs automatically if everything succeeds
+
+class CMirrorFile : public CFile
+{
+// Implementation
+public:
+ virtual void Abort();
+ virtual void Close();
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+protected:
+ CString m_strMirrorName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of PrintPreview
+
+class CPreviewDC : public CDC
+{
+ DECLARE_DYNAMIC(CPreviewDC)
+
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC);
+
+ virtual void ReleaseOutputDC();
+
+// Constructors
+ CPreviewDC();
+
+// Implementation
+public:
+ virtual ~CPreviewDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ void SetScaleRatio(int nNumerator, int nDenominator);
+ void SetTopLeftOffset(CSize TopLeft);
+ void ClipToPage();
+
+ // These conversion functions can be used without an output DC
+
+ void PrinterDPtoScreenDP(LPPOINT lpPoint) const;
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ virtual CFont* SelectObject(CFont* pFont);
+
+// Drawing-Attribute Functions
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+// Mapping Functions
+ virtual int SetMapMode(int nMapMode);
+ virtual CPoint SetViewportOrg(int x, int y);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+ virtual CSize SetWindowExt(int x, int y);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Implementation
+protected:
+ void MirrorMappingMode(BOOL bCompute);
+ void MirrorViewportOrg();
+ void MirrorFont();
+ void MirrorAttributes();
+
+ CSize ComputeDeltas(int& x, LPCTSTR lpszString, UINT& nCount, BOOL bTabbed,
+ UINT nTabStops, LPINT lpnTabStops, int nTabOrigin,
+ LPTSTR lpszOutputString, int* pnDxWidths, int& nRightFixup);
+
+protected:
+ int m_nScaleNum; // Scale ratio Numerator
+ int m_nScaleDen; // Scale ratio Denominator
+ int m_nSaveDCIndex; // DC Save index when Screen DC Attached
+ int m_nSaveDCDelta; // delta between Attrib and output restore indices
+ CSize m_sizeTopLeft;// Offset for top left corner of page
+ HFONT m_hFont; // Font selected into the screen DC (NULL if none)
+ HFONT m_hPrinterFont; // Font selected into the print DC
+#ifdef _MAC
+ int m_aCharWidthsDraw[256]; // character widths for m_hDC
+ int m_aCharWidthsAttrib[256]; // character widths for m_hAttribDC
+#endif
+
+ CSize m_sizeWinExt; // cached window extents computed for screen
+ CSize m_sizeVpExt; // cached viewport extents computed for screen
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPreviewView
+
+class CDialogBar;
+
+class CPreviewView : public CScrollView
+{
+ DECLARE_DYNCREATE(CPreviewView)
+
+// Constructors
+public:
+ CPreviewView();
+ BOOL SetPrintView(CView* pPrintView);
+
+// Attributes
+protected:
+ CView* m_pOrigView;
+ CView* m_pPrintView;
+ CPreviewDC* m_pPreviewDC; // Output and attrib DCs Set, not created
+ CDC m_dcPrint; // Actual printer DC
+
+// Operations
+ void SetZoomState(UINT nNewState, UINT nPage, CPoint point);
+ void SetCurrentPage(UINT nPage, BOOL bClearRatios);
+
+ // Returns TRUE if in a page rect. Returns the page index
+ // in nPage and the point converted to 1:1 screen device coordinates
+ BOOL FindPageRect(CPoint& point, UINT& nPage);
+
+
+// Overridables
+ virtual void OnActivateView(BOOL bActivate,
+ CView* pActivateView, CView* pDeactiveView);
+
+ // Returns .cx/.cy as the numerator/denominator pair for the ratio
+ // using CSize for convenience
+ virtual CSize CalcScaleRatio(CSize windowSize, CSize actualSize);
+
+ virtual void PositionPage(UINT nPage);
+ virtual void OnDisplayPageNumber(UINT nPage, UINT nPagesDisplayed);
+
+// Implementation
+public:
+ virtual ~CPreviewView();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+#ifdef _MAC
+ virtual void CalcWindowRect(LPRECT lpClientRect);
+#endif
+
+protected:
+ //{{AFX_MSG(CPreviewView)
+ afx_msg void OnPreviewClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnDraw(CDC* pDC);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnNumPageChange();
+ afx_msg void OnNextPage();
+ afx_msg void OnPrevPage();
+ afx_msg void OnPreviewPrint();
+ afx_msg void OnZoomIn();
+ afx_msg void OnZoomOut();
+ afx_msg void OnUpdateNumPageChange(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNextPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePrevPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomIn(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomOut(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ //}}AFX_MSG
+
+ void DoZoom(UINT nPage, CPoint point);
+ void SetScaledSize(UINT nPage);
+ CSize CalcPageDisplaySize();
+
+ CPrintPreviewState* m_pPreviewState; // State to restore
+ CDialogBar* m_pToolBar; // Toolbar for preview
+
+ struct PAGE_INFO
+ {
+ CRect rectScreen; // screen rect (screen device units)
+ CSize sizeUnscaled; // unscaled screen rect (screen device units)
+ CSize sizeScaleRatio; // scale ratio (cx/cy)
+ CSize sizeZoomOutRatio; // scale ratio when zoomed out (cx/cy)
+ };
+
+ PAGE_INFO* m_pPageInfo; // Array of page info structures
+ PAGE_INFO m_pageInfoArray[2]; // Embedded array for the default implementation
+
+ BOOL m_bPageNumDisplayed;// Flags whether or not page number has yet
+ // been displayed on status line
+ UINT m_nZoomOutPages; // number of pages when zoomed out
+ UINT m_nZoomState;
+ UINT m_nMaxPages; // for sanity checks
+ UINT m_nCurrentPage;
+ UINT m_nPages;
+ int m_nSecondPageOffset; // used to shift second page position
+
+ HCURSOR m_hMagnifyCursor;
+
+ CSize m_sizePrinterPPI; // printer pixels per inch
+ CPoint m_ptCenterPoint;
+ CPrintInfo* m_pPreviewInfo;
+
+ DECLARE_MESSAGE_MAP()
+
+ friend class CView;
+ friend BOOL CALLBACK _AfxPreviewCloseProc(CFrameWnd* pFrameWnd);
+};
+
+// Zoom States
+#define ZOOM_OUT 0
+#define ZOOM_MIDDLE 1
+#define ZOOM_IN 2
+
+/////////////////////////////////////////////////////////////////////////////
+// toolbar docking support
+
+class CDockContext
+{
+public:
+// Construction
+ CDockContext(CControlBar* pBar);
+
+// Attributes
+ CPoint m_ptLast; // last mouse position during drag
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bDitherLast;
+
+ // Rectangles used during dragging or resizing
+ CRect m_rectDragHorz;
+ CRect m_rectDragVert;
+ CRect m_rectFrameDragHorz;
+ CRect m_rectFrameDragVert;
+
+ CControlBar* m_pBar; // the toolbar that created this context
+ CFrameWnd* m_pDockSite; // the controlling frame of the CControlBar
+ DWORD m_dwDockStyle; // allowable dock styles for bar
+ DWORD m_dwOverDockStyle; // style of dock that rect is over
+ DWORD m_dwStyle; // style of control bar
+ BOOL m_bFlip; // if shift key is down
+ BOOL m_bForceFrame; // if ctrl key is down
+
+ CDC* m_pDC; // where to draw during drag
+ BOOL m_bDragging;
+ int m_nHitTest;
+
+ UINT m_uMRUDockID;
+ CRect m_rectMRUDockPos;
+
+ DWORD m_dwMRUFloatStyle;
+ CPoint m_ptMRUFloatPos;
+
+// Drag Operations
+ virtual void StartDrag(CPoint pt);
+ void Move(CPoint pt); // called when mouse has moved
+ void EndDrag(); // drop
+ void OnKey(int nChar, BOOL bDown);
+
+// Resize Operations
+ virtual void StartResize(int nHitTest, CPoint pt);
+ void Stretch(CPoint pt);
+ void EndResize();
+
+// Double Click Operations
+ virtual void ToggleDocking();
+
+// Operations
+ void InitLoop();
+ void CancelLoop();
+
+// Implementation
+public:
+ ~CDockContext();
+ BOOL Track();
+ void DrawFocusRect(BOOL bRemoveRect = FALSE);
+ // draws the correct outline
+ void UpdateState(BOOL* pFlag, BOOL bNewValue);
+ DWORD CanDock();
+ CDockBar* GetDockBar(DWORD dwOverDockStyle);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CControlBarInfo - used for docking serialization
+
+class CControlBarInfo
+{
+public:
+// Implementation
+ CControlBarInfo();
+
+// Attributes
+ UINT m_nBarID; // ID of this bar
+ BOOL m_bVisible; // visibility of this bar
+ BOOL m_bFloating; // whether floating or not
+ BOOL m_bHorz; // orientation of floating dockbar
+ BOOL m_bDockBar; // TRUE if a dockbar
+ CPoint m_pointPos; // topleft point of window
+
+ UINT m_nMRUWidth; // MRUWidth for Dynamic Toolbars
+ BOOL m_bDocking; // TRUE if this bar has a DockContext
+ UINT m_uMRUDockID; // most recent docked dockbar
+ CRect m_rectMRUDockPos; // most recent docked position
+ DWORD m_dwMRUFloatStyle; // most recent floating orientation
+ CPoint m_ptMRUFloatPos; // most recent floating position
+
+ CPtrArray m_arrBarID; // bar IDs for bars contained within this one
+ CControlBar* m_pBar; // bar which this refers to (transient)
+
+ void Serialize(CArchive& ar, CDockState* pDockState);
+ BOOL LoadState(LPCTSTR lpszProfileName, int nIndex, CDockState* pDockState);
+ BOOL SaveState(LPCTSTR lpszProfileName, int nIndex);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockBar - used for docking
+
+class CDockBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDockBar)
+
+// Construction
+public:
+ CDockBar(BOOL bFloating = FALSE); // TRUE if attached to CMiniDockFrameWnd
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
+
+// Attributes
+ BOOL m_bFloating;
+
+ virtual BOOL IsDockBar() const;
+ int GetDockedCount() const;
+ virtual int GetDockedVisibleCount() const;
+
+// Operations
+ void DockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ BOOL RemoveControlBar(CControlBar*, int nPosExclude = -1, BOOL bAddPlaceHolder = FALSE);
+ void RemovePlaceHolder(CControlBar* pBar);
+
+// Implementation
+public:
+ virtual ~CDockBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual void DoPaint(CDC* pDC);
+#ifdef _MAC
+ virtual BOOL CheckMonochrome();
+#endif
+
+ // public implementation helpers
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+ int FindBar(CControlBar* pBar, int nPosExclude = -1);
+ void ShowAll(BOOL bShow);
+
+protected:
+ CPtrArray m_arrBars; // each element is a CControlBar
+ BOOL m_bLayoutQuery;
+ CRect m_rectLayout;
+
+ CControlBar* GetDockedControlBar(int nPos) const;
+
+ // implementation helpers
+ int Insert(CControlBar* pBar, CRect rect, CPoint ptMid);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+#ifdef _MAC
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+#endif
+
+ //{{AFX_MSG(CDockBar)
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg void OnNcPaint();
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSizeParent(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CMiniDockFrameWnd;
+};
+
+class CMiniDockFrameWnd : public CMiniFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniDockFrameWnd)
+
+public:
+// Construction
+ CMiniDockFrameWnd();
+ virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+// Implementation
+public:
+ CDockBar m_wndDockBar;
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg void OnClose();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCntrFrameWnd
+
+class COleIPFrameWnd;
+
+class COleCntrFrameWnd : public CFrameWnd
+{
+// Constructor
+public:
+ COleCntrFrameWnd(COleIPFrameWnd* pInPlaceFrame);
+
+// Implementation
+protected:
+ COleIPFrameWnd* m_pInPlaceFrame;
+ virtual void PostNcDestroy();
+
+public:
+ virtual ~COleCntrFrameWnd();
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ void OnIdleUpdateCmdUI();
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+#ifdef _DEBUG
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialogTemplate
+
+#ifndef _MAC
+
+class CDialogTemplate
+{
+// Constructors
+public:
+ CDialogTemplate(const DLGTEMPLATE* pTemplate = NULL);
+ CDialogTemplate(HGLOBAL hGlobal);
+
+// Attributes
+ BOOL HasFont() const;
+ BOOL SetFont(LPCTSTR lpFaceName, WORD nFontSize);
+ BOOL SetSystemFont(WORD nFontSize = 0);
+ BOOL GetFont(CString& strFaceName, WORD& nFontSize) const;
+ void GetSizeInDialogUnits(SIZE* pSize) const;
+ void GetSizeInPixels(SIZE* pSize) const;
+
+ static BOOL AFX_CDECL GetFont(const DLGTEMPLATE* pTemplate,
+ CString& strFaceName, WORD& nFontSize);
+
+// Operations
+ BOOL Load(LPCTSTR lpDialogTemplateID);
+ HGLOBAL Detach();
+
+// Implementation
+public:
+ ~CDialogTemplate();
+
+ HGLOBAL m_hTemplate;
+ DWORD m_dwTemplateSize;
+ BOOL m_bSystemFont;
+
+protected:
+ static BYTE* AFX_CDECL GetFontSizeField(const DLGTEMPLATE* pTemplate);
+ static UINT AFX_CDECL GetTemplateSize(const DLGTEMPLATE* pTemplate);
+ BOOL SetTemplate(const DLGTEMPLATE* pTemplate, UINT cb);
+};
+
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// WM_NOTIFY support
+
+struct AFX_NOTIFY
+{
+ LRESULT* pResult;
+ NMHDR* pNMHDR;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global implementation helpers
+
+// window creation hooking
+void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
+BOOL AFXAPI AfxUnhookWindowCreate();
+void AFXAPI AfxResetMsgCache();
+
+// for backward compatibility to previous versions
+#define _AfxHookWindowCreate AfxHookWindowCreate
+#define _AfxUnhookWindowCreate AfxUnhookWindowCreate
+
+// string helpers
+void AFXAPI AfxSetWindowText(HWND hWndCtrl, LPCTSTR lpszNew);
+int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf, UINT nMaxBuf = 256);
+
+HDC AFXAPI AfxCreateDC(HGLOBAL hDevNames, HGLOBAL hDevMode);
+
+void AFXAPI AfxGetModuleShortFileName(HINSTANCE hInst, CString& strShortName);
+
+// Failure dialog helpers
+void AFXAPI AfxFailMaxChars(CDataExchange* pDX, int nChars);
+void AFXAPI AfxFailRadio(CDataExchange* pDX);
+
+// DLL load helpers
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE* volatile hInst, LPCSTR lpszDLL);
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE* volatile hInst, LPCSTR lpszDLL,
+ FARPROC* pProcPtrs, LPCSTR lpszProcName);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA);
+LPDEVMODEA AFXAPI AfxDevModeW2A(LPDEVMODEA lpDevModeA, LPDEVMODEW lpDevModeW);
+#define DEVMODEW2A(lpw)\
+ ((lpw == NULL) ? NULL : AfxDevModeW2A((LPDEVMODEA)alloca(sizeof(DEVMODEA)+lpw->dmDriverExtra), lpw))
+#define DEVMODEA2W(lpa)\
+ ((lpa == NULL) ? NULL : AfxDevModeA2W((LPDEVMODEW)alloca(sizeof(DEVMODEW)+lpa->dmDriverExtra), lpa))
+
+LPTEXTMETRICW AFXAPI AfxTextMetricA2W(LPTEXTMETRICW lptmW, LPTEXTMETRICA pltmA);
+LPTEXTMETRICA AFXAPI AfxTextMetricW2A(LPTEXTMETRICA lptmA, LPTEXTMETRICW pltmW);
+#define TEXTMETRICW2A(lptmw)\
+ ((lptmw == NULL) ? NULL : AfxTextMetricW2A((LPTEXTMETRICA)alloca(sizeof(TEXTMETRICA)), lptmw))
+#define TEXTMETRICA2W(lptma)\
+ ((lptma == NULL) ? NULL : AfxTextMetricA2W((LPTEXTMETRICW)alloca(sizeof(TEXTMETRICW)), lptma))
+
+#ifndef __AFXCONV_H__
+#include <afxconv.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXPRIV_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __AFXPRIV2_H__
+#include <afxpriv2.h>
+#endif
diff --git a/public/sdk/inc/mfc42/afxpriv2.h b/public/sdk/inc/mfc42/afxpriv2.h
new file mode 100644
index 000000000..e1a0e287f
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxpriv2.h
@@ -0,0 +1,225 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV2_H__
+// Do not define __AFXPRIV2_H__ here. It is defined at the bottom.
+
+#ifndef __AFXPRIV_H__
+ #include <afxpriv.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV2 - MFC Private Classes
+
+// General OLE features
+
+#if (!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+
+// Implementation structures
+struct AFX_EVENT; // Event sink implementation
+
+// Classes declared in this file
+class COleControlLock;
+
+#endif
+
+// OLE Automation features
+
+#ifdef __AFXDISP_H__
+// Classes declared in this file
+
+//IStream
+ class CArchiveStream;
+
+// Functions declared in this file
+
+// AfxBSTR2ABTSR
+// AfxTaskStringA2W
+// AfxTaskStringW2A
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE features
+
+#if (!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+#ifndef __AFXPRIV2_H__OLE__
+#define __AFXPRIV2_H__OLE__
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of event sink handling
+
+struct AFX_EVENT
+{
+ enum
+ {
+ event,
+ propRequest, propChanged,
+ propDSCNotify
+ };
+
+ AFX_EVENT(int eventKind);
+
+ AFX_EVENT(int eventKind, DISPID dispid, DISPPARAMS* pDispParams = NULL,
+ EXCEPINFO* pExcepInfo = NULL, UINT* puArgError = NULL);
+
+ int m_eventKind;
+ DISPID m_dispid;
+ DISPPARAMS* m_pDispParams;
+ EXCEPINFO* m_pExcepInfo;
+ UINT* m_puArgError;
+ BOOL m_bPropChanged;
+ HRESULT m_hResult;
+ DSCSTATE m_nDSCState;
+ DSCREASON m_nDSCReason;
+};
+
+inline AFX_EVENT::AFX_EVENT(int eventKind)
+{
+ m_eventKind = eventKind;
+ m_dispid = DISPID_UNKNOWN;
+ m_pDispParams = NULL;
+ m_pExcepInfo = NULL;
+ m_puArgError = NULL;
+ m_hResult = NOERROR;
+ m_nDSCState = dscNoState;
+ m_nDSCReason = dscNoReason;
+}
+
+inline AFX_EVENT::AFX_EVENT(int eventKind, DISPID dispid,
+ DISPPARAMS* pDispParams, EXCEPINFO* pExcepInfo, UINT* puArgError)
+{
+ m_eventKind = eventKind;
+ m_dispid = dispid;
+ m_pDispParams = pDispParams;
+ m_pExcepInfo = pExcepInfo;
+ m_puArgError = puArgError;
+ m_hResult = NOERROR;
+ m_nDSCState = dscNoState;
+ m_nDSCReason = dscNoReason;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlLock
+
+class COleControlLock
+{
+// Constructors
+public:
+ COleControlLock(REFCLSID clsid);
+
+// Attributes
+ CLSID m_clsid;
+ LPCLASSFACTORY m_pClassFactory;
+ COleControlLock* m_pNextLock;
+
+// Implementation
+public:
+ virtual ~COleControlLock();
+};
+
+#endif // __AFXPRIV2_H__OLE__
+#endif //(!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Automation features
+
+#ifdef __AFXDISP_H__
+#ifndef __AFXPRIV2_H__DISP__
+#define __AFXPRIV2_H__DISP__
+
+/////////////////////////////////////////////////////////////////////////////
+// CArchiveStream
+
+class CArchiveStream : public IStream
+{
+public:
+ CArchiveStream(CArchive* pArchive);
+
+// Implementation
+ CArchive* m_pArchive;
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ STDMETHOD(Read)(void*, ULONG, ULONG*);
+ STDMETHOD(Write)(const void*, ULONG cb, ULONG*);
+ STDMETHOD(Seek)(LARGE_INTEGER, DWORD, ULARGE_INTEGER*);
+ STDMETHOD(SetSize)(ULARGE_INTEGER);
+ STDMETHOD(CopyTo)(LPSTREAM, ULARGE_INTEGER, ULARGE_INTEGER*,
+ ULARGE_INTEGER*);
+ STDMETHOD(Commit)(DWORD);
+ STDMETHOD(Revert)();
+ STDMETHOD(LockRegion)(ULARGE_INTEGER, ULARGE_INTEGER,DWORD);
+ STDMETHOD(UnlockRegion)(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
+ STDMETHOD(Stat)(STATSTG*, DWORD);
+ STDMETHOD(Clone)(LPSTREAM*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+void AFXAPI AfxBSTR2CString(CString* pStr, BSTR bstr);
+
+#if !defined(_UNICODE) && !defined(OLE2ANSI)
+BSTR AFXAPI AfxBSTR2ABSTR(BSTR bstrW);
+LPWSTR AFXAPI AfxTaskStringA2W(LPCSTR lpa);
+LPSTR AFXAPI AfxTaskStringW2A(LPCWSTR lpw);
+#endif
+
+#endif // __AFXPRIV2_H__DISP__
+#endif // __AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#if (defined __AFXPRIV2_H__OLE__) && (defined __AFXPRIV2_H__DISP__)
+#define __AFXPRIV2_H__
+#endif
+
+#endif // __AFXPRIV2_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxres.h b/public/sdk/inc/mfc42/afxres.h
new file mode 100644
index 000000000..bd26ee934
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxres.h
@@ -0,0 +1,772 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_H__
+#define __AFXRES_H__
+
+#ifdef REZ // Mac resource compiler (mrc) defines REZ
+#define RC_INVOKED
+#endif
+
+#ifdef RC_INVOKED
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+ #include "winres.h" // extract from windows header
+#endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC resource types (see Technical note TN024 for implementation details)
+
+#ifndef RC_INVOKED
+#define RT_DLGINIT MAKEINTRESOURCE(240)
+#define RT_TOOLBAR MAKEINTRESOURCE(241)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// General style bits etc
+
+// Tab Control styles
+#ifndef TCS_MULTILINE // new in later versions of Win32
+#define TCS_MULTILINE 0x0200
+#endif
+
+// ControlBar styles
+#define CBRS_ALIGN_LEFT 0x1000L
+#define CBRS_ALIGN_TOP 0x2000L
+#define CBRS_ALIGN_RIGHT 0x4000L
+#define CBRS_ALIGN_BOTTOM 0x8000L
+#define CBRS_ALIGN_ANY 0xF000L
+
+#define CBRS_BORDER_LEFT 0x0100L
+#define CBRS_BORDER_TOP 0x0200L
+#define CBRS_BORDER_RIGHT 0x0400L
+#define CBRS_BORDER_BOTTOM 0x0800L
+#define CBRS_BORDER_ANY 0x0F00L
+
+#define CBRS_TOOLTIPS 0x0010L
+#define CBRS_FLYBY 0x0020L
+#define CBRS_FLOAT_MULTI 0x0040L
+#define CBRS_BORDER_3D 0x0080L
+#define CBRS_HIDE_INPLACE 0x0008L
+#define CBRS_SIZE_DYNAMIC 0x0004L
+#define CBRS_SIZE_FIXED 0x0002L
+#define CBRS_FLOATING 0x0001L
+
+#define CBRS_ORIENT_HORZ (CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)
+#define CBRS_ORIENT_VERT (CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)
+#define CBRS_ORIENT_ANY (CBRS_ORIENT_HORZ|CBRS_ORIENT_VERT)
+
+#define CBRS_ALL 0xFFFFL
+
+
+// the CBRS_ style is made up of an alignment style and a draw border style
+// the alignment styles are mutually exclusive
+// the draw border styles may be combined
+#define CBRS_NOALIGN 0x00000000L
+#define CBRS_LEFT (CBRS_ALIGN_LEFT|CBRS_BORDER_RIGHT)
+#define CBRS_TOP (CBRS_ALIGN_TOP|CBRS_BORDER_BOTTOM)
+#define CBRS_RIGHT (CBRS_ALIGN_RIGHT|CBRS_BORDER_LEFT)
+#define CBRS_BOTTOM (CBRS_ALIGN_BOTTOM|CBRS_BORDER_TOP)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard window components
+
+// Mode indicators in status bar - these are routed like commands
+#define ID_INDICATOR_EXT 0xE700 // extended selection indicator
+#define ID_INDICATOR_CAPS 0xE701 // cap lock indicator
+#define ID_INDICATOR_NUM 0xE702 // num lock indicator
+#define ID_INDICATOR_SCRL 0xE703 // scroll lock indicator
+#define ID_INDICATOR_OVR 0xE704 // overtype mode indicator
+#define ID_INDICATOR_REC 0xE705 // record mode indicator
+#define ID_INDICATOR_KANA 0xE706 // kana lock indicator
+
+#define ID_SEPARATOR 0 // special separator value
+
+#ifndef RC_INVOKED // code only
+// Standard control bars (IDW = window ID)
+#define AFX_IDW_CONTROLBAR_FIRST 0xE800
+#define AFX_IDW_CONTROLBAR_LAST 0xE8FF
+
+#define AFX_IDW_TOOLBAR 0xE800 // main Toolbar for window
+#define AFX_IDW_STATUS_BAR 0xE801 // Status bar window
+#define AFX_IDW_PREVIEW_BAR 0xE802 // PrintPreview Dialog Bar
+#define AFX_IDW_RESIZE_BAR 0xE803 // OLE in-place resize bar
+
+// Note: If your application supports docking toolbars, you should
+// not use the following IDs for your own toolbars. The IDs chosen
+// are at the top of the first 32 such that the bars will be hidden
+// while in print preview mode, and are not likely to conflict with
+// IDs your application may have used succesfully in the past.
+
+#define AFX_IDW_DOCKBAR_TOP 0xE81B
+#define AFX_IDW_DOCKBAR_LEFT 0xE81C
+#define AFX_IDW_DOCKBAR_RIGHT 0xE81D
+#define AFX_IDW_DOCKBAR_BOTTOM 0xE81E
+#define AFX_IDW_DOCKBAR_FLOAT 0xE81F
+
+// Macro for mapping standard control bars to bitmask (limit of 32)
+#define AFX_CONTROLBAR_MASK(nIDC) (1L << (nIDC - AFX_IDW_CONTROLBAR_FIRST))
+
+// parts of Main Frame
+#define AFX_IDW_PANE_FIRST 0xE900 // first pane (256 max)
+#define AFX_IDW_PANE_LAST 0xE9ff
+#define AFX_IDW_HSCROLL_FIRST 0xEA00 // first Horz scrollbar (16 max)
+#define AFX_IDW_VSCROLL_FIRST 0xEA10 // first Vert scrollbar (16 max)
+
+#define AFX_IDW_SIZE_BOX 0xEA20 // size box for splitters
+#define AFX_IDW_PANE_SAVE 0xEA21 // to shift AFX_IDW_PANE_FIRST
+#endif //!RC_INVOKED
+
+#ifndef APSTUDIO_INVOKED
+
+// common style for form views
+#define AFX_WS_DEFAULT_VIEW (WS_CHILD | WS_VISIBLE | WS_BORDER)
+
+#endif //!APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard app configurable strings
+
+// for application title (defaults to EXE name or name in constructor)
+#define AFX_IDS_APP_TITLE 0xE000
+// idle message bar line
+#define AFX_IDS_IDLEMESSAGE 0xE001
+// message bar line when in shift-F1 help mode
+#define AFX_IDS_HELPMODEMESSAGE 0xE002
+// document title when editing OLE embedding
+#define AFX_IDS_APP_TITLE_EMBEDDING 0xE003
+// company name
+#define AFX_IDS_COMPANY_NAME 0xE004
+// object name when server is inplace
+#define AFX_IDS_OBJ_TITLE_INPLACE 0xE005
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Commands
+
+// File commands
+#define ID_FILE_NEW 0xE100
+#define ID_FILE_OPEN 0xE101
+#define ID_FILE_CLOSE 0xE102
+#define ID_FILE_SAVE 0xE103
+#define ID_FILE_SAVE_AS 0xE104
+#define ID_FILE_PAGE_SETUP 0xE105
+#define ID_FILE_PRINT_SETUP 0xE106
+#define ID_FILE_PRINT 0xE107
+#define ID_FILE_PRINT_DIRECT 0xE108
+#define ID_FILE_PRINT_PREVIEW 0xE109
+#define ID_FILE_UPDATE 0xE10A
+#define ID_FILE_SAVE_COPY_AS 0xE10B
+#define ID_FILE_SEND_MAIL 0xE10C
+
+#define ID_FILE_MRU_FIRST 0xE110
+#define ID_FILE_MRU_FILE1 0xE110 // range - 16 max
+#define ID_FILE_MRU_FILE2 0xE111
+#define ID_FILE_MRU_FILE3 0xE112
+#define ID_FILE_MRU_FILE4 0xE113
+#define ID_FILE_MRU_FILE5 0xE114
+#define ID_FILE_MRU_FILE6 0xE115
+#define ID_FILE_MRU_FILE7 0xE116
+#define ID_FILE_MRU_FILE8 0xE117
+#define ID_FILE_MRU_FILE9 0xE118
+#define ID_FILE_MRU_FILE10 0xE119
+#define ID_FILE_MRU_FILE11 0xE11A
+#define ID_FILE_MRU_FILE12 0xE11B
+#define ID_FILE_MRU_FILE13 0xE11C
+#define ID_FILE_MRU_FILE14 0xE11D
+#define ID_FILE_MRU_FILE15 0xE11E
+#define ID_FILE_MRU_FILE16 0xE11F
+#define ID_FILE_MRU_LAST 0xE11F
+
+// Edit commands
+#define ID_EDIT_CLEAR 0xE120
+#define ID_EDIT_CLEAR_ALL 0xE121
+#define ID_EDIT_COPY 0xE122
+#define ID_EDIT_CUT 0xE123
+#define ID_EDIT_FIND 0xE124
+#define ID_EDIT_PASTE 0xE125
+#define ID_EDIT_PASTE_LINK 0xE126
+#define ID_EDIT_PASTE_SPECIAL 0xE127
+#define ID_EDIT_REPEAT 0xE128
+#define ID_EDIT_REPLACE 0xE129
+#define ID_EDIT_SELECT_ALL 0xE12A
+#define ID_EDIT_UNDO 0xE12B
+#define ID_EDIT_REDO 0xE12C
+
+// Window commands
+#define ID_WINDOW_NEW 0xE130
+#define ID_WINDOW_ARRANGE 0xE131
+#define ID_WINDOW_CASCADE 0xE132
+#define ID_WINDOW_TILE_HORZ 0xE133
+#define ID_WINDOW_TILE_VERT 0xE134
+#define ID_WINDOW_SPLIT 0xE135
+#ifndef RC_INVOKED // code only
+#define AFX_IDM_WINDOW_FIRST 0xE130
+#define AFX_IDM_WINDOW_LAST 0xE13F
+#define AFX_IDM_FIRST_MDICHILD 0xFF00 // window list starts here
+#endif //!RC_INVOKED
+
+// Help and App commands
+#define ID_APP_ABOUT 0xE140
+#define ID_APP_EXIT 0xE141
+#define ID_HELP_INDEX 0xE142
+#define ID_HELP_FINDER 0xE143
+#define ID_HELP_USING 0xE144
+#define ID_CONTEXT_HELP 0xE145 // shift-F1
+// special commands for processing help
+#define ID_HELP 0xE146 // first attempt for F1
+#define ID_DEFAULT_HELP 0xE147 // last attempt
+
+// Misc
+#define ID_NEXT_PANE 0xE150
+#define ID_PREV_PANE 0xE151
+
+// Format
+#define ID_FORMAT_FONT 0xE160
+
+// OLE commands
+#define ID_OLE_INSERT_NEW 0xE200
+#define ID_OLE_EDIT_LINKS 0xE201
+#define ID_OLE_EDIT_CONVERT 0xE202
+#define ID_OLE_EDIT_CHANGE_ICON 0xE203
+#define ID_OLE_EDIT_PROPERTIES 0xE204
+#define ID_OLE_VERB_FIRST 0xE210 // range - 16 max
+#ifndef RC_INVOKED // code only
+#define ID_OLE_VERB_LAST 0xE21F
+#endif //!RC_INVOKED
+
+// for print preview dialog bar
+#define AFX_ID_PREVIEW_CLOSE 0xE300
+#define AFX_ID_PREVIEW_NUMPAGE 0xE301 // One/Two Page button
+#define AFX_ID_PREVIEW_NEXT 0xE302
+#define AFX_ID_PREVIEW_PREV 0xE303
+#define AFX_ID_PREVIEW_PRINT 0xE304
+#define AFX_ID_PREVIEW_ZOOMIN 0xE305
+#define AFX_ID_PREVIEW_ZOOMOUT 0xE306
+
+// View commands (same number used as IDW used for control bar)
+#define ID_VIEW_TOOLBAR 0xE800
+#define ID_VIEW_STATUS_BAR 0xE801
+ // -> E8FF reserved for other control bar commands
+
+// RecordForm commands
+#define ID_RECORD_FIRST 0xE900
+#define ID_RECORD_LAST 0xE901
+#define ID_RECORD_NEXT 0xE902
+#define ID_RECORD_PREV 0xE903
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard control IDs
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1) // all static controls
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard string error/warnings
+
+#ifndef RC_INVOKED // code only
+#define AFX_IDS_SCFIRST 0xEF00
+#endif //!RC_INVOKED
+
+#define AFX_IDS_SCSIZE 0xEF00
+#define AFX_IDS_SCMOVE 0xEF01
+#define AFX_IDS_SCMINIMIZE 0xEF02
+#define AFX_IDS_SCMAXIMIZE 0xEF03
+#define AFX_IDS_SCNEXTWINDOW 0xEF04
+#define AFX_IDS_SCPREVWINDOW 0xEF05
+#define AFX_IDS_SCCLOSE 0xEF06
+#define AFX_IDS_SCRESTORE 0xEF12
+#define AFX_IDS_SCTASKLIST 0xEF13
+
+#define AFX_IDS_MDICHILD 0xEF1F
+
+#define AFX_IDS_DESKACCESSORY 0xEFDA
+
+// General strings
+#define AFX_IDS_OPENFILE 0xF000
+#define AFX_IDS_SAVEFILE 0xF001
+#define AFX_IDS_ALLFILTER 0xF002
+#define AFX_IDS_UNTITLED 0xF003
+#define AFX_IDS_SAVEFILECOPY 0xF004
+#define AFX_IDS_PREVIEW_CLOSE 0xF005
+#define AFX_IDS_UNNAMED_FILE 0xF006
+#ifdef _MAC
+#define AFX_IDS_ABOUT 0xF010
+#endif
+#define AFX_IDS_HIDE 0xF011
+
+// MFC Standard Exception Error messages
+#define AFX_IDP_NO_ERROR_AVAILABLE 0xF020
+#define AFX_IDS_NOT_SUPPORTED_EXCEPTION 0xF021
+#define AFX_IDS_RESOURCE_EXCEPTION 0xF022
+#define AFX_IDS_MEMORY_EXCEPTION 0xF023
+#define AFX_IDS_USER_EXCEPTION 0xF024
+
+// Printing and print preview strings
+#define AFX_IDS_PRINTONPORT 0xF040
+#define AFX_IDS_ONEPAGE 0xF041
+#define AFX_IDS_TWOPAGE 0xF042
+#define AFX_IDS_PRINTPAGENUM 0xF043
+#define AFX_IDS_PREVIEWPAGEDESC 0xF044
+#define AFX_IDS_PRINTDEFAULTEXT 0xF045
+#define AFX_IDS_PRINTDEFAULT 0xF046
+#define AFX_IDS_PRINTFILTER 0xF047
+#define AFX_IDS_PRINTCAPTION 0xF048
+#define AFX_IDS_PRINTTOFILE 0xF049
+
+
+// OLE strings
+#define AFX_IDS_OBJECT_MENUITEM 0xF080
+#define AFX_IDS_EDIT_VERB 0xF081
+#define AFX_IDS_ACTIVATE_VERB 0xF082
+#define AFX_IDS_CHANGE_LINK 0xF083
+#define AFX_IDS_AUTO 0xF084
+#define AFX_IDS_MANUAL 0xF085
+#define AFX_IDS_FROZEN 0xF086
+#define AFX_IDS_ALL_FILES 0xF087
+// dynamically changing menu items
+#define AFX_IDS_SAVE_MENU 0xF088
+#define AFX_IDS_UPDATE_MENU 0xF089
+#define AFX_IDS_SAVE_AS_MENU 0xF08A
+#define AFX_IDS_SAVE_COPY_AS_MENU 0xF08B
+#define AFX_IDS_EXIT_MENU 0xF08C
+#define AFX_IDS_UPDATING_ITEMS 0xF08D
+// COlePasteSpecialDialog defines
+#define AFX_IDS_METAFILE_FORMAT 0xF08E
+#define AFX_IDS_DIB_FORMAT 0xF08F
+#define AFX_IDS_BITMAP_FORMAT 0xF090
+#define AFX_IDS_LINKSOURCE_FORMAT 0xF091
+#define AFX_IDS_EMBED_FORMAT 0xF092
+// other OLE utility strings
+#define AFX_IDS_PASTELINKEDTYPE 0xF094
+#define AFX_IDS_UNKNOWNTYPE 0xF095
+#define AFX_IDS_RTF_FORMAT 0xF096
+#define AFX_IDS_TEXT_FORMAT 0xF097
+// OLE datatype format error strings
+#define AFX_IDS_INVALID_CURRENCY 0xF098
+#define AFX_IDS_INVALID_DATETIME 0xF099
+#define AFX_IDS_INVALID_DATETIMESPAN 0xF09A
+
+// General error / prompt strings
+#define AFX_IDP_INVALID_FILENAME 0xF100
+#define AFX_IDP_FAILED_TO_OPEN_DOC 0xF101
+#define AFX_IDP_FAILED_TO_SAVE_DOC 0xF102
+#define AFX_IDP_ASK_TO_SAVE 0xF103
+#define AFX_IDP_FAILED_TO_CREATE_DOC 0xF104
+#define AFX_IDP_FILE_TOO_LARGE 0xF105
+#define AFX_IDP_FAILED_TO_START_PRINT 0xF106
+#define AFX_IDP_FAILED_TO_LAUNCH_HELP 0xF107
+#define AFX_IDP_INTERNAL_FAILURE 0xF108 // general failure
+#define AFX_IDP_COMMAND_FAILURE 0xF109 // command failure
+#define AFX_IDP_FAILED_MEMORY_ALLOC 0xF10A
+#define AFX_IDP_UNREG_DONE 0xF10B
+#define AFX_IDP_UNREG_FAILURE 0xF10C
+
+// DDV parse errors
+#define AFX_IDP_PARSE_INT 0xF110
+#define AFX_IDP_PARSE_REAL 0xF111
+#define AFX_IDP_PARSE_INT_RANGE 0xF112
+#define AFX_IDP_PARSE_REAL_RANGE 0xF113
+#define AFX_IDP_PARSE_STRING_SIZE 0xF114
+#define AFX_IDP_PARSE_RADIO_BUTTON 0xF115
+#define AFX_IDP_PARSE_BYTE 0xF116
+#define AFX_IDP_PARSE_UINT 0xF117
+#define AFX_IDP_PARSE_DATETIME 0xF118
+#define AFX_IDP_PARSE_CURRENCY 0xF119
+
+// CFile/CArchive error strings for user failure
+#define AFX_IDP_FAILED_INVALID_FORMAT 0xF120
+#define AFX_IDP_FAILED_INVALID_PATH 0xF121
+#define AFX_IDP_FAILED_DISK_FULL 0xF122
+#define AFX_IDP_FAILED_ACCESS_READ 0xF123
+#define AFX_IDP_FAILED_ACCESS_WRITE 0xF124
+#define AFX_IDP_FAILED_IO_ERROR_READ 0xF125
+#define AFX_IDP_FAILED_IO_ERROR_WRITE 0xF126
+
+// OLE errors / prompt strings
+#define AFX_IDP_STATIC_OBJECT 0xF180
+#define AFX_IDP_FAILED_TO_CONNECT 0xF181
+#define AFX_IDP_SERVER_BUSY 0xF182
+#define AFX_IDP_BAD_VERB 0xF183
+#define AFX_IDP_FAILED_TO_NOTIFY 0xF185
+#define AFX_IDP_FAILED_TO_LAUNCH 0xF186
+#define AFX_IDP_ASK_TO_UPDATE 0xF187
+#define AFX_IDP_FAILED_TO_UPDATE 0xF188
+#define AFX_IDP_FAILED_TO_REGISTER 0xF189
+#define AFX_IDP_FAILED_TO_AUTO_REGISTER 0xF18A
+#define AFX_IDP_FAILED_TO_CONVERT 0xF18B
+#define AFX_IDP_GET_NOT_SUPPORTED 0xF18C
+#define AFX_IDP_SET_NOT_SUPPORTED 0xF18D
+#define AFX_IDP_ASK_TO_DISCARD 0xF18E
+#define AFX_IDP_FAILED_TO_CREATE 0xF18F
+
+// MAPI errors / prompt strings
+#define AFX_IDP_FAILED_MAPI_LOAD 0xF190
+#define AFX_IDP_INVALID_MAPI_DLL 0xF191
+#define AFX_IDP_FAILED_MAPI_SEND 0xF192
+
+#define AFX_IDP_FILE_NONE 0xF1A0
+#define AFX_IDP_FILE_GENERIC 0xF1A1
+#define AFX_IDP_FILE_NOT_FOUND 0xF1A2
+#define AFX_IDP_FILE_BAD_PATH 0xF1A3
+#define AFX_IDP_FILE_TOO_MANY_OPEN 0xF1A4
+#define AFX_IDP_FILE_ACCESS_DENIED 0xF1A5
+#define AFX_IDP_FILE_INVALID_FILE 0xF1A6
+#define AFX_IDP_FILE_REMOVE_CURRENT 0xF1A7
+#define AFX_IDP_FILE_DIR_FULL 0xF1A8
+#define AFX_IDP_FILE_BAD_SEEK 0xF1A9
+#define AFX_IDP_FILE_HARD_IO 0xF1AA
+#define AFX_IDP_FILE_SHARING 0xF1AB
+#define AFX_IDP_FILE_LOCKING 0xF1AC
+#define AFX_IDP_FILE_DISKFULL 0xF1AD
+#define AFX_IDP_FILE_EOF 0xF1AE
+
+#define AFX_IDP_ARCH_NONE 0xF1B0
+#define AFX_IDP_ARCH_GENERIC 0xF1B1
+#define AFX_IDP_ARCH_READONLY 0xF1B2
+#define AFX_IDP_ARCH_ENDOFFILE 0xF1B3
+#define AFX_IDP_ARCH_WRITEONLY 0xF1B4
+#define AFX_IDP_ARCH_BADINDEX 0xF1B5
+#define AFX_IDP_ARCH_BADCLASS 0xF1B6
+#define AFX_IDP_ARCH_BADSCHEMA 0xF1B7
+
+#define AFX_IDS_OCC_SCALEUNITS_PIXELS 0xF1C0
+
+// 0xf200-0xf20f reserved
+
+// font names and point sizes
+#define AFX_IDS_STATUS_FONT 0xF230
+#define AFX_IDS_TOOLTIP_FONT 0xF231
+#define AFX_IDS_UNICODE_FONT 0xF232
+#define AFX_IDS_MINI_FONT 0xF233
+
+// ODBC Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_SQL_FIRST 0xF280
+#endif //!RC_INVOKED
+#define AFX_IDP_SQL_CONNECT_FAIL 0xF281
+#define AFX_IDP_SQL_RECORDSET_FORWARD_ONLY 0xF282
+#define AFX_IDP_SQL_EMPTY_COLUMN_LIST 0xF283
+#define AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH 0xF284
+#define AFX_IDP_SQL_ILLEGAL_MODE 0xF285
+#define AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED 0xF286
+#define AFX_IDP_SQL_NO_CURRENT_RECORD 0xF287
+#define AFX_IDP_SQL_NO_ROWS_AFFECTED 0xF288
+#define AFX_IDP_SQL_RECORDSET_READONLY 0xF289
+#define AFX_IDP_SQL_SQL_NO_TOTAL 0xF28A
+#define AFX_IDP_SQL_ODBC_LOAD_FAILED 0xF28B
+#define AFX_IDP_SQL_DYNASET_NOT_SUPPORTED 0xF28C
+#define AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED 0xF28D
+#define AFX_IDP_SQL_API_CONFORMANCE 0xF28E
+#define AFX_IDP_SQL_SQL_CONFORMANCE 0xF28F
+#define AFX_IDP_SQL_NO_DATA_FOUND 0xF290
+#define AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0xF291
+#define AFX_IDP_SQL_ODBC_V2_REQUIRED 0xF292
+#define AFX_IDP_SQL_NO_POSITIONED_UPDATES 0xF293
+#define AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED 0xF294
+#define AFX_IDP_SQL_DATA_TRUNCATED 0xF295
+#define AFX_IDP_SQL_ROW_FETCH 0xF296
+#define AFX_IDP_SQL_INCORRECT_ODBC 0xF297
+#define AFX_IDP_SQL_UPDATE_DELETE_FAILED 0xF298
+#define AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0xF299
+#define AFX_IDP_SQL_FIELD_NOT_FOUND 0xF29A
+#define AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED 0xF29B
+#define AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED 0xF29C
+
+// DAO Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_DAO_FIRST 0xF2B0
+#endif //!RC_INVOKED
+#define AFX_IDP_DAO_ENGINE_INITIALIZATION 0xF2B0
+#define AFX_IDP_DAO_DFX_BIND 0xF2B1
+#define AFX_IDP_DAO_OBJECT_NOT_OPEN 0xF2B2
+
+// ICDAORecordset::GetRows Errors
+// These are not placed in DAO Errors collection
+// and must be handled directly by MFC.
+#define AFX_IDP_DAO_ROWTOOSHORT 0xF2B3
+#define AFX_IDP_DAO_BADBINDINFO 0xF2B4
+#define AFX_IDP_DAO_COLUMNUNAVAILABLE 0xF2B5
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings for ISAPI support
+
+#define AFX_IDS_HTTP_TITLE 0xF2D1
+#define AFX_IDS_HTTP_NO_TEXT 0xF2D2
+#define AFX_IDS_HTTP_BAD_REQUEST 0xF2D3
+#define AFX_IDS_HTTP_AUTH_REQUIRED 0xF2D4
+#define AFX_IDS_HTTP_FORBIDDEN 0xF2D5
+#define AFX_IDS_HTTP_NOT_FOUND 0xF2D6
+#define AFX_IDS_HTTP_SERVER_ERROR 0xF2D7
+#define AFX_IDS_HTTP_NOT_IMPLEMENTED 0xF2D8
+
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX implementation - control IDs (AFX_IDC)
+
+// Parts of dialogs
+#define AFX_IDC_LISTBOX 100
+#define AFX_IDC_CHANGE 101
+
+// for print dialog
+#define AFX_IDC_PRINT_DOCNAME 201
+#define AFX_IDC_PRINT_PRINTERNAME 202
+#define AFX_IDC_PRINT_PORTNAME 203
+#define AFX_IDC_PRINT_PAGENUM 204
+
+// Property Sheet control id's (determined with Spy++)
+#define ID_APPLY_NOW 0x3021
+#define ID_WIZBACK 0x3023
+#define ID_WIZNEXT 0x3024
+#define ID_WIZFINISH 0x3025
+#define AFX_IDC_TAB_CONTROL 0x3020
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for standard components
+
+#ifndef RC_INVOKED // code only
+// These are really COMMDLG dialogs, so there usually isn't a resource
+// for them, but these IDs are used as help IDs.
+#define AFX_IDD_FILEOPEN 28676
+#define AFX_IDD_FILESAVE 28677
+#define AFX_IDD_FONT 28678
+#define AFX_IDD_COLOR 28679
+#define AFX_IDD_PRINT 28680
+#define AFX_IDD_PRINTSETUP 28681
+#define AFX_IDD_FIND 28682
+#define AFX_IDD_REPLACE 28683
+#endif //!RC_INVOKED
+
+// Standard dialogs app should leave alone (0x7801->)
+#define AFX_IDD_NEWTYPEDLG 30721
+#define AFX_IDD_PRINTDLG 30722
+#define AFX_IDD_PREVIEW_TOOLBAR 30723
+#ifdef _MAC
+#define AFX_IDD_PREVIEW_SHORTTOOLBAR 30731
+#endif
+
+// Dialogs defined for OLE2UI library
+#define AFX_IDD_INSERTOBJECT 30724
+#define AFX_IDD_CHANGEICON 30725
+#define AFX_IDD_CONVERT 30726
+#define AFX_IDD_PASTESPECIAL 30727
+#define AFX_IDD_EDITLINKS 30728
+#define AFX_IDD_FILEBROWSE 30729
+#define AFX_IDD_BUSY 30730
+
+#define AFX_IDD_OBJECTPROPERTIES 30732
+#define AFX_IDD_CHANGESOURCE 30733
+
+// Standard cursors (0x7901->)
+ // AFX_IDC = Cursor resources
+#define AFX_IDC_CONTEXTHELP 30977 // context sensitive help
+#define AFX_IDC_MAGNIFY 30978 // print preview zoom
+#define AFX_IDC_SMALLARROWS 30979 // splitter
+#define AFX_IDC_HSPLITBAR 30980 // splitter
+#define AFX_IDC_VSPLITBAR 30981 // splitter
+#define AFX_IDC_NODROPCRSR 30982 // No Drop Cursor
+#define AFX_IDC_TRACKNWSE 30983 // tracker
+#define AFX_IDC_TRACKNESW 30984 // tracker
+#define AFX_IDC_TRACKNS 30985 // tracker
+#define AFX_IDC_TRACKWE 30986 // tracker
+#define AFX_IDC_TRACK4WAY 30987 // tracker
+#define AFX_IDC_MOVE4WAY 30988 // resize bar (server only)
+
+// Mini frame window bitmap ID
+#define AFX_IDB_MINIFRAME_MENU 30994
+
+// CheckListBox checks bitmap ID
+#define AFX_IDB_CHECKLISTBOX_NT 30995
+#define AFX_IDB_CHECKLISTBOX_95 30996
+
+// AFX standard accelerator resources
+#define AFX_IDR_PREVIEW_ACCEL 30997
+
+// AFX standard ICON IDs (for MFC V1 apps) (0x7A01->)
+#define AFX_IDI_STD_MDIFRAME 31233
+#define AFX_IDI_STD_FRAME 31234
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX OLE control implementation - control IDs (AFX_IDC)
+
+// Font property page
+#define AFX_IDC_FONTPROP 1000
+#define AFX_IDC_FONTNAMES 1001
+#define AFX_IDC_FONTSTYLES 1002
+#define AFX_IDC_FONTSIZES 1003
+#define AFX_IDC_STRIKEOUT 1004
+#define AFX_IDC_UNDERLINE 1005
+#define AFX_IDC_SAMPLEBOX 1006
+
+// Color property page
+#define AFX_IDC_COLOR_BLACK 1100
+#define AFX_IDC_COLOR_WHITE 1101
+#define AFX_IDC_COLOR_RED 1102
+#define AFX_IDC_COLOR_GREEN 1103
+#define AFX_IDC_COLOR_BLUE 1104
+#define AFX_IDC_COLOR_YELLOW 1105
+#define AFX_IDC_COLOR_MAGENTA 1106
+#define AFX_IDC_COLOR_CYAN 1107
+#define AFX_IDC_COLOR_GRAY 1108
+#define AFX_IDC_COLOR_LIGHTGRAY 1109
+#define AFX_IDC_COLOR_DARKRED 1110
+#define AFX_IDC_COLOR_DARKGREEN 1111
+#define AFX_IDC_COLOR_DARKBLUE 1112
+#define AFX_IDC_COLOR_LIGHTBROWN 1113
+#define AFX_IDC_COLOR_DARKMAGENTA 1114
+#define AFX_IDC_COLOR_DARKCYAN 1115
+#define AFX_IDC_COLORPROP 1116
+#define AFX_IDC_SYSTEMCOLORS 1117
+
+// Picture porperty page
+#define AFX_IDC_PROPNAME 1201
+#define AFX_IDC_PICTURE 1202
+#define AFX_IDC_BROWSE 1203
+#define AFX_IDC_CLEAR 1204
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for OLE control standard components
+
+// Standard propery page dialogs app should leave alone (0x7E01->)
+#define AFX_IDD_PROPPAGE_COLOR 32257
+#define AFX_IDD_PROPPAGE_FONT 32258
+#define AFX_IDD_PROPPAGE_PICTURE 32259
+
+#define AFX_IDB_TRUETYPE 32384
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard OLE control strings
+
+// OLE Control page strings
+#define AFX_IDS_PROPPAGE_UNKNOWN 0xFE01
+#define AFX_IDS_COLOR_DESKTOP 0xFE04
+#define AFX_IDS_COLOR_APPWORKSPACE 0xFE05
+#define AFX_IDS_COLOR_WNDBACKGND 0xFE06
+#define AFX_IDS_COLOR_WNDTEXT 0xFE07
+#define AFX_IDS_COLOR_MENUBAR 0xFE08
+#define AFX_IDS_COLOR_MENUTEXT 0xFE09
+#define AFX_IDS_COLOR_ACTIVEBAR 0xFE0A
+#define AFX_IDS_COLOR_INACTIVEBAR 0xFE0B
+#define AFX_IDS_COLOR_ACTIVETEXT 0xFE0C
+#define AFX_IDS_COLOR_INACTIVETEXT 0xFE0D
+#define AFX_IDS_COLOR_ACTIVEBORDER 0xFE0E
+#define AFX_IDS_COLOR_INACTIVEBORDER 0xFE0F
+#define AFX_IDS_COLOR_WNDFRAME 0xFE10
+#define AFX_IDS_COLOR_SCROLLBARS 0xFE11
+#define AFX_IDS_COLOR_BTNFACE 0xFE12
+#define AFX_IDS_COLOR_BTNSHADOW 0xFE13
+#define AFX_IDS_COLOR_BTNTEXT 0xFE14
+#define AFX_IDS_COLOR_BTNHIGHLIGHT 0xFE15
+#define AFX_IDS_COLOR_DISABLEDTEXT 0xFE16
+#define AFX_IDS_COLOR_HIGHLIGHT 0xFE17
+#define AFX_IDS_COLOR_HIGHLIGHTTEXT 0xFE18
+#define AFX_IDS_REGULAR 0xFE19
+#define AFX_IDS_BOLD 0xFE1A
+#define AFX_IDS_ITALIC 0xFE1B
+#define AFX_IDS_BOLDITALIC 0xFE1C
+#define AFX_IDS_SAMPLETEXT 0xFE1D
+#define AFX_IDS_DISPLAYSTRING_FONT 0xFE1E
+#define AFX_IDS_DISPLAYSTRING_COLOR 0xFE1F
+#define AFX_IDS_DISPLAYSTRING_PICTURE 0xFE20
+#define AFX_IDS_PICTUREFILTER 0xFE21
+#define AFX_IDS_PICTYPE_UNKNOWN 0xFE22
+#define AFX_IDS_PICTYPE_NONE 0xFE23
+#define AFX_IDS_PICTYPE_BITMAP 0xFE24
+#define AFX_IDS_PICTYPE_METAFILE 0xFE25
+#define AFX_IDS_PICTYPE_ICON 0xFE26
+#define AFX_IDS_COLOR_PPG 0xFE28
+#define AFX_IDS_COLOR_PPG_CAPTION 0xFE29
+#define AFX_IDS_FONT_PPG 0xFE2A
+#define AFX_IDS_FONT_PPG_CAPTION 0xFE2B
+#define AFX_IDS_PICTURE_PPG 0xFE2C
+#define AFX_IDS_PICTURE_PPG_CAPTION 0xFE2D
+#define AFX_IDS_PICTUREBROWSETITLE 0xFE30
+#define AFX_IDS_BORDERSTYLE_0 0xFE31
+#define AFX_IDS_BORDERSTYLE_1 0xFE32
+
+// OLE Control verb names
+#define AFX_IDS_VERB_EDIT 0xFE40
+#define AFX_IDS_VERB_PROPERTIES 0xFE41
+
+// OLE Control internal error messages
+#define AFX_IDP_PICTURECANTOPEN 0xFE83
+#define AFX_IDP_PICTURECANTLOAD 0xFE84
+#define AFX_IDP_PICTURETOOLARGE 0xFE85
+#define AFX_IDP_PICTUREREADFAILED 0xFE86
+
+// Standard OLE Control error strings
+#define AFX_IDP_E_ILLEGALFUNCTIONCALL 0xFEA0
+#define AFX_IDP_E_OVERFLOW 0xFEA1
+#define AFX_IDP_E_OUTOFMEMORY 0xFEA2
+#define AFX_IDP_E_DIVISIONBYZERO 0xFEA3
+#define AFX_IDP_E_OUTOFSTRINGSPACE 0xFEA4
+#define AFX_IDP_E_OUTOFSTACKSPACE 0xFEA5
+#define AFX_IDP_E_BADFILENAMEORNUMBER 0xFEA6
+#define AFX_IDP_E_FILENOTFOUND 0xFEA7
+#define AFX_IDP_E_BADFILEMODE 0xFEA8
+#define AFX_IDP_E_FILEALREADYOPEN 0xFEA9
+#define AFX_IDP_E_DEVICEIOERROR 0xFEAA
+#define AFX_IDP_E_FILEALREADYEXISTS 0xFEAB
+#define AFX_IDP_E_BADRECORDLENGTH 0xFEAC
+#define AFX_IDP_E_DISKFULL 0xFEAD
+#define AFX_IDP_E_BADRECORDNUMBER 0xFEAE
+#define AFX_IDP_E_BADFILENAME 0xFEAF
+#define AFX_IDP_E_TOOMANYFILES 0xFEB0
+#define AFX_IDP_E_DEVICEUNAVAILABLE 0xFEB1
+#define AFX_IDP_E_PERMISSIONDENIED 0xFEB2
+#define AFX_IDP_E_DISKNOTREADY 0xFEB3
+#define AFX_IDP_E_PATHFILEACCESSERROR 0xFEB4
+#define AFX_IDP_E_PATHNOTFOUND 0xFEB5
+#define AFX_IDP_E_INVALIDPATTERNSTRING 0xFEB6
+#define AFX_IDP_E_INVALIDUSEOFNULL 0xFEB7
+#define AFX_IDP_E_INVALIDFILEFORMAT 0xFEB8
+#define AFX_IDP_E_INVALIDPROPERTYVALUE 0xFEB9
+#define AFX_IDP_E_INVALIDPROPERTYARRAYINDEX 0xFEBA
+#define AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME 0xFEBB
+#define AFX_IDP_E_SETNOTSUPPORTED 0xFEBC
+#define AFX_IDP_E_NEEDPROPERTYARRAYINDEX 0xFEBD
+#define AFX_IDP_E_SETNOTPERMITTED 0xFEBE
+#define AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME 0xFEBF
+#define AFX_IDP_E_GETNOTSUPPORTED 0xFEC0
+#define AFX_IDP_E_PROPERTYNOTFOUND 0xFEC1
+#define AFX_IDP_E_INVALIDCLIPBOARDFORMAT 0xFEC2
+#define AFX_IDP_E_INVALIDPICTURE 0xFEC3
+#define AFX_IDP_E_PRINTERERROR 0xFEC4
+#define AFX_IDP_E_CANTSAVEFILETOTEMP 0xFEC5
+#define AFX_IDP_E_SEARCHTEXTNOTFOUND 0xFEC6
+#define AFX_IDP_E_REPLACEMENTSTOOLONG 0xFEC7
+
+
+
+
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+
+#endif //__AFXRES_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxres.rc b/public/sdk/inc/mfc42/afxres.rc
new file mode 100644
index 000000000..53c6f97d4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Open"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Save As"
+ AFX_IDS_ALLFILTER, "All Files (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "Save document as:"
+ AFX_IDS_ALLFILTER, "All Files"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "About %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Out of memory."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"An unsupported operation was attempted."
+ AFX_IDS_RESOURCE_EXCEPTION, "A required resource was unavailable."
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Invalid filename."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Failed to open document."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Failed to save document."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Save changes to %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Save changes to the %1 document \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Failed to create empty document."
+ AFX_IDP_FILE_TOO_LARGE, "The file is too large to open."
+ AFX_IDP_FAILED_TO_START_PRINT, "Could not start print job."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Failed to launch help."
+ AFX_IDP_INTERNAL_FAILURE, "Internal application error."
+ AFX_IDP_COMMAND_FAILURE, "Command failed."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Insufficient memory to perform operation."
+ AFX_IDP_GET_NOT_SUPPORTED, "Unable to read write-only property."
+ AFX_IDP_SET_NOT_SUPPORTED, "Unable to write read-only property."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Unexpected file format."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nCannot find this file.\nPlease verify that the correct path and file name are given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk drive is full."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Cannot find the file \042%1.\042 Please verify that the correct file name is given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk is full."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Unable to read from %1, it is opened by someone else."
+ AFX_IDP_FAILED_ACCESS_WRITE "Unable to write to %1, it is read-only or opened by someone else."
+ AFX_IDP_FAILED_IO_ERROR_READ "An unexpected error occurred while reading %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "An unexpected error occurred while writing %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Please enter an integer."
+ AFX_IDP_PARSE_REAL, "Please enter a number."
+ AFX_IDP_PARSE_INT_RANGE, "Please enter an integer between %1 and %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Please enter a number between %1 and %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Please enter no more than %1 characters."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Please select a button."
+ AFX_IDP_PARSE_BYTE, "Please enter an integer between 0 and 255."
+ AFX_IDP_PARSE_UINT, "Please enter a positive integer."
+ AFX_IDP_PARSE_DATETIME, "Please enter a date and/or time."
+ AFX_IDP_PARSE_CURRENCY, "Please enter a currency."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Linked %s"
+ AFX_IDS_UNKNOWNTYPE "Unknown Type"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nUnable to register document.\nThe document may already be open."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Unable to register document \042%1.\042 The document may already be open."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No error message is available."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "No error occurred."
+ AFX_IDP_FILE_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 was not found."
+ AFX_IDP_FILE_BAD_PATH "%1 contains an invalid path."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 could not be opened because there are too many open files."
+ AFX_IDP_FILE_ACCESS_DENIED "Access to %1 was denied."
+ AFX_IDP_FILE_INVALID_FILE "An invalid file handle was associated with %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1 could not be removed because it is the current directory."
+ AFX_IDP_FILE_DIR_FULL "%1 could not be created because the directory is full."
+ AFX_IDP_FILE_BAD_SEEK "Seek failed on %1"
+ AFX_IDP_FILE_HARD_IO "A hardware I/O error was reported while accessing %1."
+ AFX_IDP_FILE_SHARING "A sharing violation occurred while accessing %1."
+ AFX_IDP_FILE_LOCKING "A locking violation occurred while accessing %1."
+ AFX_IDP_FILE_DISKFULL "Disk full while accessing %1."
+ AFX_IDP_FILE_EOF "An attempt was made to access %1 past its end."
+ AFX_IDS_UNNAMED_FILE "an unnamed file"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "No error occurred."
+ AFX_IDP_ARCH_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_ARCH_READONLY "An attempt was made to write to the reading %1."
+ AFX_IDP_ARCH_ENDOFFILE "An attempt was made to access %1 past its end."
+ AFX_IDP_ARCH_WRITEONLY "An attempt was made to read from the writing %1."
+ AFX_IDP_ARCH_BADINDEX "%1 has a bad format."
+ AFX_IDP_ARCH_BADCLASS "%1 contained an unexpected object."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contains an incorrect schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Unable to load mail system support."
+ AFX_IDP_INVALID_MAPI_DLL "Mail system DLL is invalid."
+ AFX_IDP_FAILED_MAPI_SEND "Send Mail failed to send message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "New"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&New ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Help",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxrich.h b/public/sdk/inc/mfc42/afxrich.h
new file mode 100644
index 000000000..3a4c28445
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxrich.h
@@ -0,0 +1,399 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRICH_H__
+#define __AFXRICH_H__
+
+#ifdef _AFX_NO_RICHEDIT_SUPPORT
+ #error Windows RichEdit classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+#ifndef _RICHEDIT_
+ #include <richedit.h>
+#endif
+#ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+#endif
+#ifndef __AFXCMN_H__
+ #include <afxcmn.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CRichEditView;// rich text editor view
+
+ //CDocument
+ //COleDocument
+ class CRichEditDoc;
+ //CDocItem
+ //COleClientItem
+ class CRichEditCntrItem;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditView
+
+class _AFX_RICHEDIT_STATE; // private to implementation
+
+class CRichEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CRichEditView)
+
+// Construction
+public:
+ CRichEditView();
+
+// Attributes
+public:
+ enum WordWrapType
+ {
+ WrapNone = 0,
+ WrapToWindow = 1,
+ WrapToTargetDevice = 2
+ };
+ int m_nWordWrap;
+ int m_nBulletIndent;
+
+ void SetPaperSize(CSize sizePaper);
+ CSize GetPaperSize() const;
+ void SetMargins(const CRect& rectMargin);
+ CRect GetMargins() const;
+ int GetPrintWidth() const;
+ CRect GetPrintRect() const;
+ CRect GetPageRect() const;
+
+ //formatting
+ CHARFORMAT& GetCharFormatSelection();
+ PARAFORMAT& GetParaFormatSelection();
+ void SetCharFormat(CHARFORMAT cf);
+ void SetParaFormat(PARAFORMAT& pf);
+ CRichEditCntrItem* GetSelectedItem() const;
+ CRichEditCntrItem* GetInPlaceActiveItem() const;
+
+ // CEdit control access
+ CRichEditCtrl& GetRichEditCtrl() const;
+ CRichEditDoc* GetDocument() const;
+
+ // other attributes
+ long GetTextLength() const;
+ static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
+ BOOL CanPaste() const;
+
+// Operations
+public:
+ void AdjustDialogPosition(CDialog* pDlg);
+ HRESULT InsertItem(CRichEditCntrItem* pItem);
+ void InsertFileAsObject(LPCTSTR lpszFileName);
+ BOOL FindText(LPCTSTR lpszFind, BOOL bCase = TRUE, BOOL bWord = TRUE);
+ BOOL FindTextSimple(LPCTSTR lpszFind, BOOL bCase = TRUE,
+ BOOL bWord = TRUE);
+ long PrintInsideRect(CDC* pDC, RECT& rectLayout, long nIndexStart,
+ long nIndexStop, BOOL bOutput);
+ long PrintPage(CDC* pDC, long nIndexStart, long nIndexStop);
+ void DoPaste(COleDataObject& dataobj, CLIPFORMAT cf,
+ HMETAFILEPICT hMetaPict);
+
+// Helpers
+ void OnCharEffect(DWORD dwMask, DWORD dwEffect);
+ void OnUpdateCharEffect(CCmdUI* pCmdUI, DWORD dwMask, DWORD dwEffect) ;
+ void OnParaAlign(WORD wAlign);
+ void OnUpdateParaAlign(CCmdUI* pCmdUI, WORD wAlign);
+
+// Overrideables
+protected:
+ virtual BOOL IsSelected(const CObject* pDocItem) const;
+ virtual void OnInitialUpdate();
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase, BOOL bWord);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ BOOL bWord, LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase, BOOL bWord);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+ virtual void OnPrinterChanged(const CDC& dcPrinter);
+ virtual void WrapChanged();
+
+// Advanced
+ virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
+ virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );
+ virtual HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD dwReco,
+ LPDATAOBJECT lpRichDataObj, LPDATAOBJECT* lplpdataobj);
+ virtual HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD,
+ BOOL, HGLOBAL);
+
+// Implementation
+public:
+ LPRICHEDITOLE m_lpRichEditOle;
+ CDC m_dcTarget;
+ long m_lInitialSearchPos;
+ UINT m_nPasteType;
+ BOOL m_bFirstSearch;
+
+ void TextNotFound(LPCTSTR lpszFind);
+ BOOL FindText(_AFX_RICHEDIT_STATE* pEditState);
+ BOOL FindTextSimple(_AFX_RICHEDIT_STATE* pEditState);
+ long FindAndSelect(DWORD dwFlags, FINDTEXTEX& ft);
+ void Stream(CArchive& ar, BOOL bSelection);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ HRESULT ShowContainerUI(BOOL b);
+ static DWORD CALLBACK EditStreamCallBack(DWORD dwCookie,
+ LPBYTE pbBuff, LONG cb, LONG *pcb);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA ULONG lMaxSize; // maximum number of characters supported
+
+protected:
+ CRect m_rectMargin;
+ CSize m_sizePaper;
+ CDWordArray m_aPageStart; // array of starting pages
+ PARAFORMAT m_paraformat;
+ CHARFORMAT m_charformat;
+ BOOL m_bSyncCharFormat;
+ BOOL m_bSyncParaFormat;
+
+ // construction
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // printing support
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase, BOOL bWord);
+
+ // special overrides for implementation
+
+ //{{AFX_MSG(CRichEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg void OnDestroy();
+ afx_msg void OnEditProperties();
+ afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
+ afx_msg void OnInsertObject();
+ afx_msg void OnCancelEditCntr();
+ afx_msg void OnCharBold();
+ afx_msg void OnUpdateCharBold(CCmdUI* pCmdUI);
+ afx_msg void OnCharItalic();
+ afx_msg void OnUpdateCharItalic(CCmdUI* pCmdUI);
+ afx_msg void OnCharUnderline();
+ afx_msg void OnUpdateCharUnderline(CCmdUI* pCmdUI);
+ afx_msg void OnParaCenter();
+ afx_msg void OnUpdateParaCenter(CCmdUI* pCmdUI);
+ afx_msg void OnParaLeft();
+ afx_msg void OnUpdateParaLeft(CCmdUI* pCmdUI);
+ afx_msg void OnParaRight();
+ afx_msg void OnUpdateParaRight(CCmdUI* pCmdUI);
+ afx_msg void OnBullet();
+ afx_msg void OnUpdateBullet(CCmdUI* pCmdUI);
+ afx_msg void OnFormatFont();
+ afx_msg void OnColorPick(COLORREF cr);
+ afx_msg void OnColorDefault();
+ afx_msg void OnEditPasteSpecial();
+ afx_msg void OnUpdateEditPasteSpecial(CCmdUI* pCmdUI);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ //}}AFX_MSG
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM, LPARAM lParam);
+ afx_msg void OnSelChange(NMHDR* pNMHDR, LRESULT* pResult);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Map
+public:
+ BEGIN_INTERFACE_PART(RichEditOleCallback, IRichEditOleCallback)
+ INIT_INTERFACE_PART(CRichEditView, RichEditOleCallback)
+ STDMETHOD(GetNewStorage) (LPSTORAGE*);
+ STDMETHOD(GetInPlaceContext) (LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*,
+ LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(ShowContainerUI) (BOOL);
+ STDMETHOD(QueryInsertObject) (LPCLSID, LPSTORAGE, LONG);
+ STDMETHOD(DeleteObject) (LPOLEOBJECT);
+ STDMETHOD(QueryAcceptData) (LPDATAOBJECT, CLIPFORMAT*, DWORD,BOOL, HGLOBAL);
+ STDMETHOD(ContextSensitiveHelp) (BOOL);
+ STDMETHOD(GetClipboardData) (CHARRANGE*, DWORD, LPDATAOBJECT*);
+ STDMETHOD(GetDragDropEffect) (BOOL, DWORD, LPDWORD);
+ STDMETHOD(GetContextMenu) (WORD, LPOLEOBJECT, CHARRANGE*, HMENU*);
+ END_INTERFACE_PART(RichEditOleCallback)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditDoc
+
+class CRichEditDoc : public COleServerDoc
+{
+protected: // create from serialization only
+ CRichEditDoc();
+ DECLARE_DYNAMIC(CRichEditDoc)
+
+// Attributes
+public:
+ BOOL m_bRTF; // TRUE when formatted, FALSE when plain text
+
+ virtual CRichEditCntrItem* CreateClientItem(REOBJECT* preo = NULL) const = 0;
+
+ virtual CRichEditView* GetView() const;
+ int GetStreamFormat() const;
+
+// Implementation
+protected:
+ virtual COleServerItem* OnGetEmbeddedItem();
+ void MarkItemsClear() const;
+ void DeleteUnmarkedItems() const;
+ void UpdateObjectCache();
+public:
+ BOOL m_bUpdateObjectCache;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU);
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ virtual void DeleteContents();
+ virtual POSITION GetStartPosition() const;
+ virtual void PreCloseFrame(CFrameWnd* pFrameWnd);
+ virtual void UpdateModifiedFlag();
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ CRichEditCntrItem* LookupItem(LPOLEOBJECT lpobj) const;
+ void InvalidateObjectCache();
+ virtual void Serialize(CArchive& ar); // overridden for document i/o
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCntrItem
+
+class CRichEditCntrItem : public COleClientItem
+{
+ DECLARE_SERIAL(CRichEditCntrItem)
+
+// Constructors
+public:
+ CRichEditCntrItem(REOBJECT* preo = NULL, CRichEditDoc* pContainer = NULL);
+ // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIALIZE.
+ // IMPLEMENT_SERIALIZE requires the class have a constructor with
+ // zero arguments. Normally, OLE items are constructed with a
+ // non-NULL document pointer.
+
+// Operations
+ void SyncToRichEditObject(REOBJECT& reo);
+
+// Implementation
+public:
+ ~CRichEditCntrItem();
+ LPOLECLIENTSITE m_lpClientSite;
+ BOOL m_bMark;
+ BOOL m_bLock; // lock it during creation to avoid deletion
+ void Mark(BOOL b);
+ BOOL IsMarked();
+ CRichEditDoc* GetDocument();
+ CRichEditView* GetActiveView();
+ HRESULT ShowContainerUI(BOOL b);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual LPOLECLIENTSITE GetClientSite();
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld,
+ REFCLSID clsidNew);
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+ virtual void OnDeactivateUI(BOOL bUndoable);
+ virtual BOOL CanActivate();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXRICH_INLINE inline
+#include <afxrich.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXRICH_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxrich.inl b/public/sdk/inc/mfc42/afxrich.inl
new file mode 100644
index 000000000..6cde683f3
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxrich.inl
@@ -0,0 +1,56 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXRICH.H
+
+#ifdef _AFXRICH_INLINE
+
+// CRichEditView
+_AFXRICH_INLINE CRichEditCtrl& CRichEditView::GetRichEditCtrl() const
+ { return *(CRichEditCtrl*)this; }
+int _AFXRICH_INLINE CRichEditView::GetPrintWidth() const
+ { return m_sizePaper.cx - m_rectMargin.left - m_rectMargin.right;}
+CRect _AFXRICH_INLINE CRichEditView::GetPrintRect() const
+ { return CRect(m_rectMargin.left, m_rectMargin.top, m_sizePaper.cx - m_rectMargin.right, m_sizePaper.cy - m_rectMargin.bottom); }
+CRect _AFXRICH_INLINE CRichEditView::GetPageRect() const
+ { return CRect(CPoint(0,0), m_sizePaper); }
+void _AFXRICH_INLINE CRichEditView::SetPaperSize(CSize sizePaper)
+ { m_sizePaper = sizePaper; }
+CSize _AFXRICH_INLINE CRichEditView::GetPaperSize() const
+ { return m_sizePaper; }
+void _AFXRICH_INLINE CRichEditView::SetMargins(const CRect& rectMargin)
+ { m_rectMargin = rectMargin; }
+CRect _AFXRICH_INLINE CRichEditView::GetMargins() const
+ { return m_rectMargin; }
+
+_AFXRICH_INLINE long CRichEditView::GetTextLength() const
+ { return GetRichEditCtrl().GetTextLength(); }
+_AFXRICH_INLINE CRichEditDoc* CRichEditView::GetDocument() const
+{
+ ASSERT(m_pDocument != NULL);
+ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRichEditDoc)));
+ return (CRichEditDoc*)m_pDocument;
+}
+_AFXRICH_INLINE int CRichEditDoc::GetStreamFormat() const
+ { return m_bRTF ? SF_RTF : SF_TEXT; }
+_AFXRICH_INLINE void CRichEditDoc::InvalidateObjectCache()
+ { m_bUpdateObjectCache = TRUE; }
+
+_AFXRICH_INLINE void CRichEditCntrItem::Mark(BOOL b)
+ { m_bMark = b; }
+_AFXRICH_INLINE BOOL CRichEditCntrItem::IsMarked()
+ { return m_bMark||m_bLock; }
+_AFXRICH_INLINE CRichEditDoc* CRichEditCntrItem::GetDocument()
+ { return (CRichEditDoc*)COleClientItem::GetDocument(); }
+_AFXRICH_INLINE CRichEditView* CRichEditCntrItem::GetActiveView()
+ { return (CRichEditView*)COleClientItem::GetActiveView(); }
+#endif //_AFXRICH_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxsock.h b/public/sdk/inc/mfc42/afxsock.h
new file mode 100644
index 000000000..ced4fb851
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxsock.h
@@ -0,0 +1,365 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSOCK_H__
+#define __AFXSOCK_H__
+
+#ifdef _AFX_NO_SOCKET_SUPPORT
+ #error Windows Sockets classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _WINSOCKAPI_
+ #include <winsock.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcn42d.lib")
+ #else
+ #pragma comment(lib, "mfcn42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "wsock32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG)
+ #pragma comment(lib, "mfcn42pd.lib")
+ #pragma comment(lib, "wslmd.lib")
+ #else
+ #pragma comment(lib, "mfcn42p.lib")
+ #pragma comment(lib, "wslm.lib")
+ #endif
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXSOCK - MFC support for Windows Sockets
+
+// Classes declared in this file
+
+ // CObject
+ class CAsyncSocket; // Async Socket implementation and
+ // base class for Synchronous Socket
+ class CSocket; // Synchronous Socket
+
+ // CFile
+ class CSocketFile; // Used with CSocket and CArchive for
+ // streaming objects on sockets.
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_NET_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketWnd -- internal use only
+// Implementation for sockets notification callbacks.
+// Future versions of MFC may or may not include this exact class.
+
+class CSocketWnd : public CWnd
+{
+// Construction
+public:
+ CSocketWnd();
+
+protected:
+ //{{AFX_MSG(CSocketWnd)
+ LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
+ LRESULT OnSocketDead(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncSocket
+
+class CAsyncSocket : public CObject
+{
+ DECLARE_DYNAMIC(CAsyncSocket);
+private:
+ CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
+ void operator=(const CAsyncSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CAsyncSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ SOCKET m_hSocket;
+
+ operator SOCKET() const;
+ BOOL Attach(SOCKET hSocket, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+ SOCKET Detach();
+
+ BOOL GetPeerName(CString& rPeerAddress, UINT& rPeerPort);
+ BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL GetSockName(CString& rSocketAddress, UINT& rSocketPort);
+ BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL SetSockOpt(int nOptionName, const void* lpOptionValue,
+ int nOptionLen, int nLevel = SOL_SOCKET);
+ BOOL GetSockOpt(int nOptionName, void* lpOptionValue,
+ int* lpOptionLen, int nLevel = SOL_SOCKET);
+
+ static CAsyncSocket* PASCAL FromHandle(SOCKET hSocket);
+ static int PASCAL GetLastError();
+
+// Operations
+public:
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+
+ BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL);
+ BOOL Bind (const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ virtual void Close();
+
+ BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort);
+ BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ BOOL IOCtl(long lCommand, DWORD* lpArgument);
+
+ BOOL Listen(int nConnectionBacklog=5);
+
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0);
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0);
+
+ enum { receives = 0, sends = 1, both = 2 };
+ BOOL ShutDown(int nHow = sends);
+
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendTo(const void* lpBuf, int nBufLen,
+ UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0);
+ int SendTo(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0);
+
+ BOOL AsyncSelect(long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+
+// Overridable callbacks
+protected:
+ virtual void OnReceive(int nErrorCode);
+ virtual void OnSend(int nErrorCode);
+ virtual void OnOutOfBandData(int nErrorCode);
+ virtual void OnAccept(int nErrorCode);
+ virtual void OnConnect(int nErrorCode);
+ virtual void OnClose(int nErrorCode);
+
+// Implementation
+public:
+ virtual ~CAsyncSocket();
+
+ static CAsyncSocket* PASCAL LookupHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL AttachHandle(SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead = FALSE);
+ static void PASCAL DetachHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL KillSocket(SOCKET hSocket, CAsyncSocket* pSocket);
+ static void PASCAL DoCallBack(WPARAM wParam, LPARAM lParam);
+
+ BOOL Socket(int nSocketType=SOCK_STREAM, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ int nProtocolType = 0, int nAddressFormat = PF_INET);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ friend class CSocketWnd;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocket
+
+class CSocket : public CAsyncSocket
+{
+ DECLARE_DYNAMIC(CSocket);
+private:
+ CSocket(const CSocket& rSrc); // no implementation
+ void operator=(const CSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ BOOL IsBlocking();
+ static CSocket* PASCAL FromHandle(SOCKET hSocket);
+ BOOL Attach(SOCKET hSocket);
+
+// Operations
+public:
+ void CancelBlockingCall();
+
+// Overridable callbacks
+protected:
+ virtual BOOL OnMessagePending();
+
+// Implementation
+public:
+ int m_nTimeOut;
+
+ virtual ~CSocket();
+
+ static int PASCAL ProcessAuxQueue();
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+ virtual void Close();
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendChunk(const void* lpBuf, int nBufLen, int nFlags);
+
+protected:
+ BOOL* m_pbBlocking;
+ int m_nConnectError;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+
+ static void PASCAL AuxQueueAdd(UINT message, WPARAM wParam, LPARAM lParam);
+
+ virtual BOOL PumpMessages(UINT uStopFlag);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketFile
+
+class CSocketFile : public CFile
+{
+ DECLARE_DYNAMIC(CSocketFile)
+public:
+//Constructors
+ CSocketFile(CSocket* pSocket, BOOL bArchiveCompatible = TRUE);
+
+// Implementation
+public:
+ CSocket* m_pSocket;
+ BOOL m_bArchiveCompatible;
+
+ virtual ~CSocketFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Close();
+
+// Unsupported APIs
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
+ virtual CFile* Duplicate() const;
+ virtual DWORD GetPosition() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Flush();
+ virtual void Abort();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions
+
+BOOL AFXAPI AfxSocketInit(WSADATA* lpwsaData = NULL);
+void AFXAPI AfxSocketTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXSOCK_INLINE inline
+#include <afxsock.inl>
+#undef _AFXSOCK_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXSOCK_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxsock.inl b/public/sdk/inc/mfc42/afxsock.inl
new file mode 100644
index 000000000..c668904f0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxsock.inl
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXSOCK.H
+
+#ifdef _AFXSOCK_INLINE
+
+_AFXSOCK_INLINE CAsyncSocket::operator SOCKET() const
+ { return m_hSocket; }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getpeername(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getsockname(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel)
+ { return (SOCKET_ERROR != setsockopt(m_hSocket, nLevel, nOptionName, (LPCSTR)lpOptionValue, nOptionLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel)
+ { return (SOCKET_ERROR != getsockopt(m_hSocket, nLevel, nOptionName, (LPSTR)lpOptionValue, lpOptionLen)); }
+_AFXSOCK_INLINE CAsyncSocket* PASCAL CAsyncSocket::FromHandle(SOCKET hSocket)
+ { return CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE int PASCAL CAsyncSocket::GetLastError()
+ { return WSAGetLastError(); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return (SOCKET_ERROR != bind(m_hSocket, lpSockAddr, nSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return ConnectHelper(lpSockAddr, nSockAddrLen); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::IOCtl(long lCommand, DWORD* lpArgument)
+ { return (SOCKET_ERROR != ioctlsocket(m_hSocket, lCommand, lpArgument)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Listen(int nConnectionBacklog)
+ { return (SOCKET_ERROR != listen(m_hSocket, nConnectionBacklog)); }
+_AFXSOCK_INLINE int CAsyncSocket::ReceiveFrom(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags)
+ { return ReceiveFromHelper(lpBuf, nBufLen, lpSockAddr, lpSockAddrLen, nFlags); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::ShutDown(int nHow)
+ { return (SOCKET_ERROR != shutdown(m_hSocket,nHow)); }
+_AFXSOCK_INLINE int CAsyncSocket::SendTo(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags)
+ { return SendToHelper(lpBuf, nBufLen, lpSockAddr, nSockAddrLen, nFlags); }
+
+_AFXSOCK_INLINE BOOL CSocket::Create(UINT nSocketPort, int nSocketType, LPCTSTR lpszSocketAddress)
+ { return CAsyncSocket::Create(nSocketPort, nSocketType, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, lpszSocketAddress); }
+_AFXSOCK_INLINE BOOL CSocket::IsBlocking()
+ { return (m_pbBlocking != NULL); }
+_AFXSOCK_INLINE CSocket* PASCAL CSocket::FromHandle(SOCKET hSocket)
+ { return (CSocket*)CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE BOOL CSocket::Attach(SOCKET hSocket)
+ { return CAsyncSocket::Attach(hSocket); }
+
+#endif //_AFXSOCK_INLINE
diff --git a/public/sdk/inc/mfc42/afxstat_.h b/public/sdk/inc/mfc42/afxstat_.h
new file mode 100644
index 000000000..1b0dc5ab0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxstat_.h
@@ -0,0 +1,363 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSTATE_H__
+#define __AFXSTATE_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef __AFXTLS_H__
+ #include <afxtls_.h>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_DEBUG_STATE
+
+#ifdef _DEBUG
+
+class _AFX_DEBUG_STATE : public CNoTrackObject
+{
+public:
+ _AFX_DEBUG_STATE();
+ virtual ~_AFX_DEBUG_STATE();
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_DEBUG_STATE, afxDebugState)
+
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_WIN_STATE
+
+#undef AFX_DATA
+#define AFX_DATA
+
+class _AFX_WIN_STATE : public CNoTrackObject
+{
+public:
+ _AFX_WIN_STATE();
+ virtual ~_AFX_WIN_STATE();
+
+ // gray dialog support
+ HBRUSH m_hDlgBkBrush; // dialog and message box background brush
+ COLORREF m_crDlgTextClr;
+#ifdef _MAC
+ COLORREF m_crDlgBkClr;
+#endif
+
+ // printing abort
+ BOOL m_bUserAbort;
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_WIN_STATE, _afxWinState)
+
+/////////////////////////////////////////////////////////////////////////////
+// Type library cache - AFX_INTERNAL
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct ITypeInfo;
+typedef ITypeInfo* LPTYPEINFO;
+
+struct ITypeLib;
+typedef ITypeLib* LPTYPELIB;
+
+typedef struct _GUID GUID;
+#ifndef _REFCLSID_DEFINED
+#define REFGUID const GUID &
+#endif
+
+class CTypeLibCache
+{
+public:
+ CTypeLibCache() : m_cRef(0), m_lcid((LCID)-1), m_ptlib(NULL), m_ptinfo(NULL) {}
+ void Lock();
+ void Unlock();
+ BOOL Lookup(LCID lcid, LPTYPELIB* pptlib);
+ void Cache(LCID lcid, LPTYPELIB ptlib);
+ BOOL LookupTypeInfo(LCID lcid, REFGUID guid, LPTYPEINFO* pptinfo);
+ void CacheTypeInfo(LCID lcid, REFGUID guid, LPTYPEINFO ptinfo);
+ const GUID* m_pTypeLibID;
+
+protected:
+ LCID m_lcid;
+ LPTYPELIB m_ptlib;
+ GUID m_guidInfo;
+ LPTYPEINFO m_ptinfo;
+ long m_cRef;
+};
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_MODULE_STATE : portion of state that is pushed/popped
+
+// forward references required for AFX_MODULE_THREAD_STATE definition
+class CWinThread;
+class CHandleMap;
+class CFrameWnd;
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+// AFX_MODULE_THREAD_STATE (local to thread *and* module)
+class AFX_MODULE_THREAD_STATE : public CNoTrackObject
+{
+public:
+ AFX_MODULE_THREAD_STATE();
+ virtual ~AFX_MODULE_THREAD_STATE();
+
+ // current CWinThread pointer
+ CWinThread* m_pCurrentWinThread;
+
+ // list of CFrameWnd objects for thread
+ CTypedSimpleList<CFrameWnd*> m_frameList;
+
+ // temporary/permanent map state
+ DWORD m_nTempMapLock; // if not 0, temp maps locked
+ CHandleMap* m_pmapHWND;
+ CHandleMap* m_pmapHMENU;
+ CHandleMap* m_pmapHDC;
+ CHandleMap* m_pmapHGDIOBJ;
+ CHandleMap* m_pmapHIMAGELIST;
+
+ // thread-local MFC new handler (separate from C-runtime)
+ _PNH m_pfnNewHandler;
+
+#ifndef _AFX_NO_SOCKET_SUPPORT
+ // WinSock specific thread state
+ HWND m_hSocketWindow;
+ CMapPtrToPtr m_mapSocketHandle;
+ CMapPtrToPtr m_mapDeadSockets;
+ CPtrList m_listSocketNotifications;
+#endif
+};
+
+// forward references required for AFX_MODULE_STATE definition
+class CWinApp;
+class COleObjectFactory;
+
+class CWnd;
+
+#ifdef _AFXDLL
+class CDynLinkLibrary;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager;
+class COleControlLock;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+class _AFX_DAO_STATE;
+#endif
+
+// AFX_MODULE_STATE (global data for a module)
+class AFX_MODULE_STATE : public CNoTrackObject
+{
+public:
+#ifdef _AFXDLL
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion);
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion,
+ BOOL bSystem);
+#else
+ AFX_MODULE_STATE(BOOL bDLL);
+#endif
+ ~AFX_MODULE_STATE();
+
+ CWinApp* m_pCurrentWinApp;
+ HINSTANCE m_hCurrentInstanceHandle;
+ HINSTANCE m_hCurrentResourceHandle;
+ LPCTSTR m_lpszCurrentAppName;
+ BYTE m_bDLL; // TRUE if module is a DLL, FALSE if it is an EXE
+ BYTE m_bSystem; // TRUE if module is a "system" module, FALSE if not
+ BYTE m_bReserved[2]; // padding
+
+ short m_fRegisteredClasses; // flags for registered window classes
+
+ // runtime class data
+#ifdef _AFXDLL
+ CRuntimeClass* m_pClassInit;
+#endif
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+
+ // OLE object factories
+#ifndef _AFX_NO_OLE_SUPPORT
+#ifdef _AFXDLL
+ COleObjectFactory* m_pFactoryInit;
+#endif
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ // number of locked OLE objects
+ long m_nObjectCount;
+ BOOL m_bUserCtrl;
+
+ // AfxRegisterClass and AfxRegisterWndClass data
+ TCHAR m_szUnregisterList[4096];
+#ifdef _AFXDLL
+ WNDPROC m_pfnAfxWndProc;
+ DWORD m_dwVersion; // version that module linked against
+#endif
+
+ // variables related to a given process in a module
+ // (used to be AFX_MODULE_PROCESS_STATE)
+#ifdef _AFX_OLD_EXCEPTIONS
+ // exceptions
+ AFX_TERM_PROC m_pfnTerminate;
+#endif
+ void (PASCAL *m_pfnFilterToolTipMessage)(MSG*, CWnd*);
+
+#ifdef _AFXDLL
+ // CDynLinkLibrary objects (for resource chain)
+ CTypedSimpleList<CDynLinkLibrary*> m_libraryList;
+
+ // special case for MFCxxLOC.DLL (localized MFC resources)
+ HINSTANCE m_appLangDLL;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // OLE control container manager
+ COccManager* m_pOccManager;
+ // locked OLE controls
+ CTypedSimpleList<COleControlLock*> m_lockList;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+ _AFX_DAO_STATE* m_pDaoState;
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // Type library caches
+ CTypeLibCache m_typeLibCache;
+ CMapPtrToPtr* m_pTypeLibCacheMap;
+#endif
+
+ // define thread local portions of module state
+ THREAD_LOCAL(AFX_MODULE_THREAD_STATE, m_thread)
+};
+
+AFX_MODULE_STATE* AFXAPI AfxGetAppModuleState();
+#ifdef _AFXDLL
+AFX_MODULE_STATE* AFXAPI AfxSetModuleState(AFX_MODULE_STATE* pNewState);
+#endif
+AFX_MODULE_STATE* AFXAPI AfxGetModuleState();
+AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState();
+
+AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState();
+
+#ifdef _AFXDLL
+#define _AFX_CMDTARGET_GETSTATE() (m_pModuleState)
+#else
+#define _AFX_CMDTARGET_GETSTATE() (AfxGetModuleState())
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// macros & classes to manage pushing/popping the module state
+
+#ifdef _AFXDLL
+struct AFX_MAINTAIN_STATE
+{
+ AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pModuleState);
+ ~AFX_MAINTAIN_STATE();
+
+protected:
+ AFX_MODULE_STATE* m_pPrevModuleState;
+};
+#define AFX_MANAGE_STATE(p) AFX_MAINTAIN_STATE _ctlState(p);
+#else // _AFXDLL
+#define AFX_MANAGE_STATE(p)
+#endif //!_AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Thread global state
+
+// forward references required for _AFX_THREAD_STATE definition
+class CView;
+class CToolTipCtrl;
+class CControlBar;
+
+class _AFX_THREAD_STATE : public CNoTrackObject
+{
+public:
+ _AFX_THREAD_STATE();
+ virtual ~_AFX_THREAD_STATE();
+
+ // override for m_pModuleState in _AFX_APP_STATE
+ AFX_MODULE_STATE* m_pModuleState;
+ AFX_MODULE_STATE* m_pPrevModuleState;
+
+ // memory safety pool for temp maps
+ void* m_pSafetyPoolBuffer; // current buffer
+
+ // thread local exception context
+ AFX_EXCEPTION_CONTEXT m_exceptionContext;
+
+ // CWnd create, gray dialog hook, and other hook data
+ CWnd* m_pWndInit;
+ CWnd* m_pAlternateWndInit; // special case commdlg hooking
+ DWORD m_dwPropStyle;
+ DWORD m_dwPropExStyle;
+ HWND m_hWndInit;
+ BOOL m_bDlgCreate;
+ HHOOK m_hHookOldCbtFilter;
+ HHOOK m_hHookOldMsgFilter;
+
+ // other CWnd modal data
+ MSG m_lastSentMsg; // see CWnd::WindowProc
+ HWND m_hTrackingWindow; // see CWnd::TrackPopupMenu
+ HMENU m_hTrackingMenu;
+ TCHAR m_szTempClassName[96]; // see AfxRegisterWndClass
+ HWND m_hLockoutNotifyWindow; // see CWnd::OnCommand
+ BOOL m_bInMsgFilter;
+
+ // other framework modal data
+ CView* m_pRoutingView; // see CCmdTarget::GetRoutingView
+ CFrameWnd* m_pRoutingFrame; // see CCmdTarget::GetRoutingFrame
+
+ // MFC/DB thread-local data
+ BOOL m_bWaitForDataSource;
+
+ // common controls thread state
+ CToolTipCtrl* m_pToolTip;
+ CWnd* m_pLastHit; // last window to own tooltip
+ int m_nLastHit; // last hittest code
+ TOOLINFO m_lastInfo; // last TOOLINFO structure
+ int m_nLastStatus; // last flyby status message
+ CControlBar* m_pLastStatus; // last flyby status control bar
+
+ // OLE control thread-local data
+ CWnd* m_pWndPark; // "parking space" window
+ long m_nCtrlRef; // reference count on parking window
+ BOOL m_bNeedTerm; // TRUE if OleUninitialize needs to be called
+};
+
+EXTERN_THREAD_LOCAL(_AFX_THREAD_STATE, _afxThreadState)
+
+_AFX_THREAD_STATE* AFXAPI AfxGetThreadState();
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXSTATE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxtempl.h b/public/sdk/inc/mfc42/afxtempl.h
new file mode 100644
index 000000000..cb8469d0a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxtempl.h
@@ -0,0 +1,1648 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTEMPL_H__
+#define __AFXTEMPL_H__
+
+#ifndef __AFXPLEX_H__
+ #include <afxplex_.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef _DEBUG
+static char _szAfxTempl[] = "afxtempl.h";
+#undef THIS_FILE
+#define THIS_FILE _szAfxTempl
+#endif
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4114)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers (can be overridden)
+
+#ifdef new
+#undef new
+#define _REDEF_NEW
+#endif
+
+#ifndef _INC_NEW
+ #include <new.h>
+#endif
+
+template<class TYPE>
+inline void AFXAPI ConstructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // first do bit-wise zero initialization
+ memset((void*)pElements, 0, nCount * sizeof(TYPE));
+
+ // then call the constructor(s)
+ for (; nCount--; pElements++)
+ ::new((void*)pElements) TYPE;
+}
+
+template<class TYPE>
+inline void AFXAPI DestructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // call the destructor(s)
+ for (; nCount--; pElements++)
+ pElements->~TYPE();
+}
+
+template<class TYPE>
+inline void AFXAPI CopyElements(TYPE* pDest, const TYPE* pSrc, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pDest, nCount * sizeof(TYPE)));
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pSrc, nCount * sizeof(TYPE)));
+
+ // default is element-copy using assignment
+ while (nCount--)
+ *pDest++ = *pSrc;
+}
+
+template<class TYPE>
+void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // default is bit-wise read/write
+ if (ar.IsStoring())
+ ar.Write((void*)pElements, nCount * sizeof(TYPE));
+ else
+ ar.Read((void*)pElements, nCount * sizeof(TYPE));
+}
+
+#ifdef _DEBUG
+template<class TYPE>
+void AFXAPI DumpElements(CDumpContext& dc, const TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+ &dc; // not used
+ pElements; // not used
+ nCount; // not used
+
+ // default does nothing
+}
+#endif
+
+template<class TYPE, class ARG_TYPE>
+BOOL AFXAPI CompareElements(const TYPE* pElement1, const ARG_TYPE* pElement2)
+{
+ ASSERT(AfxIsValidAddress(pElement1, sizeof(TYPE)));
+ ASSERT(AfxIsValidAddress(pElement2, sizeof(ARG_TYPE)));
+
+ return *pElement1 == *pElement2;
+}
+
+template<class ARG_KEY>
+inline UINT AFXAPI HashKey(ARG_KEY key)
+{
+ // default identity hash - works for most primitive values
+ return ((UINT)(void*)(DWORD)key) >> 4;
+}
+
+// special versions for CString
+void AFXAPI ConstructElements(CString* pElements, int nCount);
+void AFXAPI DestructElements(CString* pElements, int nCount);
+void AFXAPI CopyElements(CString* pDest, const CString* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, CString* pElements, int nCount);
+UINT AFXAPI HashKey(LPCTSTR key);
+
+// forward declarations
+class COleVariant;
+struct tagVARIANT;
+
+// special versions for COleVariant
+void AFXAPI ConstructElements(COleVariant* pElements, int nCount);
+void AFXAPI DestructElements(COleVariant* pElements, int nCount);
+void AFXAPI CopyElements(COleVariant* pDest, const COleVariant* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, COleVariant* pElements, int nCount);
+void AFXAPI DumpElements(CDumpContext& dc, COleVariant* pElements, int nCount);
+UINT AFXAPI HashKey(const struct tagVARIANT& var);
+
+#define new DEBUG_NEW
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CArray : public CObject
+{
+public:
+// Construction
+ CArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ TYPE GetAt(int nIndex) const;
+ void SetAt(int nIndex, ARG_TYPE newElement);
+ TYPE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const TYPE* GetData() const;
+ TYPE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, ARG_TYPE newElement);
+ int Add(ARG_TYPE newElement);
+ int Append(const CArray& src);
+ void Copy(const CArray& src);
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const;
+ TYPE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, ARG_TYPE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CArray* pNewArray);
+
+// Implementation
+protected:
+ TYPE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CArray();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetSize() const
+ { return m_nSize; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetUpperBound() const
+ { return m_nSize-1; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::RemoveAll()
+ { SetSize(0, -1); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::SetAt(int nIndex, ARG_TYPE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline const TYPE* CArray<TYPE, ARG_TYPE>::GetData() const
+ { return (const TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE* CArray<TYPE, ARG_TYPE>::GetData()
+ { return (TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> out-of-line functions
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::CArray()
+{
+ m_pData = NULL;
+ m_nSize = m_nMaxSize = m_nGrowBy = 0;
+}
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::~CArray()
+{
+ ASSERT_VALID(this);
+
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetSize(int nNewSize, int nGrowBy)
+{
+ ASSERT_VALID(this);
+ ASSERT(nNewSize >= 0);
+
+ if (nGrowBy != -1)
+ m_nGrowBy = nGrowBy; // set new size
+
+ if (nNewSize == 0)
+ {
+ // shrink to nothing
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ m_pData = NULL;
+ }
+ m_nSize = m_nMaxSize = 0;
+ }
+ else if (m_pData == NULL)
+ {
+ // create one with exact size
+#ifdef SIZE_T_MAX
+ ASSERT(nNewSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ m_pData = (TYPE*) new BYTE[nNewSize * sizeof(TYPE)];
+ ConstructElements(m_pData, nNewSize);
+ m_nSize = m_nMaxSize = nNewSize;
+ }
+ else if (nNewSize <= m_nMaxSize)
+ {
+ // it fits
+ if (nNewSize > m_nSize)
+ {
+ // initialize the new elements
+ ConstructElements(&m_pData[m_nSize], nNewSize-m_nSize);
+ }
+ else if (m_nSize > nNewSize)
+ {
+ // destroy the old elements
+ DestructElements(&m_pData[nNewSize], m_nSize-nNewSize);
+ }
+ m_nSize = nNewSize;
+ }
+ else
+ {
+ // otherwise, grow array
+ int nGrowBy = m_nGrowBy;
+ if (nGrowBy == 0)
+ {
+ // heuristically determine growth when nGrowBy == 0
+ // (this avoids heap fragmentation in many situations)
+ nGrowBy = m_nSize / 8;
+ nGrowBy = (nGrowBy < 4) ? 4 : ((nGrowBy > 1024) ? 1024 : nGrowBy);
+ }
+ int nNewMax;
+ if (nNewSize < m_nMaxSize + nGrowBy)
+ nNewMax = m_nMaxSize + nGrowBy; // granularity
+ else
+ nNewMax = nNewSize; // no slush
+
+ ASSERT(nNewMax >= m_nMaxSize); // no wrap around
+#ifdef SIZE_T_MAX
+ ASSERT(nNewMax <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = (TYPE*) new BYTE[nNewMax * sizeof(TYPE)];
+
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+
+ // construct remaining elements
+ ASSERT(nNewSize > m_nSize);
+ ConstructElements(&pNewData[m_nSize], nNewSize-m_nSize);
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nSize = nNewSize;
+ m_nMaxSize = nNewMax;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+int CArray<TYPE, ARG_TYPE>::Append(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + src.m_nSize);
+ CopyElements(m_pData + nOldSize, src.m_pData, src.m_nSize);
+ return nOldSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Copy(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ SetSize(src.m_nSize);
+ CopyElements(m_pData, src.m_pData, src.m_nSize);
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::FreeExtra()
+{
+ ASSERT_VALID(this);
+
+ if (m_nSize != m_nMaxSize)
+ {
+ // shrink to desired size
+#ifdef SIZE_T_MAX
+ ASSERT(m_nSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = NULL;
+ if (m_nSize != 0)
+ {
+ pNewData = (TYPE*) new BYTE[m_nSize * sizeof(TYPE)];
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+ }
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nMaxSize = m_nSize;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetAtGrow(int nIndex, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nSize)
+ SetSize(nIndex+1, -1);
+ m_pData[nIndex] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nIndex, ARG_TYPE newElement, int nCount /*=1*/)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0); // will expand to meet need
+ ASSERT(nCount > 0); // zero or negative size not allowed
+
+ if (nIndex >= m_nSize)
+ {
+ // adding after the end of the array
+ SetSize(nIndex + nCount, -1); // grow so nIndex is valid
+ }
+ else
+ {
+ // inserting in the middle of the array
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + nCount, -1); // grow it to new size
+ // destroy intial data before copying over it
+ DestructElements(&m_pData[nOldSize], nCount);
+ // shift old data up to fill gap
+ memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
+ (nOldSize-nIndex) * sizeof(TYPE));
+
+ // re-init slots we copied from
+ ConstructElements(&m_pData[nIndex], nCount);
+ }
+
+ // insert new value in the gap
+ ASSERT(nIndex + nCount <= m_nSize);
+ while (nCount--)
+ m_pData[nIndex++] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::RemoveAt(int nIndex, int nCount)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+ ASSERT(nCount >= 0);
+ ASSERT(nIndex + nCount <= m_nSize);
+
+ // just remove a range
+ int nMoveCount = m_nSize - (nIndex + nCount);
+ DestructElements(&m_pData[nIndex], nCount);
+ if (nMoveCount)
+ memcpy(&m_pData[nIndex], &m_pData[nIndex + nCount],
+ nMoveCount * sizeof(TYPE));
+ m_nSize -= nCount;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nStartIndex, CArray* pNewArray)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewArray != NULL);
+ ASSERT_VALID(pNewArray);
+ ASSERT(nStartIndex >= 0);
+
+ if (pNewArray->GetSize() > 0)
+ {
+ InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize());
+ for (int i = 0; i < pNewArray->GetSize(); i++)
+ SetAt(nStartIndex + i, pNewArray->GetAt(i));
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nSize);
+ }
+ else
+ {
+ DWORD nOldSize = ar.ReadCount();
+ SetSize(nOldSize, -1);
+ }
+ SerializeElements(ar, m_pData, m_nSize);
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nSize << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ dc << "\n";
+ DumpElements(dc, m_pData, m_nSize);
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_pData == NULL)
+ {
+ ASSERT(m_nSize == 0);
+ ASSERT(m_nMaxSize == 0);
+ }
+ else
+ {
+ ASSERT(m_nSize >= 0);
+ ASSERT(m_nMaxSize >= 0);
+ ASSERT(m_nSize <= m_nMaxSize);
+ ASSERT(AfxIsValidAddress(m_pData, m_nMaxSize * sizeof(TYPE)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CList : public CObject
+{
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ TYPE data;
+ };
+public:
+// Construction
+ CList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ TYPE& GetHead();
+ TYPE GetHead() const;
+ TYPE& GetTail();
+ TYPE GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list !
+ TYPE RemoveHead();
+ TYPE RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(ARG_TYPE newElement);
+ POSITION AddTail(ARG_TYPE newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CList* pNewList);
+ void AddTail(CList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ TYPE& GetNext(POSITION& rPosition); // return *Position++
+ TYPE GetNext(POSITION& rPosition) const; // return *Position++
+ TYPE& GetPrev(POSITION& rPosition); // return *Position--
+ TYPE GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position);
+ TYPE GetAt(POSITION position) const;
+ void SetAt(POSITION pos, ARG_TYPE newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, ARG_TYPE newElement);
+ POSITION InsertAfter(POSITION position, ARG_TYPE newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(ARG_TYPE searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD, return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CList();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CList<TYPE, ARG_TYPE>::GetCount() const
+ { return m_nCount; }
+template<class TYPE, class ARG_TYPE>
+inline BOOL CList<TYPE, ARG_TYPE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline void CList<TYPE, ARG_TYPE>::SetAt(POSITION pos, ARG_TYPE newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CList(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ // destroy elements
+ CNode* pNode;
+ for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ DestructElements(&pNode->data, 1);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::~CList()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Node helpers
+//
+// Implementation note: CNode's are stored in CPlex blocks and
+// chained together. Free blocks are maintained in a singly linked list
+// using the 'pNext' member of CNode with 'm_pNodeFree' as the head.
+// Used blocks are maintained in a doubly linked list using both 'pNext'
+// and 'pPrev' as links and 'm_pNodeHead' and 'm_pNodeTail'
+// as the head/tail.
+//
+// We never free a CPlex block unless the List is destroyed or RemoveAll()
+// is used - so the total number of CPlex blocks may grow large depending
+// on the maximum past size of the list.
+//
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CNode*
+CList<TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
+{
+ if (m_pNodeFree == NULL)
+ {
+ // add another block
+ CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
+ sizeof(CNode));
+
+ // chain them into free list
+ CNode* pNode = (CNode*) pNewBlock->data();
+ // free in reverse order to make it easier to debug
+ pNode += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
+ {
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ }
+ }
+ ASSERT(m_pNodeFree != NULL); // we must have something
+
+ CList::CNode* pNode = m_pNodeFree;
+ m_pNodeFree = m_pNodeFree->pNext;
+ pNode->pPrev = pPrev;
+ pNode->pNext = pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+
+ ConstructElements(&pNode->data, 1);
+ return pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::FreeNode(CList::CNode* pNode)
+{
+ DestructElements(&pNode->data, 1);
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddHead(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(NULL, m_pNodeHead);
+ pNewNode->data = newElement;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = pNewNode;
+ else
+ m_pNodeTail = pNewNode;
+ m_pNodeHead = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddTail(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(m_pNodeTail, NULL);
+ pNewNode->data = newElement;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = pNewNode;
+ else
+ m_pNodeHead = pNewNode;
+ m_pNodeTail = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddHead(CList* pNewList)
+{
+ ASSERT_VALID(this);
+
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements to head (maintain order)
+ POSITION pos = pNewList->GetTailPosition();
+ while (pos != NULL)
+ AddHead(pNewList->GetPrev(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddTail(CList* pNewList)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements
+ POSITION pos = pNewList->GetHeadPosition();
+ while (pos != NULL)
+ AddTail(pNewList->GetNext(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveHead()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeHead != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeHead;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeHead = pOldNode->pNext;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = NULL;
+ else
+ m_pNodeTail = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveTail()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeTail != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeTail;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeTail = pOldNode->pPrev;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = NULL;
+ else
+ m_pNodeHead = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertBefore(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddHead(newElement); // insert before nothing -> head of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ CNode* pNewNode = NewNode(pOldNode->pPrev, pOldNode);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pPrev != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeHead);
+ m_pNodeHead = pNewNode;
+ }
+ pOldNode->pPrev = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertAfter(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddTail(newElement); // insert after nothing -> tail of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+ CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pNext != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeTail);
+ m_pNodeTail = pNewNode;
+ }
+ pOldNode->pNext = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAt(POSITION position)
+{
+ ASSERT_VALID(this);
+
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+
+ // remove pOldNode from list
+ if (pOldNode == m_pNodeHead)
+ {
+ m_pNodeHead = pOldNode->pNext;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pOldNode->pNext;
+ }
+ if (pOldNode == m_pNodeTail)
+ {
+ m_pNodeTail = pOldNode->pPrev;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pOldNode->pPrev;
+ }
+ FreeNode(pOldNode);
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::FindIndex(int nIndex) const
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nCount)
+ return NULL; // went too far
+
+ CNode* pNode = m_pNodeHead;
+ while (nIndex--)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext;
+ }
+ return (POSITION) pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::Find(ARG_TYPE searchValue, POSITION startAfter) const
+{
+ ASSERT_VALID(this);
+
+ CNode* pNode = (CNode*) startAfter;
+ if (pNode == NULL)
+ {
+ pNode = m_pNodeHead; // start at head
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext; // start after the one specified
+ }
+
+ for (; pNode != NULL; pNode = pNode->pNext)
+ if (CompareElements(&pNode->data, &searchValue))
+ return (POSITION)pNode;
+ return NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ for (CNode* pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ SerializeElements(ar, &pNode->data, 1);
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ TYPE newData;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newData, 1);
+ AddTail(newData);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ POSITION pos = GetHeadPosition();
+ while (pos != NULL)
+ {
+ dc << "\n";
+ DumpElements(dc, &((CList*)this)->GetNext(pos), 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_nCount == 0)
+ {
+ // empty list
+ ASSERT(m_pNodeHead == NULL);
+ ASSERT(m_pNodeTail == NULL);
+ }
+ else
+ {
+ // non-empty list
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+class CMap : public CObject
+{
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ KEY key;
+ VALUE value;
+ };
+public:
+// Construction
+ CMap(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(ARG_KEY key, VALUE& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ VALUE& operator[](ARG_KEY key);
+
+ // add a new (key, value) pair
+ void SetAt(ARG_KEY key, ARG_VALUE newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(ARG_KEY key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, KEY& rKey, VALUE& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(ARG_KEY, UINT&) const;
+
+public:
+ ~CMap();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> inline functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline int CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetCount() const
+ { return m_nCount; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::SetAt(ARG_KEY key, ARG_VALUE newValue)
+ { (*this)[key] = newValue; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline POSITION CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline UINT CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> out-of-line functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CMap(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_pHashTable = NULL;
+ m_nHashTableSize = 17; // default size
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::InitHashTable(
+ UINT nHashSize, BOOL bAllocNow)
+//
+// Used to force allocation of a hash table or to override the default
+// hash table size of (which is fairly small)
+{
+ ASSERT_VALID(this);
+ ASSERT(m_nCount == 0);
+ ASSERT(nHashSize > 0);
+
+ if (m_pHashTable != NULL)
+ {
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+ }
+
+ if (bAllocNow)
+ {
+ m_pHashTable = new CAssoc* [nHashSize];
+ memset(m_pHashTable, 0, sizeof(CAssoc*) * nHashSize);
+ }
+ m_nHashTableSize = nHashSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable != NULL)
+ {
+ // destroy elements (values and keys)
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ }
+ }
+ }
+
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::~CMap()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::NewAssoc()
+{
+ if (m_pFreeList == NULL)
+ {
+ // add another block
+ CPlex* newBlock = CPlex::Create(m_pBlocks, m_nBlockSize, sizeof(CMap::CAssoc));
+ // chain them into free list
+ CMap::CAssoc* pAssoc = (CMap::CAssoc*) newBlock->data();
+ // free in reverse order to make it easier to debug
+ pAssoc += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pAssoc--)
+ {
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ }
+ }
+ ASSERT(m_pFreeList != NULL); // we must have something
+
+ CMap::CAssoc* pAssoc = m_pFreeList;
+ m_pFreeList = m_pFreeList->pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+ ConstructElements(&pAssoc->key, 1);
+ ConstructElements(&pAssoc->value, 1); // special construct values
+ return pAssoc;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::FreeAssoc(CMap::CAssoc* pAssoc)
+{
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetAssocAt(ARG_KEY key, UINT& nHash) const
+// find association (or return NULL)
+{
+ nHash = HashKey(key) % m_nHashTableSize;
+
+ if (m_pHashTable == NULL)
+ return NULL;
+
+ // see if it exists
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ return pAssoc;
+ }
+ return NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Lookup(ARG_KEY key, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc = GetAssocAt(key, nHash);
+ if (pAssoc == NULL)
+ return FALSE; // not in map
+
+ rValue = pAssoc->value;
+ return TRUE;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+VALUE& CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::operator[](ARG_KEY key)
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc;
+ if ((pAssoc = GetAssocAt(key, nHash)) == NULL)
+ {
+ if (m_pHashTable == NULL)
+ InitHashTable(m_nHashTableSize);
+
+ // it doesn't exist, add a new Association
+ pAssoc = NewAssoc();
+ pAssoc->nHashValue = nHash;
+ pAssoc->key = key;
+ // 'pAssoc->value' is a constructed object, nothing more
+
+ // put into hash table
+ pAssoc->pNext = m_pHashTable[nHash];
+ m_pHashTable[nHash] = pAssoc;
+ }
+ return pAssoc->value; // return new reference
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveKey(ARG_KEY key)
+// remove key - return TRUE if removed
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable == NULL)
+ return FALSE; // nothing in the table
+
+ CAssoc** ppAssocPrev;
+ ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize];
+
+ CAssoc* pAssoc;
+ for (pAssoc = *ppAssocPrev; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ {
+ // remove it
+ *ppAssocPrev = pAssoc->pNext; // remove from list
+ FreeAssoc(pAssoc);
+ return TRUE;
+ }
+ ppAssocPrev = &pAssoc->pNext;
+ }
+ return FALSE; // not found
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetNextAssoc(POSITION& rNextPosition,
+ KEY& rKey, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pHashTable != NULL); // never call on empty map
+
+ CAssoc* pAssocRet = (CAssoc*)rNextPosition;
+ ASSERT(pAssocRet != NULL);
+
+ if (pAssocRet == (CAssoc*) BEFORE_START_POSITION)
+ {
+ // find the first association
+ for (UINT nBucket = 0; nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocRet = m_pHashTable[nBucket]) != NULL)
+ break;
+ ASSERT(pAssocRet != NULL); // must find something
+ }
+
+ // find next association
+ ASSERT(AfxIsValidAddress(pAssocRet, sizeof(CAssoc)));
+ CAssoc* pAssocNext;
+ if ((pAssocNext = pAssocRet->pNext) == NULL)
+ {
+ // go to next bucket
+ for (UINT nBucket = pAssocRet->nHashValue + 1;
+ nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocNext = m_pHashTable[nBucket]) != NULL)
+ break;
+ }
+
+ rNextPosition = (POSITION) pAssocNext;
+
+ // fill in return data
+ rKey = pAssocRet->key;
+ rValue = pAssocRet->value;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ if (m_nCount == 0)
+ return; // nothing more to do
+
+ ASSERT(m_pHashTable != NULL);
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ SerializeElements(ar, &pAssoc->key, 1);
+ SerializeElements(ar, &pAssoc->value, 1);
+ }
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ KEY newKey;
+ VALUE newValue;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newKey, 1);
+ SerializeElements(ar, &newValue, 1);
+ SetAt(newKey, newValue);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ // Dump in format "[key] -> value"
+ KEY key;
+ VALUE val;
+
+ POSITION pos = GetStartPosition();
+ while (pos != NULL)
+ {
+ GetNextAssoc(pos, key, val);
+ dc << "\n\t[";
+ DumpElements(dc, &key, 1);
+ dc << "] = ";
+ DumpElements(dc, &val, 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ ASSERT(m_nHashTableSize > 0);
+ ASSERT(m_nCount == 0 || m_pHashTable != NULL);
+ // non-empty map should have hash table
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrArray<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrArray : public BASE_CLASS
+{
+public:
+ // Accessing elements
+ TYPE GetAt(int nIndex) const
+ { return (TYPE)BASE_CLASS::GetAt(nIndex); }
+ TYPE& ElementAt(int nIndex)
+ { return (TYPE&)BASE_CLASS::ElementAt(nIndex); }
+ void SetAt(int nIndex, TYPE ptr)
+ { BASE_CLASS::SetAt(nIndex, ptr); }
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, TYPE newElement)
+ { BASE_CLASS::SetAtGrow(nIndex, newElement); }
+ int Add(TYPE newElement)
+ { return BASE_CLASS::Add(newElement); }
+ int Append(const CTypedPtrArray<BASE_CLASS, TYPE>& src)
+ { return BASE_CLASS::Append(src); }
+ void Copy(const CTypedPtrArray<BASE_CLASS, TYPE>& src)
+ { BASE_CLASS::Copy(src); }
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, TYPE newElement, int nCount = 1)
+ { BASE_CLASS::InsertAt(nIndex, newElement, nCount); }
+ void InsertAt(int nStartIndex, CTypedPtrArray<BASE_CLASS, TYPE>* pNewArray)
+ { BASE_CLASS::InsertAt(nStartIndex, pNewArray); }
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const
+ { return (TYPE)BASE_CLASS::operator[](nIndex); }
+ TYPE& operator[](int nIndex)
+ { return (TYPE&)BASE_CLASS::operator[](nIndex); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrList<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrList : public BASE_CLASS
+{
+public:
+// Construction
+ CTypedPtrList(int nBlockSize = 10)
+ : BASE_CLASS(nBlockSize) { }
+
+ // peek at head or tail
+ TYPE& GetHead()
+ { return (TYPE&)BASE_CLASS::GetHead(); }
+ TYPE GetHead() const
+ { return (TYPE)BASE_CLASS::GetHead(); }
+ TYPE& GetTail()
+ { return (TYPE&)BASE_CLASS::GetTail(); }
+ TYPE GetTail() const
+ { return (TYPE)BASE_CLASS::GetTail(); }
+
+ // get head or tail (and remove it) - don't call on empty list!
+ TYPE RemoveHead()
+ { return (TYPE)BASE_CLASS::RemoveHead(); }
+ TYPE RemoveTail()
+ { return (TYPE)BASE_CLASS::RemoveTail(); }
+
+ // add before head or after tail
+ POSITION AddHead(TYPE newElement)
+ { return BASE_CLASS::AddHead(newElement); }
+ POSITION AddTail(TYPE newElement)
+ { return BASE_CLASS::AddTail(newElement); }
+
+ // add another list of elements before head or after tail
+ void AddHead(CTypedPtrList<BASE_CLASS, TYPE>* pNewList)
+ { BASE_CLASS::AddHead(pNewList); }
+ void AddTail(CTypedPtrList<BASE_CLASS, TYPE>* pNewList)
+ { BASE_CLASS::AddTail(pNewList); }
+
+ // iteration
+ TYPE& GetNext(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetNext(rPosition); }
+ TYPE GetNext(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetNext(rPosition); }
+ TYPE& GetPrev(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetPrev(rPosition); }
+ TYPE GetPrev(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetPrev(rPosition); }
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position)
+ { return (TYPE&)BASE_CLASS::GetAt(position); }
+ TYPE GetAt(POSITION position) const
+ { return (TYPE)BASE_CLASS::GetAt(position); }
+ void SetAt(POSITION pos, TYPE newElement)
+ { BASE_CLASS::SetAt(pos, newElement); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrMap<BASE_CLASS, KEY, VALUE>
+
+template<class BASE_CLASS, class KEY, class VALUE>
+class CTypedPtrMap : public BASE_CLASS
+{
+public:
+
+// Construction
+ CTypedPtrMap(int nBlockSize = 10)
+ : BASE_CLASS(nBlockSize) { }
+
+ // Lookup
+ BOOL Lookup(BASE_CLASS::BASE_ARG_KEY key, VALUE& rValue) const
+ { return BASE_CLASS::Lookup(key, (BASE_CLASS::BASE_VALUE&)rValue); }
+
+ // Lookup and add if not there
+ VALUE& operator[](BASE_CLASS::BASE_ARG_KEY key)
+ { return (VALUE&)BASE_CLASS::operator[](key); }
+
+ // add a new key (key, value) pair
+ void SetAt(KEY key, VALUE newValue)
+ { BASE_CLASS::SetAt(key, newValue); }
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(KEY key)
+ { return BASE_CLASS::RemoveKey(key); }
+
+ // iteration
+ void GetNextAssoc(POSITION& rPosition, KEY& rKey, VALUE& rValue) const
+ { BASE_CLASS::GetNextAssoc(rPosition, (BASE_CLASS::BASE_KEY&)rKey,
+ (BASE_CLASS::BASE_VALUE&)rValue); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef THIS_FILE
+#define THIS_FILE __FILE__
+
+#undef new
+#ifdef _REDEF_NEW
+#define new DEBUG_NEW
+#undef _REDEF_NEW
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXTEMPL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxtls_.h b/public/sdk/inc/mfc42/afxtls_.h
new file mode 100644
index 000000000..a60b9e23d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxtls_.h
@@ -0,0 +1,240 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTLS_H__
+#define __AFXTLS_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+// Classes declared in this file
+
+class CSimpleList;
+class CThreadSlotData; // for manipulationg thread local storage
+class CThreadLocalObject; // for storing thread local data
+class CProcessLocalObject; // for storing thread local data
+class CNoTrackObject;
+
+// template class CTypedSimpleList<>
+// template class CThreadLocal<>
+// template class CProcessLocal<>
+
+/////////////////////////////////////////////////////////////////////////////
+// CSimpleList (simple/small subset of CList)
+
+class CSimpleList
+{
+public:
+ CSimpleList(int nNextOffset = 0);
+ void Construct(int nNextOffset);
+
+// Operations
+ BOOL IsEmpty() const;
+ void AddHead(void* p);
+ void RemoveAll();
+ void* GetHead() const;
+ void* GetNext(void* p) const;
+ BOOL Remove(void* p);
+
+// Implementation
+ void* m_pHead;
+ size_t m_nNextOffset;
+
+ void** GetNextPtr(void* p) const; // somewhat trusting...
+};
+
+inline CSimpleList::CSimpleList(int nNextOffset)
+ { m_pHead = NULL; m_nNextOffset = nNextOffset; }
+inline void CSimpleList::Construct(int nNextOffset)
+ { ASSERT(m_pHead == NULL); m_nNextOffset = nNextOffset; }
+inline BOOL CSimpleList::IsEmpty() const
+ { return m_pHead == NULL; }
+inline void** CSimpleList::GetNextPtr(void* p) const
+ { ASSERT(p != NULL); return (void**)((BYTE*)p+m_nNextOffset); }
+inline void CSimpleList::RemoveAll()
+ { m_pHead = NULL; }
+inline void* CSimpleList::GetHead() const
+ { return m_pHead; }
+inline void* CSimpleList::GetNext(void* prevElement) const
+ { return *GetNextPtr(prevElement); }
+
+template<class TYPE>
+class CTypedSimpleList : public CSimpleList
+{
+public:
+ CTypedSimpleList(int nNextOffset = 0)
+ : CSimpleList(nNextOffset) { }
+ void AddHead(TYPE p)
+ { CSimpleList::AddHead(p); }
+ TYPE GetHead()
+ { return (TYPE)CSimpleList::GetHead(); }
+ TYPE GetNext(TYPE p)
+ { return (TYPE)CSimpleList::GetNext(p); }
+ BOOL Remove(TYPE p)
+ { return CSimpleList::Remove((TYPE)p); }
+ operator TYPE()
+ { return (TYPE)CSimpleList::GetHead(); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CThreadSlotData - manages owned array of "slots" for thread local storage
+
+struct CThreadData; // private to implementation
+struct CSlotData; // private to implementation
+
+class CThreadSlotData
+{
+public:
+ CThreadSlotData();
+
+// Operations
+ int AllocSlot();
+ void FreeSlot(int nSlot);
+ void* GetValue(int nSlot);
+ void SetValue(int nSlot, void* pValue);
+ // delete all values in process/thread
+ void DeleteValues(HINSTANCE hInst, BOOL bAll = FALSE);
+ // assign instance handle to just constructed slots
+ void AssignInstance(HINSTANCE hInst);
+
+// Implementation
+ DWORD m_tlsIndex; // used to access system thread-local storage
+
+ int m_nAlloc; // number of slots allocated (in UINTs)
+ int m_nRover; // (optimization) for quick finding of free slots
+ int m_nMax; // size of slot table below (in bits)
+ CSlotData* m_pSlotData; // state of each slot (allocated or not)
+ CTypedSimpleList<CThreadData*> m_list; // list of CThreadData structures
+ CRITICAL_SECTION m_sect;
+
+ void* GetThreadValue(int nSlot); // special version for threads only!
+ void* PASCAL operator new(size_t, void* p)
+ { return p; }
+ void DeleteValues(CThreadData* pData, HINSTANCE hInst);
+ ~CThreadSlotData();
+};
+
+class CNoTrackObject
+{
+public:
+ void* PASCAL operator new(size_t nSize);
+ void PASCAL operator delete(void*);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ void* PASCAL operator new(size_t nSize, LPCSTR, int);
+#endif
+ virtual ~CNoTrackObject() { }
+};
+
+class CThreadLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+ CNoTrackObject* GetDataNA();
+
+// Implementation
+ int m_nSlot;
+ ~CThreadLocalObject();
+};
+
+class CProcessLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+
+// Implementation
+ CNoTrackObject* volatile m_pObject;
+ ~CProcessLocalObject();
+};
+
+template<class TYPE>
+class CThreadLocal : public CThreadLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
+ return pData;
+ }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define THREAD_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CThreadLocal<class_name> ident_name;
+#define EXTERN_THREAD_LOCAL(class_name, ident_name) \
+ extern AFX_DATA THREAD_LOCAL(class_name, ident_name)
+
+template<class TYPE>
+class CProcessLocal : public CProcessLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ { return (TYPE*)m_pObject; }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define PROCESS_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CProcessLocal<class_name> ident_name;
+#define EXTERN_PROCESS_LOCAL(class_name, ident_name) \
+ extern AFX_DATA PROCESS_LOCAL(class_name, ident_name)
+
+/////////////////////////////////////////////////////////////////////////////
+
+void AFXAPI AfxInitLocalData(HINSTANCE hInstInit);
+void AFXAPI AfxTermLocalData(HINSTANCE hInstTerm, BOOL bAll = FALSE);
+void AFXAPI AfxTlsAddRef();
+void AFXAPI AfxTlsRelease();
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXTLS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_cfg.h b/public/sdk/inc/mfc42/afxv_cfg.h
new file mode 100644
index 000000000..dca730f40
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_cfg.h
@@ -0,0 +1,17 @@
+// afxv_cfg.h - target configuration control for non-Microsoft compilers
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// You can define _AFX_PORTABLE in order to keep the library from using
+// certain Microsoft extensions that are not commonly implemented by
+// other compilers.
+
+#define _AFX_PORTABLE
diff --git a/public/sdk/inc/mfc42/afxv_cpu.h b/public/sdk/inc/mfc42/afxv_cpu.h
new file mode 100644
index 000000000..d38001152
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_cpu.h
@@ -0,0 +1,63 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_cpu.h - target version/configuration control for non-Intel CPUs
+
+#if !defined(_M_MRX000) && !defined(_M_ALPHA) && !defined(_M_PPC) && !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_cpu.h is only for MIPS R4000, DEC AXP, Motorola M68000, and IBM PowerPC builds
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_M68K
+// specific overrides for M68K...
+#define AFXAPI __cdecl
+#define AFXOLEAPI __pascal
+#ifndef _AFX_NO_DEBUG_CRT
+ #define _AFX_NO_DEBUG_CRT
+#endif
+#endif //_M_M68K
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_MPPC
+// specific overrides for MPPC...
+#define AFXAPI __cdecl
+#endif //_M_MPPC
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _MIPS_
+// specific overrides for MIPS...
+#define _AFX_PACKING 8 // default MIPS alignment (required)
+#endif //_MIPS_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _ALPHA_
+// specific overrides for ALPHA...
+#define _AFX_PACKING 8 // default AXP alignment (required)
+#ifdef _AFX_NO_DEBUG_CRT
+extern "C" void _BPT();
+#pragma intrinsic(_BPT)
+#define AfxDebugBreak() _BPT()
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif //_ALPHA_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _PPC_
+// specific overrides for PPC...
+#define _AFX_PACKING 8 // default PPC alignment (required)
+#endif //_PPC_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_dll.h b/public/sdk/inc/mfc42/afxv_dll.h
new file mode 100644
index 000000000..b22778a5d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_dll.h
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// special header for _AFXDLL variant.
+
+// default AFX_XXX_DATA and AFX_XXX_DATADEF macros for using MFC DLLs
+
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA AFX_DATA_IMPORT
+ #define AFX_CORE_DATADEF
+#endif
+
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA AFX_DATA_IMPORT
+ #define AFX_OLE_DATADEF
+#endif
+
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA AFX_DATA_IMPORT
+ #define AFX_DB_DATADEF
+#endif
+
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA AFX_DATA_IMPORT
+ #define AFX_NET_DATADEF
+#endif
+
+// default AFX_EXT_DATA and AFX_EXT_DATADEF macros for using or
+// creating MFC extension DLLs, depending on _AFX_EXT_IMPL
+// AFX_EXT_CLASS can be used to import or export entire classes
+// in an extension DLL without the hassle of creating a .DEF file
+// with decorated names.
+
+#ifndef AFX_EXT_DATA
+ #ifdef _AFXEXT
+ #define AFX_EXT_CLASS AFX_CLASS_EXPORT
+ #define AFX_EXT_API AFX_API_EXPORT
+ #define AFX_EXT_DATA AFX_DATA_EXPORT
+ #define AFX_EXT_DATADEF
+ #else
+ #define AFX_EXT_CLASS AFX_CLASS_IMPORT
+ #define AFX_EXT_API AFX_API_IMPORT
+ #define AFX_EXT_DATA AFX_DATA_IMPORT
+ #define AFX_EXT_DATADEF
+ #endif
+#endif
diff --git a/public/sdk/inc/mfc42/afxv_mac.h b/public/sdk/inc/mfc42/afxv_mac.h
new file mode 100644
index 000000000..099e55c23
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_mac.h
@@ -0,0 +1,52 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_mac.h - target version/configuration control for Macintosh OS
+
+#if !defined(_MAC)
+ #error afxv_mac.h is used only for Macintosh-targeted builds
+#endif
+
+#if !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_mac.h is used only for Motorola M68000 and Motorola PowerPC builds
+#endif
+
+#define SystemSevenOrLater 1
+
+#define _beginthreadex(p1, p2, p3, p4, p5, p6) NULL
+#define _endthreadex(p1)
+
+// wcslen is defined in wlm
+extern "C" size_t WINAPI wcslen(const wchar_t*);
+
+#ifdef _68K_
+ #define _AFX_NO_DEBUG_CRT
+ #define _AFX_NO_SOCKET_SUPPORT
+#endif
+
+#define _AFX_NO_SYNC_SUPPORT
+#define _AFX_NO_DAO_SUPPORT
+#define _AFX_NO_OCX_SUPPORT
+#define _AFX_NO_OCC_SUPPORT
+#define _AFX_NO_DOCOBJECT_SUPPORT
+#define _AFX_NO_ATLSERVER_SUPPORT
+#define OLE2ANSI
+
+#ifdef _AFX_NO_DEBUG_CRT
+#ifdef _68K_
+ pascal void _AfxDebugBreak(void) = 0xA9FF;
+ #define AfxDebugBreak() _AfxDebugBreak()
+#else
+ extern "C" pascal void Debugger(void);
+ #define AfxDebugBreak() Debugger()
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_w32.h b/public/sdk/inc/mfc42/afxv_w32.h
new file mode 100644
index 000000000..e97a5f210
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_w32.h
@@ -0,0 +1,208 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_w32.h - target version/configuration control for Win32
+
+#ifdef _WINDOWS_
+ #error WINDOWS.H already included. MFC apps must not #include <windows.h>
+#endif
+
+// STRICT is the only supported option (NOSTRICT is no longer supported)
+#ifndef STRICT
+#define STRICT 1
+#endif
+
+// certain parts of WINDOWS.H are necessary
+#undef NOKERNEL
+#undef NOGDI
+#undef NOUSER
+#undef NODRIVERS
+#undef NOLOGERROR
+#undef NOPROFILER
+#undef NOMEMMGR
+#undef NOLFILEIO
+#undef NOOPENFILE
+#undef NORESOURCE
+#undef NOATOM
+#undef NOLANGUAGE
+#undef NOLSTRING
+#undef NODBCS
+#undef NOKEYBOARDINFO
+#undef NOGDICAPMASKS
+#undef NOCOLOR
+#undef NOGDIOBJ
+#undef NODRAWTEXT
+#undef NOTEXTMETRIC
+#undef NOSCALABLEFONT
+#undef NOBITMAP
+#undef NORASTEROPS
+#undef NOMETAFILE
+#undef NOSYSMETRICS
+#undef NOSYSTEMPARAMSINFO
+#undef NOMSG
+#undef NOWINSTYLES
+#undef NOWINOFFSETS
+#undef NOSHOWWINDOW
+#undef NODEFERWINDOWPOS
+#undef NOVIRTUALKEYCODES
+#undef NOKEYSTATES
+#undef NOWH
+#undef NOMENUS
+#undef NOSCROLL
+#undef NOCLIPBOARD
+#undef NOICONS
+#undef NOMB
+#undef NOSYSCOMMANDS
+#undef NOMDI
+#undef NOCTLMGR
+#undef NOWINMESSAGES
+
+#ifndef WIN32
+#define WIN32
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifdef _UNICODE
+#ifndef UNICODE
+#define UNICODE // UNICODE is used by Windows headers
+#endif
+#endif
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
+#endif
+#endif
+
+#ifdef VC_EXTRALEAN
+#define WIN32_EXTRA_LEAN
+#define NOSERVICE
+#define NOMCX
+#define NOIME
+#define NOSOUND
+#define NOCOMM
+#define NOKANJI
+#define NORPC
+#define NOPROXYSTUB
+#define NOIMAGE
+#define NOTAPE
+
+#ifndef NO_ANSIUNI_ONLY
+#ifdef _UNICODE
+#define UNICODE_ONLY
+#else
+#define ANSI_ONLY
+#endif
+#endif //!NO_ANSIUNI_ONLY
+
+#endif //VC_EXTRALEAN
+
+#ifdef _MAC
+#define _WIN32NLS
+#define _WIN32REG
+#define _WLM_NOFORCE_LIBS
+#ifdef _AFXDLL
+#define _WLMDLL
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4201) // winnt.h uses nameless structs
+#endif
+
+#include <windows.h>
+
+struct HKEY__;
+typedef struct HKEY__ *HKEY;
+
+#ifndef _INC_COMMCTRL
+ #include <commctrl.h>
+#endif
+
+#ifndef EXPORT
+#define EXPORT
+#endif
+
+#ifndef _INC_TCHAR
+ #include <tchar.h> // used for ANSI v.s. UNICODE abstraction
+#endif
+#ifdef _MBCS
+#ifndef _INC_MBCTYPE
+ #include <mbctype.h>
+#endif
+#ifndef _INC_MBSTRING
+ #include <mbstring.h>
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Now for the Windows API specific parts
+
+// WM_CTLCOLOR for 16 bit API compatability
+#define WM_CTLCOLOR 0x0019
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetWindowTask
+#undef GetWindowTask
+inline HTASK GetWindowTask(HWND hWnd)
+ { return (HTASK)::GetWindowThreadProcessId(hWnd, NULL); }
+#endif
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetNextWindow
+#undef GetNextWindow
+inline HWND GetNextWindow(HWND hWnd, UINT nDirection)
+ { return ::GetWindow(hWnd, nDirection); }
+#endif
+
+// Avoid Win95 mapping CToolBar::DrawState to DrawState[A/W]
+#ifdef DrawState
+#undef DrawState
+inline BOOL WINAPI DrawState(HDC hdc, HBRUSH hbr, DRAWSTATEPROC lpOutputFunc,
+ LPARAM lData, WPARAM wData, int x, int y, int cx, int cy, UINT fuFlags)
+#ifdef UNICODE
+ { return ::DrawStateW(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#else
+ { return ::DrawStateA(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#endif
+#endif
+
+// Avoid Win95 mapping CStatusBar::DrawStatusText to DrawStatusText[A/W]
+#ifdef DrawStatusText
+#undef DrawStatusText
+inline void WINAPI DrawStatusText(HDC hDC, LPRECT lprc, LPCTSTR szText,
+ UINT uFlags)
+#ifdef UNICODE
+ { ::DrawStatusTextW(hDC, lprc, szText, uFlags); }
+#else
+ { ::DrawStatusTextA(hDC, lprc, szText, uFlags); }
+#endif
+#endif
+
+#ifndef _MAC
+// FreeResource is not required except on Mac platforms
+#undef FreeResource
+inline BOOL WINAPI FreeResource(HGLOBAL) { return TRUE; }
+// UnlockResource is not required except on Mac platforms
+#undef UnlockResource
+inline int WINAPI UnlockResource(HGLOBAL) { return 0; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxver_.h b/public/sdk/inc/mfc42/afxver_.h
new file mode 100644
index 000000000..7fb911948
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxver_.h
@@ -0,0 +1,327 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxver_.h - target version/configuration control
+
+/////////////////////////////////////////////////////////////////////////////
+// Master version numbers
+
+#define _AFX 1 // Microsoft Application Framework Classes
+#define _MFC_VER 0x0420 // Microsoft Foundation Classes version 4.20
+
+/////////////////////////////////////////////////////////////////////////////
+// Default swap tuning for AFX library
+
+#ifndef _68K_
+ #define _TEXTSEG(name) ".text$" #name
+#else
+ #define _TEXTSEG(name) #name, "swappable"
+#endif
+
+// Most segments are tuned via function order list (DLL version)
+#ifndef _AFX_FUNCTION_ORDER
+#define AFX_CORE1_SEG _TEXTSEG(AFX_CORE1) // core functionality
+#define AFX_CORE2_SEG _TEXTSEG(AFX_CORE2) // more core functionality
+#define AFX_CORE3_SEG _TEXTSEG(AFX_CORE3) // more core functionality
+#define AFX_CORE4_SEG _TEXTSEG(AFX_CORE4) // more core functionality
+#define AFX_AUX_SEG _TEXTSEG(AFX_AUX) // auxilliary functionality
+#define AFX_COLL_SEG _TEXTSEG(AFX_COL1) // collections
+#define AFX_COLL2_SEG _TEXTSEG(AFX_COL2) // more collections
+#define AFX_OLE_SEG _TEXTSEG(AFX_OLE1) // OLE support
+#define AFX_OLE2_SEG _TEXTSEG(AFX_OLE2) // more OLE support
+#define AFX_OLE3_SEG _TEXTSEG(AFX_OLE3) // and more OLE support
+#define AFX_OLE4_SEG _TEXTSEG(AFX_OLE4) // and more OLE support
+#define AFX_OLE5_SEG _TEXTSEG(AFX_OLE5) // and even more OLE support
+#define AFX_OLERA_SEG _TEXTSEG(AFX_OLERA) // (reserved for future use)
+#define AFX_PRINT_SEG _TEXTSEG(AFX_PRNT) // Printing functionality
+#define AFX_DBG1_SEG _TEXTSEG(AFX_DBG1) // inlines go here in _DEBUG
+#define AFX_DBG2_SEG _TEXTSEG(AFX_DBG2) // inlines go here in _DEBUG
+#define AFX_VDEL_SEG _TEXTSEG(AFX_VDEL) // vector deleting destructors
+#define AFX_TERM_SEG _TEXTSEG(AFX_TERM) // cleanup routines
+#define AFX_MAPI_SEG _TEXTSEG(AFX_MAPI) // simple MAPI support
+#define AFX_SOCK_SEG _TEXTSEG(AFX_SOCK) // windows sockets support
+#else
+#define AFX_CORE1_SEG // core functionality
+#define AFX_CORE2_SEG // more core functionality
+#define AFX_CORE3_SEG // more core functionality
+#define AFX_CORE4_SEG // more core functionality
+#define AFX_AUX_SEG // auxilliary functionality
+#define AFX_COLL_SEG // collections
+#define AFX_COLL2_SEG // more collections
+#define AFX_OLE_SEG // OLE support
+#define AFX_OLE2_SEG // more OLE support
+#define AFX_OLE3_SEG // and more OLE support
+#define AFX_OLE4_SEG // and more OLE support
+#define AFX_OLE5_SEG // and even more OLE support
+#define AFX_OLERA_SEG // (reserved for future use)
+#define AFX_PRINT_SEG // Printing functionality
+#define AFX_DBG1_SEG // inlines go here in _DEBUG
+#define AFX_DBG2_SEG // inlines go here in _DEBUG
+#define AFX_VDEL_SEG // vector deleting destructors
+#define AFX_TERM_SEG // cleanup routines
+#define AFX_MAPI_SEG // simple MAPI support
+#define AFX_SOCK_SEG // windows sockets support
+#endif
+
+// AFX_INIT_SEG is hand tuned even in DLL version
+#define AFX_INIT_SEG _TEXTSEG(AFX_INIT) // initialization
+
+/////////////////////////////////////////////////////////////////////////////
+// turn off reference tracking for certain often used symbols
+
+#ifndef _AFX_PORTABLE
+#pragma component(browser, off, references, "ASSERT")
+#pragma component(browser, off, references, "AfxAssertFailedLine")
+#pragma component(browser, off, references, "AfxDebugBreak")
+#pragma component(browser, off, references, "BOOL")
+#pragma component(browser, off, references, "BYTE")
+#pragma component(browser, off, references, "DECLSPEC_IMPORT")
+#pragma component(browser, off, references, "DWORD")
+#pragma component(browser, off, references, "FALSE")
+#pragma component(browser, off, references, "FAR")
+#pragma component(browser, off, references, "LPSTR")
+#pragma component(browser, off, references, "LPTSTR")
+#pragma component(browser, off, references, "LPCSTR")
+#pragma component(browser, off, references, "LPCTSTR")
+#pragma component(browser, off, references, "NULL")
+#pragma component(browser, off, references, "PASCAL")
+#pragma component(browser, off, references, "THIS_FILE")
+#pragma component(browser, off, references, "TRUE")
+#pragma component(browser, off, references, "UINT")
+#pragma component(browser, off, references, "WINAPI")
+#pragma component(browser, off, references, "WORD")
+#endif //!_AFX_PORTABLE
+
+/////////////////////////////////////////////////////////////////////////////
+// For target version (one of)
+// _CUSTOM : for custom configurations (causes afxv_cfg.h to be included)
+//
+// Additional build options:
+// _DEBUG debug versions (full diagnostics)
+// _AFXDLL use shared MFC DLL
+// _AFXEXT extension DLL version, implies _AFXDLL
+// _USRDLL create regular DLL (_AFXDLL is valid too)
+//
+
+#ifndef _DEBUG
+ #define _AFX_ENABLE_INLINES
+#endif
+
+#define _AFX_NO_NESTED_DERIVATION
+
+/////////////////////////////////////////////////////////////////////////////
+// Special configurations
+
+// _AFXEXT implies _AFXDLL
+#if defined(_AFXEXT) && !defined(_AFXDLL)
+ #define _AFXDLL
+#endif
+
+#if defined(_AFXDLL) && !defined(_DLL)
+ #error Please use the /MD switch for _AFXDLL builds
+#endif
+
+#ifndef _MAC
+#if defined(_AFXDLL) && !defined(_MT)
+ #error Please use the /MD switch (multithreaded DLL C-runtime)
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// special include files
+
+#include <afxv_w32.h>
+
+// Include any non-Intel platform specific items
+#ifndef _X86_
+ #include <afxv_cpu.h>
+#endif
+
+// Include any non-Windows OS-specific items
+#ifdef _MAC
+ #include <afxv_mac.h>
+#endif
+
+#if defined(_X86_) || defined(_MAC)
+ #define _AFX_MINREBUILD
+#endif
+
+#ifdef _CUSTOM
+// Put any custom configuration items in afxv_cfg.h
+ #include <afxv_cfg.h>
+#endif
+
+// setup default packing value
+#ifndef _AFX_PACKING
+ #define _AFX_PACKING 4 // default packs structs at 4 bytes
+#endif
+
+#ifdef _AFXDLL
+ #include <afxv_dll.h>
+#endif
+
+// Define this virtual key for use by status bar
+#ifndef VK_KANA
+#define VK_KANA 0x15
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special AfxDebugBreak: used to break into debugger at critical times
+
+#ifndef AfxDebugBreak
+#ifdef _AFX_NO_DEBUG_CRT
+// by default, debug break is asm int 3, or a call to DebugBreak, or nothing
+#if defined(_M_IX86) && !defined(_AFX_PORTABLE)
+#define AfxDebugBreak() _asm { int 3 }
+#else
+#define AfxDebugBreak() DebugBreak()
+#endif
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif
+
+#ifndef _DEBUG
+#ifdef AfxDebugBreak
+#undef AfxDebugBreak
+#endif
+#define AfxDebugBreak()
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard preprocessor symbols if not already defined
+/////////////////////////////////////////////////////////////////////////////
+
+// SIZE_T_MAX is used by the collection classes
+#ifndef SIZE_T_MAX
+ #define SIZE_T_MAX UINT_MAX
+#endif
+
+// PASCAL is used for static member functions
+#ifndef PASCAL
+ #define PASCAL
+#endif
+
+// CDECL and EXPORT are defined in case WINDOWS.H doesn't
+#ifndef CDECL
+ #define CDECL __cdecl
+#endif
+
+#ifndef EXPORT
+ #define EXPORT
+#endif
+
+// UNALIGNED is used for unaligned data access (in CArchive mostly)
+#ifndef UNALIGNED
+ #define UNALIGNED
+#endif
+
+// AFXAPI is used on global public functions
+#ifndef AFXAPI
+ #define AFXAPI __stdcall
+#endif
+
+// AFXOLEAPI is used for some special OLE functions
+#ifndef AFXOLEAPI
+ #define AFXOLEAPI __stdcall
+#endif
+
+// AFX_CDECL is used for rare functions taking variable arguments
+#ifndef AFX_CDECL
+ #define AFX_CDECL __cdecl
+#endif
+
+// AFX_EXPORT is used for functions which need to be exported
+#ifndef AFX_EXPORT
+ #define AFX_EXPORT EXPORT
+#endif
+
+// The following macros are used to enable export/import
+
+// for data
+#ifndef AFX_DATA_EXPORT
+ #define AFX_DATA_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_DATA_IMPORT
+ #define AFX_DATA_IMPORT __declspec(dllimport)
+#endif
+
+// for classes
+#ifndef AFX_CLASS_EXPORT
+ #define AFX_CLASS_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_CLASS_IMPORT
+ #define AFX_CLASS_IMPORT __declspec(dllimport)
+#endif
+
+// for global APIs
+#ifndef AFX_API_EXPORT
+ #define AFX_API_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_API_IMPORT
+ #define AFX_API_IMPORT __declspec(dllimport)
+#endif
+
+// The following macros are used on data declarations/definitions
+// (they are redefined for extension DLLs and the shared MFC DLL)
+#define AFX_DATA
+#define AFX_DATADEF
+
+// used when building the "core" MFC42.DLL
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA
+ #define AFX_CORE_DATADEF
+#endif
+
+// used when building the MFC/OLE support MFCO42.DLL
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA
+ #define AFX_OLE_DATADEF
+#endif
+
+// used when building the MFC/DB support MFCD42.DLL
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA
+ #define AFX_DB_DATADEF
+#endif
+
+// used when building the MFC/NET support MFCN42.DLL
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA
+ #define AFX_NET_DATADEF
+#endif
+
+// used when building extension DLLs
+#ifndef AFX_EXT_DATA
+ #define AFX_EXT_DATA
+ #define AFX_EXT_DATADEF
+ #define AFX_EXT_CLASS
+ #define AFX_EXT_API
+#endif
+
+// BASED_XXXX macros are provided for backward compatibility
+#ifndef BASED_CODE
+ #define BASED_CODE
+#endif
+
+#ifndef BASED_DEBUG
+ #define BASED_DEBUG
+#endif
+
+#ifndef BASED_STACK
+ #define BASED_STACK
+#endif
+
+// setup default code segment
+#ifdef AFX_DEF_SEG
+ #pragma code_seg(AFX_DEF_SEG)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxwin.h b/public/sdk/inc/mfc42/afxwin.h
new file mode 100644
index 000000000..9a173da99
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin.h
@@ -0,0 +1,4645 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXWIN_H__
+#ifndef RC_INVOKED
+#define __AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// Make sure 'afx.h' is included first
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+// Note: WINDOWS.H already included from AFXV_W32.H
+
+#ifndef _INC_SHELLAPI
+ #include <shellapi.h>
+#endif
+
+#ifndef __AFXRES_H__
+ #include <afxres.h> // standard resource IDs
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h> // standard collections
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#pragma comment(lib, "uuid.lib")
+#endif
+
+#ifdef _INC_WINDOWSX
+// The following names from WINDOWSX.H collide with names in this header
+#undef SubclassWindow
+#undef CopyRgn
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+class CSize;
+class CPoint;
+class CRect;
+
+//CObject
+ //CException
+ //CSimpleException
+ class CResourceException;// Win resource failure exception
+ class CUserException; // Message Box alert and stop operation
+
+ class CGdiObject; // CDC drawing tool
+ class CPen; // a pen / HPEN wrapper
+ class CBrush; // a brush / HBRUSH wrapper
+ class CFont; // a font / HFONT wrapper
+ class CBitmap; // a bitmap / HBITMAP wrapper
+ class CPalette; // a palette / HPALLETE wrapper
+ class CRgn; // a region / HRGN wrapper
+
+ class CDC; // a Display Context / HDC wrapper
+ class CClientDC; // CDC for client of window
+ class CWindowDC; // CDC for entire window
+ class CPaintDC; // embeddable BeginPaint struct helper
+
+ class CMenu; // a menu / HMENU wrapper
+
+ class CCmdTarget; // a target for user commands
+ class CWnd; // a window / HWND wrapper
+ class CDialog; // a dialog
+
+ // standard windows controls
+ class CStatic; // Static control
+ class CButton; // Button control
+ class CListBox; // ListBox control
+ class CCheckListBox;// special listbox with checks
+ class CComboBox; // ComboBox control
+ class CEdit; // Edit control
+ class CScrollBar; // ScrollBar control
+
+ // frame windows
+ class CFrameWnd; // standard SDI frame
+ class CMDIFrameWnd; // standard MDI frame
+ class CMDIChildWnd; // standard MDI child
+ class CMiniFrameWnd;// half-height caption frame wnd
+
+ // views on a document
+ class CView; // a view on a document
+ class CScrollView; // a scrolling view
+
+ class CWinThread; // thread base class
+ class CWinApp; // application base class
+
+ class CDocTemplate; // template for document creation
+ class CSingleDocTemplate;// SDI support
+ class CMultiDocTemplate; // MDI support
+
+ class CDocument; // main document abstraction
+
+
+// Helper classes
+class CCmdUI; // Menu/button enabling
+class CDataExchange; // Data exchange and validation context
+class CCommandLineInfo; // CommandLine parsing helper
+class CDocManager; // CDocTemplate manager object
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Type modifier for message handlers
+#ifndef afx_msg
+#define afx_msg // intentional placeholder
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSize - An extent, similar to Windows SIZE structure.
+
+class CSize : public tagSIZE
+{
+public:
+
+// Constructors
+ CSize();
+ CSize(int initCX, int initCY);
+ CSize(SIZE initSize);
+ CSize(POINT initPt);
+ CSize(DWORD dwSize);
+
+// Operations
+ BOOL operator==(SIZE size) const;
+ BOOL operator!=(SIZE size) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+
+// Operators returning CSize values
+ CSize operator+(SIZE size) const;
+ CSize operator-(SIZE size) const;
+ CSize operator-() const;
+
+// Operators returning CPoint values
+ CPoint operator+(POINT point) const;
+ CPoint operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPoint - A 2-D point, similar to Windows POINT structure.
+
+class CPoint : public tagPOINT
+{
+public:
+
+// Constructors
+ CPoint();
+ CPoint(int initX, int initY);
+ CPoint(POINT initPt);
+ CPoint(SIZE initSize);
+ CPoint(DWORD dwPoint);
+
+// Operations
+ void Offset(int xOffset, int yOffset);
+ void Offset(POINT point);
+ void Offset(SIZE size);
+ BOOL operator==(POINT point) const;
+ BOOL operator!=(POINT point) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+ void operator+=(POINT point);
+ void operator-=(POINT point);
+
+// Operators returning CPoint values
+ CPoint operator+(SIZE size) const;
+ CPoint operator-(SIZE size) const;
+ CPoint operator-() const;
+ CPoint operator+(POINT point) const;
+
+// Operators returning CSize values
+ CSize operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRect - A 2-D rectangle, similar to Windows RECT structure.
+
+typedef const RECT* LPCRECT; // pointer to read/only RECT
+
+class CRect : public tagRECT
+{
+public:
+
+// Constructors
+ CRect();
+ CRect(int l, int t, int r, int b);
+ CRect(const RECT& srcRect);
+ CRect(LPCRECT lpSrcRect);
+ CRect(POINT point, SIZE size);
+ CRect(POINT topLeft, POINT bottomRight);
+
+// Attributes (in addition to RECT members)
+ int Width() const;
+ int Height() const;
+ CSize Size() const;
+ CPoint& TopLeft();
+ CPoint& BottomRight();
+ const CPoint& TopLeft() const;
+ const CPoint& BottomRight() const;
+ CPoint CenterPoint() const;
+
+ // convert between CRect and LPRECT/LPCRECT (no need for &)
+ operator LPRECT();
+ operator LPCRECT() const;
+
+ BOOL IsRectEmpty() const;
+ BOOL IsRectNull() const;
+ BOOL PtInRect(POINT point) const;
+
+// Operations
+ void SetRect(int x1, int y1, int x2, int y2);
+ void SetRect(POINT topLeft, POINT bottomRight);
+ void SetRectEmpty();
+ void CopyRect(LPCRECT lpSrcRect);
+ BOOL EqualRect(LPCRECT lpRect) const;
+
+ void InflateRect(int x, int y);
+ void InflateRect(SIZE size);
+ void InflateRect(LPCRECT lpRect);
+ void InflateRect(int l, int t, int r, int b);
+ void DeflateRect(int x, int y);
+ void DeflateRect(SIZE size);
+ void DeflateRect(LPCRECT lpRect);
+ void DeflateRect(int l, int t, int r, int b);
+
+ void OffsetRect(int x, int y);
+ void OffsetRect(SIZE size);
+ void OffsetRect(POINT point);
+ void NormalizeRect();
+
+ // operations that fill '*this' with result
+ BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2);
+
+// Additional Operations
+ void operator=(const RECT& srcRect);
+ BOOL operator==(const RECT& rect) const;
+ BOOL operator!=(const RECT& rect) const;
+ void operator+=(POINT point);
+ void operator+=(SIZE size);
+ void operator+=(LPCRECT lpRect);
+ void operator-=(POINT point);
+ void operator-=(SIZE size);
+ void operator-=(LPCRECT lpRect);
+ void operator&=(const RECT& rect);
+ void operator|=(const RECT& rect);
+
+// Operators returning CRect values
+ CRect operator+(POINT point) const;
+ CRect operator-(POINT point) const;
+ CRect operator+(LPCRECT lpRect) const;
+ CRect operator+(SIZE size) const;
+ CRect operator-(SIZE size) const;
+ CRect operator-(LPCRECT lpRect) const;
+ CRect operator&(const RECT& rect2) const;
+ CRect operator|(const RECT& rect2) const;
+ CRect MulDiv(int nMultiplier, int nDivisor) const;
+};
+
+#ifdef _DEBUG
+// Diagnostic Output
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, SIZE size);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, POINT point);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, const RECT& rect);
+#endif //_DEBUG
+
+// Serialization
+CArchive& AFXAPI operator<<(CArchive& ar, SIZE size);
+CArchive& AFXAPI operator<<(CArchive& ar, POINT point);
+CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect);
+CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size);
+CArchive& AFXAPI operator>>(CArchive& ar, POINT& point);
+CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exceptions
+
+class CResourceException : public CSimpleException // resource failure
+{
+ DECLARE_DYNAMIC(CResourceException)
+public:
+ CResourceException();
+
+// Implementation
+public:
+ CResourceException(BOOL bAutoDelete);
+ CResourceException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CResourceException();
+};
+
+class CUserException : public CSimpleException // general user visible alert
+{
+ DECLARE_DYNAMIC(CUserException)
+public:
+ CUserException();
+
+// Implementation
+public:
+ CUserException(BOOL bAutoDelete);
+ CUserException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CUserException();
+};
+
+void AFXAPI AfxThrowResourceException();
+void AFXAPI AfxThrowUserException();
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject abstract class for CDC SelectObject
+
+class CGdiObject : public CObject
+{
+ DECLARE_DYNCREATE(CGdiObject)
+public:
+
+// Attributes
+ HGDIOBJ m_hObject; // must be first data member
+ operator HGDIOBJ() const;
+ HGDIOBJ GetSafeHandle() const;
+
+ static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HGDIOBJ hObject);
+ HGDIOBJ Detach();
+
+// Constructors
+ CGdiObject(); // must Create a derived class object
+ BOOL DeleteObject();
+
+// Operations
+ int GetObject(int nCount, LPVOID lpObject) const;
+ UINT GetObjectType() const;
+ BOOL CreateStockObject(int nIndex);
+ BOOL UnrealizeObject();
+
+// Implementation
+public:
+ virtual ~CGdiObject();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject subclasses (drawing tools)
+
+class CPen : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPen)
+
+public:
+ static CPen* PASCAL FromHandle(HPEN hPen);
+
+// Constructors
+ CPen();
+ CPen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ CPen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ BOOL CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
+
+// Attributes
+ operator HPEN() const;
+ int GetLogPen(LOGPEN* pLogPen);
+#ifndef _MAC
+ int GetExtLogPen(EXTLOGPEN* pLogPen);
+#endif
+
+// Implementation
+public:
+ virtual ~CPen();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBrush : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBrush)
+
+public:
+ static CBrush* PASCAL FromHandle(HBRUSH hBrush);
+
+// Constructors
+ CBrush();
+ CBrush(COLORREF crColor); // CreateSolidBrush
+ CBrush(int nIndex, COLORREF crColor); // CreateHatchBrush
+ CBrush(CBitmap* pBitmap); // CreatePatternBrush
+
+ BOOL CreateSolidBrush(COLORREF crColor);
+ BOOL CreateHatchBrush(int nIndex, COLORREF crColor);
+ BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
+ BOOL CreatePatternBrush(CBitmap* pBitmap);
+ BOOL CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage);
+ BOOL CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage);
+ BOOL CreateSysColorBrush(int nIndex);
+
+// Attributes
+ operator HBRUSH() const;
+ int GetLogBrush(LOGBRUSH* pLogBrush);
+
+// Implementation
+public:
+ virtual ~CBrush();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CFont : public CGdiObject
+{
+ DECLARE_DYNAMIC(CFont)
+
+public:
+ static CFont* PASCAL FromHandle(HFONT hFont);
+
+// Constructors
+ CFont();
+ BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
+ BOOL CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename);
+ BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
+ BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
+
+// Attributes
+ operator HFONT() const;
+ int GetLogFont(LOGFONT* pLogFont);
+
+// Implementation
+public:
+ virtual ~CFont();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBitmap : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBitmap)
+
+public:
+ static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
+
+// Constructors
+ CBitmap();
+
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+#ifndef _MAC
+ BOOL LoadOEMBitmap(UINT nIDBitmap); // for OBM_/OCR_/OIC_
+#endif
+ BOOL LoadMappedBitmap(UINT nIDBitmap, UINT nFlags = 0,
+ LPCOLORMAP lpColorMap = NULL, int nMapSize = 0);
+ BOOL CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount,
+ const void* lpBits);
+ BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
+ BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight);
+ BOOL CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight);
+
+// Attributes
+ operator HBITMAP() const;
+ int GetBitmap(BITMAP* pBitMap);
+
+// Operations
+ DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
+ DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const;
+ CSize SetBitmapDimension(int nWidth, int nHeight);
+ CSize GetBitmapDimension() const;
+
+// Implementation
+public:
+ virtual ~CBitmap();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CPalette : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPalette)
+
+public:
+ static CPalette* PASCAL FromHandle(HPALETTE hPalette);
+
+// Constructors
+ CPalette();
+ BOOL CreatePalette(LPLOGPALETTE lpLogPalette);
+#ifndef _MAC
+ BOOL CreateHalftonePalette(CDC* pDC);
+#endif
+
+// Attributes
+ operator HPALETTE() const;
+ int GetEntryCount();
+ UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const;
+ UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+
+// Operations
+#ifndef _MAC
+ void AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+#endif
+ UINT GetNearestPaletteIndex(COLORREF crColor) const;
+ BOOL ResizePalette(UINT nNumEntries);
+
+// Implementation
+ virtual ~CPalette();
+};
+
+class CRgn : public CGdiObject
+{
+ DECLARE_DYNAMIC(CRgn)
+
+public:
+ static CRgn* PASCAL FromHandle(HRGN hRgn);
+ operator HRGN() const;
+
+// Constructors
+ CRgn();
+ BOOL CreateRectRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateRectRgnIndirect(LPCRECT lpRect);
+ BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
+ BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);
+#ifndef _MAC
+ BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,
+ int nCount, int nPolyFillMode);
+#endif
+ BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
+#ifndef _MAC
+ BOOL CreateFromPath(CDC* pDC);
+ BOOL CreateFromData(const XFORM* lpXForm, int nCount,
+ const RGNDATA* pRgnData);
+#endif
+
+// Operations
+ void SetRectRgn(int x1, int y1, int x2, int y2);
+ void SetRectRgn(LPCRECT lpRect);
+ int CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode);
+ int CopyRgn(CRgn* pRgnSrc);
+ BOOL EqualRgn(CRgn* pRgn) const;
+ int OffsetRgn(int x, int y);
+ int OffsetRgn(POINT point);
+ int GetRgnBox(LPRECT lpRect) const;
+ BOOL PtInRegion(int x, int y) const;
+ BOOL PtInRegion(POINT point) const;
+ BOOL RectInRegion(LPCRECT lpRect) const;
+#ifndef _MAC
+ int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;
+#endif
+
+// Implementation
+ virtual ~CRgn();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// The device context
+
+class CDC : public CObject
+{
+ DECLARE_DYNCREATE(CDC)
+public:
+
+// Attributes
+ HDC m_hDC; // The output DC (must be first data member)
+ HDC m_hAttribDC; // The Attribute DC
+ operator HDC() const;
+ HDC GetSafeHdc() const; // Always returns the Output DC
+#ifndef _MAC
+ CWnd* GetWindow() const;
+#endif
+
+ static CDC* PASCAL FromHandle(HDC hDC);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HDC hDC); // Attach/Detach affects only the Output DC
+ HDC Detach();
+
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC
+ virtual void ReleaseAttribDC(); // Release the Attribute DC
+ virtual void ReleaseOutputDC(); // Release the Output DC
+
+ BOOL IsPrinting() const; // TRUE if being used for printing
+
+ CPen* GetCurrentPen() const;
+ CBrush* GetCurrentBrush() const;
+ CPalette* GetCurrentPalette() const;
+ CFont* GetCurrentFont() const;
+ CBitmap* GetCurrentBitmap() const;
+
+// Constructors
+ CDC();
+ BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateCompatibleDC(CDC* pDC);
+
+ BOOL DeleteDC();
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+ int GetDeviceCaps(int nIndex) const;
+#ifndef _MAC
+ UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
+ UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
+#endif
+ BOOL ResetDC(const DEVMODE* lpDevMode);
+
+// Drawing-Tool Functions
+ CPoint GetBrushOrg() const;
+ CPoint SetBrushOrg(int x, int y);
+ CPoint SetBrushOrg(POINT point);
+ int EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData);
+
+// Type-safe selection helpers
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ CPen* SelectObject(CPen* pPen);
+ CBrush* SelectObject(CBrush* pBrush);
+ virtual CFont* SelectObject(CFont* pFont);
+ CBitmap* SelectObject(CBitmap* pBitmap);
+ int SelectObject(CRgn* pRgn); // special return for regions
+ CGdiObject* SelectObject(CGdiObject* pObject);
+ // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
+
+// Color and Color Palette Functions
+ COLORREF GetNearestColor(COLORREF crColor) const;
+ CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
+ UINT RealizePalette();
+ void UpdateColors();
+
+// Drawing-Attribute Functions
+ COLORREF GetBkColor() const;
+ int GetBkMode() const;
+ int GetPolyFillMode() const;
+ int GetROP2() const;
+ int GetStretchBltMode() const;
+ COLORREF GetTextColor() const;
+
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ int SetBkMode(int nBkMode);
+ int SetPolyFillMode(int nPolyFillMode);
+ int SetROP2(int nDrawMode);
+ int SetStretchBltMode(int nStretchMode);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+#ifndef _MAC
+ BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
+ BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
+#endif
+
+// Mapping Functions
+ int GetMapMode() const;
+ CPoint GetViewportOrg() const;
+ virtual int SetMapMode(int nMapMode);
+ // Viewport Origin
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+
+ // Viewport Extent
+ CSize GetViewportExt() const;
+ virtual CSize SetViewportExt(int cx, int cy);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+ // Window Origin
+ CPoint GetWindowOrg() const;
+ CPoint SetWindowOrg(int x, int y);
+ CPoint SetWindowOrg(POINT point);
+ CPoint OffsetWindowOrg(int nWidth, int nHeight);
+
+ // Window extent
+ CSize GetWindowExt() const;
+ virtual CSize SetWindowExt(int cx, int cy);
+ CSize SetWindowExt(SIZE size);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Coordinate Functions
+ void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
+ void DPtoLP(LPRECT lpRect) const;
+ void DPtoLP(LPSIZE lpSize) const;
+ void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
+ void LPtoDP(LPRECT lpRect) const;
+ void LPtoDP(LPSIZE lpSize) const;
+
+// Special Coordinate Functions (useful for dealing with metafiles and OLE)
+ void DPtoHIMETRIC(LPSIZE lpSize) const;
+ void LPtoHIMETRIC(LPSIZE lpSize) const;
+ void HIMETRICtoDP(LPSIZE lpSize) const;
+ void HIMETRICtoLP(LPSIZE lpSize) const;
+
+// Region Functions
+ BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
+ BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
+ BOOL InvertRgn(CRgn* pRgn);
+ BOOL PaintRgn(CRgn* pRgn);
+
+// Clipping Functions
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+ int SelectClipRgn(CRgn* pRgn);
+ int ExcludeClipRect(int x1, int y1, int x2, int y2);
+ int ExcludeClipRect(LPCRECT lpRect);
+ int ExcludeUpdateRgn(CWnd* pWnd);
+ int IntersectClipRect(int x1, int y1, int x2, int y2);
+ int IntersectClipRect(LPCRECT lpRect);
+ int OffsetClipRgn(int x, int y);
+ int OffsetClipRgn(SIZE size);
+#ifndef _MAC
+ int SelectClipRgn(CRgn* pRgn, int nMode);
+#endif
+
+// Line-Output Functions
+ CPoint GetCurrentPosition() const;
+ CPoint MoveTo(int x, int y);
+ CPoint MoveTo(POINT point);
+ BOOL LineTo(int x, int y);
+ BOOL LineTo(POINT point);
+ BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polyline(LPPOINT lpPoints, int nCount);
+
+#ifndef _MAC
+ BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
+ BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ int GetArcDirection() const;
+ int SetArcDirection(int nArcDirection);
+
+ BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
+ BOOL PolylineTo(const POINT* lpPoints, int nCount);
+ BOOL PolyPolyline(const POINT* lpPoints,
+ const DWORD* lpPolyPoints, int nCount);
+
+ BOOL PolyBezier(const POINT* lpPoints, int nCount);
+ BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
+#endif
+
+// Simple Drawing Functions
+ void FillRect(LPCRECT lpRect, CBrush* pBrush);
+ void FrameRect(LPCRECT lpRect, CBrush* pBrush);
+ void InvertRect(LPCRECT lpRect);
+ BOOL DrawIcon(int x, int y, HICON hIcon);
+ BOOL DrawIcon(POINT point, HICON hIcon);
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, CBrush* pBrush = NULL);
+#endif
+#endif
+
+// Ellipse and Polygon Functions
+#ifndef _MAC
+ BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4);
+ BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+#endif
+ void DrawFocusRect(LPCRECT lpRect);
+ BOOL Ellipse(int x1, int y1, int x2, int y2);
+ BOOL Ellipse(LPCRECT lpRect);
+ BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polygon(LPPOINT lpPoints, int nCount);
+#ifndef _MAC
+ BOOL PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount);
+#endif
+ BOOL Rectangle(int x1, int y1, int x2, int y2);
+ BOOL Rectangle(LPCRECT lpRect);
+ BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
+ BOOL RoundRect(LPCRECT lpRect, POINT point);
+
+// Bitmap Functions
+ BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
+ BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop);
+ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
+ COLORREF GetPixel(int x, int y) const;
+ COLORREF GetPixel(POINT point) const;
+ COLORREF SetPixel(int x, int y, COLORREF crColor);
+ COLORREF SetPixel(POINT point, COLORREF crColor);
+#ifndef _MAC
+ BOOL FloodFill(int x, int y, COLORREF crColor);
+ BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
+ BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
+ DWORD dwRop);
+ BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
+ BOOL SetPixelV(int x, int y, COLORREF crColor);
+ BOOL SetPixelV(POINT point, COLORREF crColor);
+#endif
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+ CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetTextExtent(const CString& str) const;
+ CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetOutputTextExtent(const CString& str) const;
+ CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
+ int nCount, int x, int y, int nWidth, int nHeight);
+ UINT GetTextAlign() const;
+ UINT SetTextAlign(UINT nFlags);
+ int GetTextFace(int nCount, LPTSTR lpszFacename) const;
+ int GetTextFace(CString& rString) const;
+ BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
+ BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
+#ifndef _MAC
+ int SetTextJustification(int nBreakExtra, int nBreakCount);
+#endif
+ int GetTextCharacterExtra() const;
+ int SetTextCharacterExtra(int nCharExtra);
+
+// Advanced Drawing
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags);
+ BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState);
+#endif
+#endif
+
+// Scrolling Functions
+ BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate);
+
+// Font Functions
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ DWORD SetMapperFlags(DWORD dwFlag);
+ CSize GetAspectRatioFilter() const;
+
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
+ DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
+#ifndef _MAC
+ int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
+#endif
+ UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
+#ifndef _MAC
+ DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
+#endif
+
+#ifndef _MAC
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const;
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const;
+#endif
+
+// Printer/Device Escape Functions
+ virtual int Escape(int nEscape, int nCount,
+ LPCSTR lpszInData, LPVOID lpOutData);
+#ifndef _MAC
+ int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData);
+ int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
+#endif
+
+ // Escape helpers
+ int StartDoc(LPCTSTR lpszDocName); // old Win3.0 version
+ int StartDoc(LPDOCINFO lpDocInfo);
+ int StartPage();
+ int EndPage();
+ int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
+ int AbortDoc();
+ int EndDoc();
+
+// MetaFile Functions
+ BOOL PlayMetaFile(HMETAFILE hMF);
+#ifndef _MAC
+ BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
+ BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
+ // can be used for enhanced metafiles only
+
+// Path Functions
+ BOOL AbortPath();
+ BOOL BeginPath();
+ BOOL CloseFigure();
+ BOOL EndPath();
+ BOOL FillPath();
+ BOOL FlattenPath();
+ BOOL StrokeAndFillPath();
+ BOOL StrokePath();
+ BOOL WidenPath();
+ float GetMiterLimit() const;
+ BOOL SetMiterLimit(float fMiterLimit);
+ int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
+ BOOL SelectClipPath(int nMode);
+#endif
+
+// Misc Helper Functions
+ static CBrush* PASCAL GetHalftoneBrush();
+ void DrawDragRect(LPCRECT lpRect, SIZE size,
+ LPCRECT lpRectLast, SIZE sizeLast,
+ CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
+ void FillSolidRect(LPCRECT lpRect, COLORREF clr);
+ void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
+ void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
+ void Draw3dRect(int x, int y, int cx, int cy,
+ COLORREF clrTopLeft, COLORREF clrBottomRight);
+
+// Implementation
+public:
+ virtual ~CDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // advanced use and implementation
+ BOOL m_bPrinting;
+ HGDIOBJ SelectObject(HGDIOBJ); // do not use for regions
+
+protected:
+ // used for implementation of non-virtual SelectObject calls
+ static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDC Helpers
+
+class CPaintDC : public CDC
+{
+ DECLARE_DYNAMIC(CPaintDC)
+
+// Constructors
+public:
+ CPaintDC(CWnd* pWnd); // BeginPaint
+
+// Attributes
+protected:
+ HWND m_hWnd;
+public:
+ PAINTSTRUCT m_ps; // actual paint struct!
+
+// Implementation
+public:
+ virtual ~CPaintDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CClientDC : public CDC
+{
+ DECLARE_DYNAMIC(CClientDC)
+
+// Constructors
+public:
+ CClientDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CClientDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CWindowDC : public CDC
+{
+ DECLARE_DYNAMIC(CWindowDC)
+
+// Constructors
+public:
+ CWindowDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CWindowDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMenu
+
+class CMenu : public CObject
+{
+ DECLARE_DYNCREATE(CMenu)
+public:
+
+// Constructors
+ CMenu();
+
+ BOOL CreateMenu();
+ BOOL CreatePopupMenu();
+ BOOL LoadMenu(LPCTSTR lpszResourceName);
+ BOOL LoadMenu(UINT nIDResource);
+ BOOL LoadMenuIndirect(const void* lpMenuTemplate);
+ BOOL DestroyMenu();
+
+// Attributes
+ HMENU m_hMenu; // must be first data member
+ HMENU GetSafeHmenu() const;
+ operator HMENU() const;
+
+ static CMenu* PASCAL FromHandle(HMENU hMenu);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HMENU hMenu);
+ HMENU Detach();
+
+// CMenu Operations
+ BOOL DeleteMenu(UINT nPosition, UINT nFlags);
+ BOOL TrackPopupMenu(UINT nFlags, int x, int y,
+ CWnd* pWnd, LPCRECT lpRect = 0);
+
+// CMenuItem Operations
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
+ UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
+ UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
+ UINT GetMenuItemCount() const;
+ UINT GetMenuItemID(int nPos) const;
+ UINT GetMenuState(UINT nID, UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
+ UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const;
+ CMenu* GetSubMenu(int nPos) const;
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL RemoveMenu(UINT nPosition, UINT nFlags);
+ BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
+#ifndef _MAC
+ BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags);
+#endif
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
+ DWORD GetMenuContextHelpId() const;
+#endif
+
+// Overridables (must override draw and measure for owner-draw menu items)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+public:
+ virtual ~CMenu();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Window message map handling
+
+struct AFX_MSGMAP_ENTRY; // declared below after CWnd
+
+struct AFX_MSGMAP
+{
+#ifdef _AFXDLL
+ const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_MSGMAP* pBaseMap;
+#endif
+ const AFX_MSGMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#else
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
+ { return &baseClass::messageMap; } \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#else
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#endif
+
+#define END_MESSAGE_MAP() \
+ {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
+ }; \
+
+// Message map signature values and macros in separate header
+#include <afxmsg_.h>
+
+/////////////////////////////////////////////////////////////////////////////
+// Dialog data exchange (DDX_) and validation (DDV_)
+
+// CDataExchange - for data exchange and validation
+class CDataExchange
+{
+// Attributes
+public:
+ BOOL m_bSaveAndValidate; // TRUE => save and validate data
+ CWnd* m_pDlgWnd; // container usually a dialog
+
+// Operations (for implementors of DDX and DDV procs)
+ HWND PrepareCtrl(int nIDC); // return HWND of control
+ HWND PrepareEditCtrl(int nIDC); // return HWND of control
+ void Fail(); // will throw exception
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ CWnd* PrepareOleCtrl(int nIDC); // for OLE controls in dialog
+#endif
+
+// Implementation
+ CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
+
+ HWND m_hWndLastControl; // last control used (for validation)
+ BOOL m_bEditLastControl; // last control was an edit item
+};
+
+#include <afxdd_.h> // standard DDX_ and DDV_ routines
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE types
+
+typedef LONG HRESULT;
+
+struct IUnknown;
+typedef IUnknown* LPUNKNOWN;
+
+struct IDispatch;
+typedef IDispatch* LPDISPATCH;
+
+struct IConnectionPoint;
+typedef IConnectionPoint* LPCONNECTIONPOINT;
+
+struct IEnumOLEVERB;
+typedef IEnumOLEVERB* LPENUMOLEVERB;
+
+typedef struct _GUID GUID;
+typedef GUID IID;
+typedef GUID CLSID;
+#ifndef _REFCLSID_DEFINED
+#define REFCLSID const CLSID &
+#endif
+
+typedef long DISPID;
+typedef unsigned short VARTYPE;
+typedef long SCODE;
+
+#if defined(WIN32) && !defined(OLE2ANSI)
+typedef WCHAR OLECHAR;
+#else
+typedef char OLECHAR;
+#endif
+typedef OLECHAR* BSTR;
+
+struct tagDISPPARAMS;
+typedef tagDISPPARAMS DISPPARAMS;
+
+struct tagVARIANT;
+typedef tagVARIANT VARIANT;
+
+struct ITypeInfo;
+typedef ITypeInfo* LPTYPEINFO;
+
+struct ITypeLib;
+typedef ITypeLib* LPTYPELIB;
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget
+
+// private structures
+struct AFX_CMDHANDLERINFO; // info about where the command is handled
+struct AFX_EVENT; // info about an event
+class CTypeLibCache; // cache for OLE type libraries
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE interface map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_INTERFACEMAP_ENTRY
+{
+ const void* piid; // the interface id (IID) (NULL for aggregate)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_INTERFACEMAP
+{
+#ifdef _AFXDLL
+ const AFX_INTERFACEMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_INTERFACEMAP* pBaseMap;
+#endif
+ const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class
+};
+
+
+#ifdef _AFXDLL
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#else
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dispatch map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_DISPMAP_ENTRY;
+
+struct AFX_DISPMAP
+{
+#ifdef _AFXDLL
+ const AFX_DISPMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_DISPMAP* pBaseMap;
+#endif
+ const AFX_DISPMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+ DWORD* lpStockPropMask;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+ static DWORD _dwStockPropMask; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ static const AFX_DISPMAP* PASCAL _GetBaseDispatchMap(); \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#else
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+ static DWORD _dwStockPropMask; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Document Object command target handling
+
+#ifndef _AFX_NO_DOCOBJECT_SUPPORT
+
+struct AFX_OLECMDMAP_ENTRY
+{
+ const GUID* pguid; // id of the command group
+ ULONG cmdID; // OLECMD ID
+ UINT nID; // corresponding WM_COMMAND message ID
+};
+
+struct AFX_OLECMDMAP
+{
+#ifdef _AFXDLL
+ const AFX_OLECMDMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_OLECMDMAP* pBaseMap;
+#endif
+ const AFX_OLECMDMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_OLECMD_MAP() \
+private: \
+ static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
+protected: \
+ static AFX_DATA const AFX_OLECMDMAP commandMap; \
+ static const AFX_OLECMDMAP* PASCAL _GetBaseCommandMap(); \
+ virtual const AFX_OLECMDMAP* GetCommandMap() const; \
+
+#else
+#define DECLARE_OLECMD_MAP() \
+private: \
+ static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
+protected: \
+ static AFX_DATA const AFX_OLECMDMAP commandMap; \
+ virtual const AFX_OLECMDMAP* GetCommandMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_OLECMD_MAP(theClass, baseClass) \
+ const AFX_OLECMDMAP* PASCAL theClass::_GetBaseCommandMap() \
+ { return &baseClass::commandMap; } \
+ const AFX_OLECMDMAP* theClass::GetCommandMap() const \
+ { return &theClass::commandMap; } \
+ AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
+ { &theClass::_GetBaseCommandMap, &theClass::_commandEntries[0] }; \
+ const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
+ { \
+
+#else
+#define BEGIN_OLECMD_MAP(theClass, baseClass) \
+ const AFX_OLECMDMAP* theClass::GetCommandMap() const \
+ { return &theClass::commandMap; } \
+ AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
+ { &baseClass::commandMap, &theClass::_commandEntries[0] }; \
+ const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
+ { \
+
+#endif
+
+#define END_OLECMD_MAP() \
+ {NULL, 0, 0} \
+ }; \
+
+class COleCmdUI;
+
+#endif //!_AFX_NO_DOCOBJECT_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE event sink map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+struct AFX_EVENTSINKMAP_ENTRY;
+
+struct AFX_EVENTSINKMAP
+{
+#ifdef _AFXDLL
+ const AFX_EVENTSINKMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_EVENTSINKMAP* pBaseMap;
+#endif
+ const AFX_EVENTSINKMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ static const AFX_EVENTSINKMAP* PASCAL _GetBaseEventSinkMap(); \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#else
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE connection map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_CONNECTIONMAP_ENTRY
+{
+ const void* piid; // the interface id (IID)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_CONNECTIONMAP
+{
+#ifdef _AFXDLL
+ const AFX_CONNECTIONMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_CONNECTIONMAP* pBaseMap;
+#endif
+ const AFX_CONNECTIONMAP_ENTRY* pEntry; // map for this class
+};
+
+#ifdef _AFXDLL
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ static const AFX_CONNECTIONMAP* PASCAL _GetBaseConnectionMap(); \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#else
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget proper
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager; // forward reference (see ..\src\occimpl.h)
+#endif
+
+class CCmdTarget : public CObject
+{
+ DECLARE_DYNAMIC(CCmdTarget)
+protected:
+
+public:
+// Constructors
+ CCmdTarget();
+
+// Attributes
+ LPDISPATCH GetIDispatch(BOOL bAddRef);
+ // retrieve IDispatch part of CCmdTarget
+ static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
+ // map LPDISPATCH back to CCmdTarget* (inverse of GetIDispatch)
+ BOOL IsResultExpected();
+ // returns TRUE if automation function should return a value
+
+// Operations
+ void EnableAutomation();
+ // call in constructor to wire up IDispatch
+ void EnableConnections();
+ // call in constructor to wire up IConnectionPointContainer
+
+ void BeginWaitCursor();
+ void EndWaitCursor();
+ void RestoreWaitCursor(); // call after messagebox
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // dispatch OLE verbs through the message map
+ BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ BOOL DoOleVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+#endif
+
+// Overridables
+ // route and dispatch standard command message types
+ // (more sophisticated than OnCommand)
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called when last OLE reference is released
+ virtual void OnFinalRelease();
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called before dispatching to an automation handler function
+ virtual BOOL IsInvokeAllowed(DISPID dispid);
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // support for OLE type libraries
+ void EnableTypeLib();
+ HRESULT GetTypeInfoOfGuid(LCID lcid, const GUID& guid,
+ LPTYPEINFO* ppTypeInfo);
+ virtual BOOL GetDispatchIID(IID* pIID);
+ virtual UINT GetTypeInfoCount();
+ virtual CTypeLibCache* GetTypeLibCache();
+ virtual HRESULT GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib);
+#endif
+
+// Implementation
+public:
+ virtual ~CCmdTarget();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+#ifndef _AFX_NO_OLE_SUPPORT
+ void GetNotSupported();
+ void SetNotSupported();
+#endif
+
+protected:
+ friend class CView;
+
+ CView* GetRoutingView();
+ CFrameWnd* GetRoutingFrame();
+ DECLARE_MESSAGE_MAP() // base class - no {{ }} macros
+
+#ifndef _AFX_NO_DOCOBJECT_SUPPORT
+ DECLARE_OLECMD_MAP()
+ friend class COleCmdUI;
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ DECLARE_DISPATCH_MAP()
+ DECLARE_CONNECTION_MAP()
+ DECLARE_INTERFACE_MAP()
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ DECLARE_EVENTSINK_MAP()
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE interface map implementation
+public:
+ // data used when CCmdTarget is made OLE aware
+ long m_dwRef;
+ LPUNKNOWN m_pOuterUnknown; // external controlling unknown if != NULL
+ DWORD m_xInnerUnknown; // place-holder for inner controlling unknown
+
+public:
+ // advanced operations
+ void EnableAggregation(); // call to enable aggregation
+ void ExternalDisconnect(); // forcibly disconnect
+ LPUNKNOWN GetControllingUnknown();
+ // get controlling IUnknown for aggregate creation
+
+ // these versions do not delegate to m_pOuterUnknown
+ DWORD InternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD InternalAddRef();
+ DWORD InternalRelease();
+ // these versions delegate to m_pOuterUnknown
+ DWORD ExternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD ExternalAddRef();
+ DWORD ExternalRelease();
+
+ // implementation helpers
+ LPUNKNOWN GetInterface(const void*);
+ LPUNKNOWN QueryAggregates(const void*);
+
+ // advanced overrideables for implementation
+ virtual BOOL OnCreateAggregates();
+ virtual LPUNKNOWN GetInterfaceHook(const void*);
+
+ // OLE automation implementation
+protected:
+ struct XDispatch
+ {
+ DWORD m_vtbl; // place-holder for IDispatch vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xDispatch;
+ BOOL m_bResultExpected;
+
+ // member variable-based properties
+ void GetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ VARIANT* pvarResult, UINT* puArgErr);
+ SCODE SetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ // DISPID to dispatch map lookup
+ static UINT PASCAL GetEntryCount(const AFX_DISPMAP* pDispMap);
+ const AFX_DISPMAP_ENTRY* PASCAL GetDispEntry(LONG memid);
+ static LONG PASCAL MemberIDFromName(const AFX_DISPMAP* pDispMap, LPCTSTR lpszName);
+
+ // helpers for member function calling implementation
+ static UINT PASCAL GetStackSize(const BYTE* pbParams, VARTYPE vtResult);
+#if defined(_PPC_) || defined(_MPPC_)
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars, UINT nSizeArgs);
+#else
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars);
+#endif
+ SCODE CallMemberFunc(const AFX_DISPMAP_ENTRY* pEntry, WORD wFlags,
+ VARIANT* pvarResult, DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ friend class COleDispatchImpl;
+
+#ifndef _AFX_NO_OCC_SUPPORT
+public:
+ // OLE event sink implementation
+ BOOL OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+protected:
+ const AFX_EVENTSINKMAP_ENTRY* PASCAL GetEventSinkEntry(UINT idCtrl,
+ AFX_EVENT* pEvent);
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE connection implementation
+ struct XConnPtContainer
+ {
+ DWORD m_vtbl; // place-holder for IConnectionPointContainer vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xConnPtContainer;
+
+#ifdef _AFXDLL
+ AFX_MODULE_STATE* m_pModuleState;
+ friend class CInnerUnknown;
+ friend UINT APIENTRY _AfxThreadEntry(void* pParam);
+#endif
+
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+ virtual LPCONNECTIONPOINT GetConnectionHook(const IID& iid);
+
+ friend class COleConnPtContainer;
+
+#endif //!_AFX_NO_OLE_SUPPORT
+};
+
+class CCmdUI // simple helper class
+{
+public:
+// Attributes
+ UINT m_nID;
+ UINT m_nIndex; // menu item or other index
+
+ // if a menu item
+ CMenu* m_pMenu; // NULL if not a menu
+ CMenu* m_pSubMenu; // sub containing menu item
+ // if a popup sub menu - ID is for first in popup
+
+ // if from some other window
+ CWnd* m_pOther; // NULL if a menu or not a CWnd
+
+// Operations to do in ON_UPDATE_COMMAND_UI
+ virtual void Enable(BOOL bOn = TRUE);
+ virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
+ virtual void SetRadio(BOOL bOn = TRUE);
+ virtual void SetText(LPCTSTR lpszText);
+
+// Advanced operation
+ void ContinueRouting();
+
+// Implementation
+ CCmdUI();
+ BOOL m_bEnableChanged;
+ BOOL m_bContinueRouting;
+ UINT m_nIndexMax; // last + 1 for iterating m_nIndex
+
+ CMenu* m_pParentMenu; // NULL if parent menu not easily determined
+ // (probably a secondary popup menu)
+
+ BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+};
+
+// special CCmdUI derived classes are used for other UI paradigms
+// like toolbar buttons and status indicators
+
+// pointer to afx_msg member function
+#ifndef AFX_MSG_CALL
+#define AFX_MSG_CALL
+#endif
+typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
+
+enum AFX_DISPMAP_FLAGS
+{
+ afxDispCustom = 0,
+ afxDispStock = 1
+};
+
+struct AFX_DISPMAP_ENTRY
+{
+ LPCTSTR lpszName; // member/property name
+ long lDispID; // DISPID (may be DISPID_UNKNOWN)
+ LPCSTR lpszParams; // member parameter description
+ WORD vt; // return value type / or type of property
+ AFX_PMSG pfn; // normal member On<membercall> or, OnGet<property>
+ AFX_PMSG pfnSet; // special member for OnSet<property>
+ size_t nPropOffset; // property offset
+ AFX_DISPMAP_FLAGS flags;// flags (e.g. stock/custom)
+};
+
+struct AFX_EVENTSINKMAP_ENTRY
+{
+ AFX_DISPMAP_ENTRY dispEntry;
+ UINT nCtrlIDFirst;
+ UINT nCtrlIDLast;
+};
+
+// DSC Sink state/reason codes passed to MFC user event handlers
+enum DSCSTATE
+{
+ dscNoState = 0,
+ dscOKToDo,
+ dscCancelled,
+ dscSyncBefore,
+ dscAboutToDo,
+ dscFailedToDo,
+ dscSyncAfter,
+ dscDidEvent
+};
+
+enum DSCREASON
+{
+ dscNoReason = 0,
+ dscClose,
+ dscCommit,
+ dscDelete,
+ dscEdit,
+ dscInsert,
+ dscModify,
+ dscMove
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd implementation
+
+// structures (see afxext.h)
+struct CCreateContext; // context for creating things
+struct CPrintInfo; // print preview customization info
+
+struct AFX_MSGMAP_ENTRY
+{
+ UINT nMessage; // windows message
+ UINT nCode; // control code or WM_NOTIFY code
+ UINT nID; // control ID (or 0 for windows messages)
+ UINT nLastID; // used for entries specifying a range of control id's
+ UINT nSig; // signature type (action) or pointer to message #
+ AFX_PMSG pfn; // routine to call (or special value)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd - a Microsoft Windows application window
+
+class COleDropTarget; // for more information see AFXOLE.H
+class COleControlContainer;
+class COleControlSite;
+
+// CWnd::m_nFlags (generic to CWnd)
+#define WF_TOOLTIPS 0x0001 // window is enabled for tooltips
+#define WF_TEMPHIDE 0x0002 // window is temporarily hidden
+#define WF_STAYDISABLED 0x0004 // window should stay disabled
+#define WF_MODALLOOP 0x0008 // currently in modal loop
+#define WF_CONTINUEMODAL 0x0010 // modal loop should continue running
+#define WF_OLECTLCONTAINER 0x0100 // some descendant is an OLE control
+
+// CWnd::m_nFlags (specific to CFrameWnd)
+#define WF_STAYACTIVE 0x0020 // look active even though not active
+#define WF_NOPOPMSG 0x0040 // ignore WM_POPMESSAGESTRING calls
+#define WF_MODALDISABLE 0x0080 // window is disabled
+#define WF_KEEPMINIACTIVE 0x0200 // stay activate even though you are deactivated
+
+// flags for CWnd::RunModalLoop
+#define MLF_NOIDLEMSG 0x0001 // don't send WM_ENTERIDLE messages
+#define MLF_NOKICKIDLE 0x0002 // don't send WM_KICKIDLE messages
+#define MLF_SHOWONIDLE 0x0004 // show window if not visible at idle time
+
+// extra MFC defined TTF_ flags for TOOLINFO::uFlags
+#define TTF_NOTBUTTON 0x80000000L // no status help on buttondown
+#define TTF_ALWAYSTIP 0x40000000L // always show the tip even if not active
+
+class CWnd : public CCmdTarget
+{
+ DECLARE_DYNCREATE(CWnd)
+protected:
+ static const MSG* PASCAL GetCurrentMessage();
+
+// Attributes
+public:
+ HWND m_hWnd; // must be first data member
+ operator HWND() const;
+
+ HWND GetSafeHwnd() const;
+ DWORD GetStyle() const;
+ DWORD GetExStyle() const;
+ BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+ BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+
+ CWnd* GetOwner() const;
+ void SetOwner(CWnd* pOwnerWnd);
+
+// Constructors and other creation
+ CWnd();
+
+ static CWnd* PASCAL FromHandle(HWND hWnd);
+ static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HWND hWndNew);
+ HWND Detach();
+
+ // subclassing/unsubclassing functions
+ virtual void PreSubclassWindow();
+ BOOL SubclassWindow(HWND hWnd);
+ BOOL SubclassDlgItem(UINT nID, CWnd* pParent);
+ HWND UnsubclassWindow();
+
+ // handling of RT_DLGINIT resource (extension to RT_DIALOG)
+ BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
+ BOOL ExecuteDlgInit(LPVOID lpResource);
+
+public:
+ // for child windows, views, panes etc
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ const RECT& rect,
+ CWnd* pParentWnd, UINT nID,
+ CCreateContext* pContext = NULL);
+
+ // advanced creation (allows access to extended styles)
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for wrapping OLE controls
+ BOOL CreateControl(REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ BOOL CreateControl(LPCTSTR pszClass, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ LPUNKNOWN GetControlUnknown();
+#endif
+
+ virtual BOOL DestroyWindow();
+
+ // special pre-creation and window rect adjustment hooks
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // Advanced: virtual AdjustWindowRect
+ enum AdjustType { adjustBorder = 0, adjustOutside = 1 };
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+// Window tree access
+ int GetDlgCtrlID() const;
+ int SetDlgCtrlID(int nID);
+ // get and set window ID, for child windows only
+ CWnd* GetDlgItem(int nID) const;
+ // get immediate child with given ID
+ void GetDlgItem(int nID, HWND* phWnd) const;
+ // as above, but returns HWND
+ CWnd* GetDescendantWindow(int nID, BOOL bOnlyPerm = FALSE) const;
+ // like GetDlgItem but recursive
+ void SendMessageToDescendants(UINT message, WPARAM wParam = 0,
+ LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);
+ CFrameWnd* GetParentFrame() const;
+ CWnd* GetTopLevelParent() const;
+ CWnd* GetTopLevelOwner() const;
+ CWnd* GetParentOwner() const;
+ CFrameWnd* GetTopLevelFrame() const;
+ static CWnd* PASCAL GetSafeOwner(CWnd* pParent = NULL, HWND* pWndTop = NULL);
+
+// Message Functions
+ LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+ BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+
+#ifndef _MAC
+ BOOL SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam);
+#endif
+ BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
+
+// Message processing for modeless dialog-like windows
+ BOOL IsDialogMessage(LPMSG lpMsg);
+
+// Window Text Functions
+ void SetWindowText(LPCTSTR lpszString);
+ int GetWindowText(LPTSTR lpszStringBuf, int nMaxCount) const;
+ void GetWindowText(CString& rString) const;
+ int GetWindowTextLength() const;
+ void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
+ CFont* GetFont() const;
+
+// CMenu Functions - non-Child windows only
+ CMenu* GetMenu() const;
+ BOOL SetMenu(CMenu* pMenu);
+ void DrawMenuBar();
+ CMenu* GetSystemMenu(BOOL bRevert) const;
+ BOOL HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite);
+
+// Window Size and Position Functions
+ BOOL IsIconic() const;
+ BOOL IsZoomed() const;
+ void MoveWindow(int x, int y, int nWidth, int nHeight,
+ BOOL bRepaint = TRUE);
+ void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
+
+ static AFX_DATA const CWnd wndTop; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndBottom; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndTopMost; // SetWindowPos pWndInsertAfter
+ static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter
+
+ BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
+ int cx, int cy, UINT nFlags);
+#ifndef _MAC
+ UINT ArrangeIconicWindows();
+#endif
+ void BringWindowToTop();
+ void GetWindowRect(LPRECT lpRect) const;
+ void GetClientRect(LPRECT lpRect) const;
+
+ BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
+ BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
+
+// Coordinate Mapping Functions
+ void ClientToScreen(LPPOINT lpPoint) const;
+ void ClientToScreen(LPRECT lpRect) const;
+ void ScreenToClient(LPPOINT lpPoint) const;
+ void ScreenToClient(LPRECT lpRect) const;
+ void MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const;
+ void MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const;
+
+// Update/Painting Functions
+ CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
+ void EndPaint(LPPAINTSTRUCT lpPaint);
+ CDC* GetDC();
+ CDC* GetWindowDC();
+ int ReleaseDC(CDC* pDC);
+ void Print(CDC* pDC, DWORD dwFlags) const;
+ void PrintClient(CDC* pDC, DWORD dwFlags) const;
+
+ void UpdateWindow();
+ void SetRedraw(BOOL bRedraw = TRUE);
+ BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE);
+ int GetUpdateRgn(CRgn* pRgn, BOOL bErase = FALSE);
+ void Invalidate(BOOL bErase = TRUE);
+ void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ValidateRect(LPCRECT lpRect);
+ void ValidateRgn(CRgn* pRgn);
+ BOOL ShowWindow(int nCmdShow);
+ BOOL IsWindowVisible() const;
+ void ShowOwnedPopups(BOOL bShow = TRUE);
+
+ CDC* GetDCEx(CRgn* prgnClip, DWORD flags);
+#ifndef _MAC
+ BOOL LockWindowUpdate(); // for backward compatibility
+ void UnlockWindowUpdate();
+#endif
+ BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL,
+ CRgn* prgnUpdate = NULL,
+ UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
+ BOOL EnableScrollBar(int nSBFlags, UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+// Timer Functions
+ UINT SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD));
+ BOOL KillTimer(int nIDEvent);
+
+// ToolTip Functions
+ BOOL EnableToolTips(BOOL bEnable = TRUE);
+ static void PASCAL CancelToolTips(BOOL bKeys = FALSE);
+ void FilterToolTipMessage(MSG* pMsg);
+
+ // for command hit testing (used for automatic tooltips)
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+
+// Window State Functions
+ BOOL IsWindowEnabled() const;
+ BOOL EnableWindow(BOOL bEnable = TRUE);
+
+ // the active window applies only to top-level (frame windows)
+ static CWnd* PASCAL GetActiveWindow();
+ CWnd* SetActiveWindow();
+
+ // the foreground window applies only to top-level windows (frame windows)
+ BOOL SetForegroundWindow();
+ static CWnd* PASCAL GetForegroundWindow();
+
+ // capture and focus apply to all windows
+ static CWnd* PASCAL GetCapture();
+ CWnd* SetCapture();
+ static CWnd* PASCAL GetFocus();
+ CWnd* SetFocus();
+
+ static CWnd* PASCAL GetDesktopWindow();
+
+// Obsolete and non-portable APIs - not recommended for new code
+#ifndef _MAC
+ void CloseWindow();
+ BOOL OpenIcon();
+#endif
+
+// Dialog-Box Item Functions
+// (NOTE: Dialog-Box Items/Controls are not necessarily in dialog boxes!)
+ void CheckDlgButton(int nIDButton, UINT nCheck);
+ void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton);
+ int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
+#ifndef _MAC
+ int DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType);
+ int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType);
+ BOOL DlgDirSelect(LPTSTR lpString, int nIDListBox);
+ BOOL DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox);
+#endif
+
+ UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
+ BOOL bSigned = TRUE) const;
+ int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const;
+ int GetDlgItemText(int nID, CString& rString) const;
+ CWnd* GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+
+ CWnd* GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+ UINT IsDlgButtonChecked(int nIDButton) const;
+ LRESULT SendDlgItemMessage(int nID, UINT message,
+ WPARAM wParam = 0, LPARAM lParam = 0);
+ void SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE);
+ void SetDlgItemText(int nID, LPCTSTR lpszString);
+
+// Scrolling Functions
+ int GetScrollPos(int nBar) const;
+ void GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const;
+ void ScrollWindow(int xAmount, int yAmount,
+ LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
+ void SetScrollRange(int nBar, int nMinPos, int nMaxPos,
+ BOOL bRedraw = TRUE);
+ void ShowScrollBar(UINT nBar, BOOL bShow = TRUE);
+ void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ // return sibling scrollbar control (or NULL if none)
+
+ int ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);
+ BOOL SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo,
+ BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit(int nBar);
+
+// Window Access Functions
+ CWnd* ChildWindowFromPoint(POINT point) const;
+#ifndef _MAC
+ CWnd* ChildWindowFromPoint(POINT point, UINT nFlags) const;
+#endif
+ static CWnd* PASCAL FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName);
+ CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
+ CWnd* GetTopWindow() const;
+
+ CWnd* GetWindow(UINT nCmd) const;
+ CWnd* GetLastActivePopup() const;
+
+ BOOL IsChild(const CWnd* pWnd) const;
+ CWnd* GetParent() const;
+ CWnd* SetParent(CWnd* pWndNewParent);
+ static CWnd* PASCAL WindowFromPoint(POINT point);
+
+// Alert Functions
+ BOOL FlashWindow(BOOL bInvert);
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+
+// Clipboard Functions
+ BOOL ChangeClipboardChain(HWND hWndNext);
+ HWND SetClipboardViewer();
+ BOOL OpenClipboard();
+ static CWnd* PASCAL GetClipboardOwner();
+ static CWnd* PASCAL GetClipboardViewer();
+ static CWnd* PASCAL GetOpenClipboardWindow();
+
+// Caret Functions
+ void CreateCaret(CBitmap* pBitmap);
+ void CreateSolidCaret(int nWidth, int nHeight);
+ void CreateGrayCaret(int nWidth, int nHeight);
+ static CPoint PASCAL GetCaretPos();
+ static void PASCAL SetCaretPos(POINT point);
+ void HideCaret();
+ void ShowCaret();
+
+// Shell Interaction Functions
+ void DragAcceptFiles(BOOL bAccept = TRUE);
+
+// Icon Functions
+ HICON SetIcon(HICON hIcon, BOOL bBigIcon);
+ HICON GetIcon(BOOL bBigIcon) const;
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetWindowContextHelpId(DWORD dwContextHelpId);
+ DWORD GetWindowContextHelpId() const;
+
+#endif
+
+// Dialog Data support
+public:
+ BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
+ // data wnd must be same type as this
+
+// Help Command Handlers
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Layout and other functions
+public:
+ enum RepositionFlags
+ { reposDefault = 0, reposQuery = 1, reposExtra = 2 };
+ void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver,
+ UINT nFlag = reposDefault, LPRECT lpRectParam = NULL,
+ LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
+
+ // dialog support
+ void UpdateDialogControls(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+ void CenterWindow(CWnd* pAlternateOwner = NULL);
+ int RunModalLoop(DWORD dwFlags = 0);
+ virtual BOOL ContinueModal();
+ virtual void EndModalLoop(int nResult);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+// OLE control wrapper functions
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+ IUnknown* GetDSCCursor();
+ void BindDefaultProperty(DISPID dwDispID, VARTYPE vtProp, LPCTSTR szFieldName, CWnd* pDSCWnd);
+ void BindProperty(DISPID dwDispId, CWnd* pWndDSC);
+#endif
+
+// Window-Management message handler member functions
+protected:
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM, LPARAM);
+ afx_msg void OnCancelMode();
+ afx_msg void OnChildActivate();
+ afx_msg void OnClose();
+ afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ afx_msg void OnDestroy();
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
+ afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);
+ afx_msg void OnIconEraseBkgnd(CDC* pDC);
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnPaint();
+ afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+ afx_msg HCURSOR OnQueryDragIcon();
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg BOOL OnQueryNewPalette();
+ afx_msg BOOL OnQueryOpen();
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnTCard(UINT idAction, DWORD dwActionData);
+ afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
+ afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
+
+// Nonclient-Area message handler member functions
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnNcDestroy();
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcRButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
+
+// System message handler member functions
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
+ afx_msg void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnCompacting(UINT nCpuTime);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ afx_msg void OnFontChange();
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg void OnSpoolerStatus(UINT nStatus, UINT nJobs);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnTimeChange();
+ afx_msg void OnWinIniChange(LPCTSTR lpszSection);
+
+// Input message handler member functions
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnTimer(UINT nIDEvent);
+
+// Initialization message handler member functions
+ afx_msg void OnInitMenu(CMenu* pMenu);
+ afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
+
+// Clipboard message handler member functions
+ afx_msg void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString);
+ afx_msg void OnChangeCbChain(HWND hWndRemove, HWND hWndAfter);
+ afx_msg void OnDestroyClipboard();
+ afx_msg void OnDrawClipboard();
+ afx_msg void OnHScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+ afx_msg void OnPaintClipboard(CWnd* pClipAppWnd, HGLOBAL hPaintStruct);
+ afx_msg void OnRenderAllFormats();
+ afx_msg void OnRenderFormat(UINT nFormat);
+ afx_msg void OnSizeClipboard(CWnd* pClipAppWnd, HGLOBAL hRect);
+ afx_msg void OnVScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+
+// Control message handler member functions
+ afx_msg int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ afx_msg void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
+ afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
+
+// MDI message handler member functions
+ afx_msg void OnMDIActivate(BOOL bActivate,
+ CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+
+// Menu loop notification messages
+ afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
+ afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
+
+// Win4 messages
+ afx_msg void OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnStyleChanging(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
+ afx_msg void OnMoving(UINT nSide, LPRECT lpRect);
+ afx_msg void OnCaptureChanged(CWnd* pWnd);
+ afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
+
+// Overridables and other helpers (for implementation of derived classes)
+protected:
+ // for deriving from a standard control
+ virtual WNDPROC* GetSuperWndProcAddr();
+
+ // for dialog data exchange and validation
+ virtual void DoDataExchange(CDataExchange* pDX);
+
+public:
+ // for modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+
+ // for translating Windows messages in main message pump
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for ambient properties exposed to contained OLE controls
+ virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
+ VARIANT* pvar);
+#endif
+
+protected:
+ // for processing Windows messages
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ // for handling default processing
+ LRESULT Default();
+ virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // for custom cleanup after WM_NCDESTROY
+ virtual void PostNcDestroy();
+
+ // for notifications from parent
+ virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ // return TRUE if parent should not process this message
+ BOOL ReflectChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ static BOOL PASCAL ReflectLastMsg(HWND hWndChild, LRESULT* pResult = NULL);
+
+// Implementation
+public:
+ virtual ~CWnd();
+ virtual BOOL CheckAutoCenter();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ // 3D support (these APIs will be obsolete with next version of Windows)
+ BOOL SubclassCtl3d(int nControlType = -1);
+ // see CTL3D.H for list of control types
+ BOOL SubclassDlg3d(DWORD dwMask = 0xFFFF /*CTL3D_ALL*/);
+ // see CTL3D.H for list of mask values
+ static BOOL PASCAL GrayCtlColor(HDC hDC, HWND hWnd, UINT nCtlColor,
+ HBRUSH hbrGray, COLORREF clrText);
+ HBRUSH OnGrayCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ // helper routines for implementation
+ BOOL HandleFloatingSysCommand(UINT nID, LPARAM lParam);
+ BOOL IsTopParentActive() const;
+ void ActivateTopParent();
+ static BOOL PASCAL WalkPreTranslateTree(HWND hWndStop, MSG* pMsg);
+ static CWnd* PASCAL GetDescendantWindow(HWND hWnd, int nID,
+ BOOL bOnlyPerm);
+ static void PASCAL SendMessageToDescendants(HWND hWnd, UINT message,
+ WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm);
+ virtual BOOL IsFrameWnd() const; // IsKindOf(RUNTIME_CLASS(CFrameWnd)))
+ virtual void OnFinalRelease();
+ BOOL PreTranslateInput(LPMSG lpMsg);
+ static BOOL PASCAL ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static BOOL PASCAL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static void PASCAL _FilterToolTipMessage(MSG* pMsg, CWnd* pWnd);
+
+public:
+ HWND m_hWndOwner; // implementation of SetOwner and GetOwner
+ UINT m_nFlags; // see WF_ flags above
+
+protected:
+ WNDPROC m_pfnSuper; // for subclassing of controls
+ static const UINT m_nMsgDragList;
+ int m_nModalResult; // for return values from CWnd::RunModalLoop
+
+ COleDropTarget* m_pDropTarget; // for automatic cleanup of drop target
+ friend class COleDropTarget;
+ friend class CFrameWnd;
+
+ // for creating dialogs and dialog-like windows
+ BOOL CreateDlg(LPCTSTR lpszTemplateName, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ COleControlContainer* m_pCtrlCont; // for containing OLE controls
+ COleControlSite* m_pCtrlSite; // for wrapping an OLE control
+ friend class COccManager;
+ friend class COleControlSite;
+ friend class COleControlContainer;
+ BOOL InitControlContainer();
+ virtual BOOL SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ void AttachControlSite(CHandleMap* pMap);
+public:
+ void AttachControlSite(CWnd* pWndParent);
+#endif
+
+protected:
+ // implementation of message dispatch/hooking
+ friend LRESULT CALLBACK _AfxSendMsgHook(int, WPARAM, LPARAM);
+ friend void AFXAPI _AfxStandardSubclass(HWND);
+ friend LRESULT CALLBACK _AfxCbtFilterHook(int, WPARAM, LPARAM);
+ friend LRESULT AFXAPI AfxCallWndProc(CWnd*, HWND, UINT, WPARAM, LPARAM);
+
+ // standard message implementation
+ afx_msg LRESULT OnNTCtlColor(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQuery3dControls(WPARAM, LPARAM);
+ afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM);
+#ifdef _MAC
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+#endif
+
+ afx_msg LRESULT OnDragList(WPARAM, LPARAM);
+
+ //{{AFX_MSG(CWnd)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+private:
+ CWnd(HWND hWnd); // just for special initialization
+};
+
+// helpers for registering your own WNDCLASSes
+LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
+ HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
+
+BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
+
+// Implementation
+LRESULT CALLBACK AfxWndProc(HWND, UINT, WPARAM, LPARAM);
+
+WNDPROC AFXAPI AfxGetAfxWndProc();
+#define AfxWndProc (*AfxGetAfxWndProc())
+
+typedef void (AFX_MSG_CALL CWnd::*AFX_PMSGW)(void);
+ // like 'AFX_PMSG' but for CWnd derived classes only
+
+typedef void (AFX_MSG_CALL CWinThread::*AFX_PMSGT)(void);
+ // like 'AFX_PMSG' but for CWinThread-derived classes only
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialog - a modal or modeless dialog
+
+class CDialog : public CWnd
+{
+ DECLARE_DYNAMIC(CDialog)
+
+ // Modeless construct
+public:
+ CDialog();
+
+ BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+ // Modal construct
+public:
+ CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL InitModalIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+// Attributes
+public:
+ void MapDialogRect(LPRECT lpRect) const;
+ void SetHelpID(UINT nIDR);
+
+// Operations
+public:
+ // modal processing
+ virtual int DoModal();
+
+ // support for passing on tab control - use 'PostMessage' if needed
+ void NextDlgCtrl() const;
+ void PrevDlgCtrl() const;
+ void GotoDlgCtrl(CWnd* pWndCtrl);
+
+ // default button access
+ void SetDefID(UINT nID);
+ DWORD GetDefID() const;
+
+ // termination
+ void EndDialog(int nResult);
+
+// Overridables (special message map entries)
+ virtual BOOL OnInitDialog();
+ virtual void OnSetFont(CFont* pFont);
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+// Implementation
+public:
+ virtual ~CDialog();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL CheckAutoCenter();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+
+ // parameters for 'DoModal'
+ LPCTSTR m_lpszTemplateName; // name or MAKEINTRESOURCE
+ HGLOBAL m_hDialogTemplate; // indirect (m_lpDialogTemplate == NULL)
+ LPCDLGTEMPLATE m_lpDialogTemplate; // indirect if (m_lpszTemplateName == NULL)
+ void* m_lpDialogInit; // DLGINIT resource data
+ CWnd* m_pParentWnd; // parent/owner window
+ HWND m_hWndTop; // top level parent window (may be disabled)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+#endif
+ virtual void PreInitDialog();
+
+ // implementation helpers
+ HWND PreModal();
+ void PostModal();
+
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ void* lpDialogInit, HINSTANCE hInst);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+protected:
+ //{{AFX_MSG(CDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg LRESULT HandleSetFont(WPARAM, LPARAM);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSysColorChange();
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+// all CModalDialog functionality is now in CDialog
+#define CModalDialog CDialog
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Windows controls
+
+class CStatic : public CWnd
+{
+ DECLARE_DYNAMIC(CStatic)
+
+// Constructors
+public:
+ CStatic();
+ BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
+
+// Operations
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+
+#if (WINVER >= 0x400)
+ HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
+ HENHMETAFILE GetEnhMetaFile() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Implementation
+public:
+ virtual ~CStatic();
+};
+
+class CButton : public CWnd
+{
+ DECLARE_DYNAMIC(CButton)
+
+// Constructors
+public:
+ CButton();
+ BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ UINT GetState() const;
+ void SetState(BOOL bHighlight);
+ int GetCheck() const;
+ void SetCheck(int nCheck);
+ UINT GetButtonStyle() const;
+ void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);
+
+#if (WINVER >= 0x400)
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Overridables (for owner draw only)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CButton();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CListBox : public CWnd
+{
+ DECLARE_DYNAMIC(CListBox)
+
+// Constructors
+public:
+ CListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+
+ // for entire listbox
+ int GetCount() const;
+ int GetHorizontalExtent() const;
+ void SetHorizontalExtent(int cxExtent);
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+#if (WINVER >= 0x400)
+ int InitStorage(int nItems, UINT nBytes);
+ UINT ItemFromPoint(CPoint pt, BOOL& bOutside) const;
+#endif
+ // for single-selection listboxes
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+
+ // for multiple-selection listboxes
+ int GetSel(int nIndex) const; // also works for single-selection
+ int SetSel(int nIndex, BOOL bSelect = TRUE);
+ int GetSelCount() const;
+ int GetSelItems(int nMaxItems, LPINT rgIndex) const;
+ void SetAnchorIndex(int nIndex);
+ int GetAnchorIndex() const;
+
+ // for listbox items
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetItemRect(int nIndex, LPRECT lpRect) const;
+ int GetText(int nIndex, LPTSTR lpszBuffer) const;
+ void GetText(int nIndex, CString& rString) const;
+ int GetTextLen(int nIndex) const;
+
+ // Settable only attributes
+ void SetColumnWidth(int cxWidth);
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int GetCaretIndex() const;
+ int SetCaretIndex(int nIndex, BOOL bScroll = TRUE);
+
+// Operations
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszItem);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszItem);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszItem) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszItem);
+ int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ virtual int VKeyToItem(UINT nKey, UINT nIndex);
+ virtual int CharToItem(UINT nKey, UINT nIndex);
+
+// Implementation
+public:
+ virtual ~CListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CCheckListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CCheckListBox)
+
+// Constructors
+public:
+ CCheckListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetCheckStyle(UINT nStyle);
+ UINT GetCheckStyle();
+ void SetCheck(int nIndex, int nCheck);
+ int GetCheck(int nIndex);
+ void Enable(int nIndex, BOOL bEnabled = TRUE);
+ BOOL IsEnabled(int nIndex);
+
+ virtual CRect OnGetCheckPosition(CRect rectItem, CRect rectCheckBox);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+protected:
+ void PreDrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ void PreMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ int PreCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ void PreDeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+#ifdef _DEBUG
+ virtual void PreSubclassWindow();
+#endif
+
+ int CalcMinimumItemHeight();
+ void InvalidateCheck(int nIndex);
+ void InvalidateItem(int nIndex);
+ int CheckFromPoint(CPoint point, BOOL& bInCheck);
+
+ int m_cyText;
+ UINT m_nStyle;
+
+ // Message map functions
+protected:
+ //{{AFX_MSG(CCheckListBox)
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBAddString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindStringExact(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBInsertString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSelectString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CComboBox : public CWnd
+{
+ DECLARE_DYNAMIC(CComboBox)
+
+// Constructors
+public:
+ CComboBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ // for entire combo box
+ int GetCount() const;
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+// Win4
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ int InitStorage(int nItems, UINT nBytes);
+ void SetHorizontalExtent(UINT nExtent);
+ UINT GetHorizontalExtent() const;
+ int SetDroppedWidth(UINT nWidth);
+ int GetDroppedWidth() const;
+
+ // for edit control
+ DWORD GetEditSel() const;
+ BOOL LimitText(int nMaxChars);
+ BOOL SetEditSel(int nStartChar, int nEndChar);
+
+ // for combobox item
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetLBText(int nIndex, LPTSTR lpszText) const;
+ void GetLBText(int nIndex, CString& rString) const;
+ int GetLBTextLen(int nIndex) const;
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int SetExtendedUI(BOOL bExtended = TRUE);
+ BOOL GetExtendedUI() const;
+ void GetDroppedControlRect(LPRECT lprect) const;
+ BOOL GetDroppedState() const;
+
+// Operations
+ // for drop-down combo boxes
+ void ShowDropDown(BOOL bShowIt = TRUE);
+
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszString);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszString);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszString) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszString);
+
+ // Clipboard operations
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+// Implementation
+public:
+ virtual ~CComboBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CEdit : public CWnd
+{
+ DECLARE_DYNAMIC(CEdit)
+
+// Constructors
+public:
+ CEdit();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ DWORD GetSel() const;
+ void GetSel(int& nStartChar, int& nEndChar) const;
+ HLOCAL GetHandle() const;
+ void SetHandle(HLOCAL hBuffer);
+#if (WINVER >= 0x400)
+ void SetMargins(UINT nLeft, UINT nRight);
+ DWORD GetMargins() const;
+ void SetLimitText(UINT nMax);
+ UINT GetLimitText() const;
+ CPoint PosFromChar(UINT nChar) const;
+ int CharFromPos(CPoint pt) const;
+#endif
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+// Operations
+ void EmptyUndoBuffer();
+ BOOL FmtLines(BOOL bAddEOL);
+
+ void LimitText(int nChars = 0);
+ int LineFromChar(int nIndex = -1) const;
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
+ void SetPasswordChar(TCHAR ch);
+ void SetRect(LPCRECT lpRect);
+ void SetRectNP(LPCRECT lpRect);
+ void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
+ void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
+#ifndef _MAC
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+#endif
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+ TCHAR GetPasswordChar() const;
+
+// Implementation
+public:
+ virtual ~CEdit();
+};
+
+class CScrollBar : public CWnd
+{
+ DECLARE_DYNAMIC(CScrollBar)
+
+// Constructors
+public:
+ CScrollBar();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetScrollPos() const;
+ int SetScrollPos(int nPos, BOOL bRedraw = TRUE);
+ void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
+ void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
+ void ShowScrollBar(BOOL bShow = TRUE);
+
+ BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+ BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit();
+
+// Implementation
+public:
+ virtual ~CScrollBar();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFrameWnd - base class for SDI and other frame windows
+
+// Frame window styles
+#define FWS_ADDTOTITLE 0x00008000L // modify title based on content
+#define FWS_PREFIXTITLE 0x00004000L // show document name before app name
+#define FWS_SNAPTOBARS 0x00002000L // snap size to size of contained bars
+
+struct CPrintPreviewState; // forward reference (see afxext.h)
+class CControlBar; // forward reference (see afxext.h)
+
+class CDockBar; // forward reference (see afxpriv.h)
+class CMiniDockFrameWnd; // forward reference (see afxpriv.h)
+class CDockState; // forward reference (see afxpriv.h)
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class CFrameWnd : public CWnd
+{
+ DECLARE_DYNCREATE(CFrameWnd)
+
+// Constructors
+public:
+ static AFX_DATA const CRect rectDefault;
+ CFrameWnd();
+
+ BOOL LoadAccelTable(LPCTSTR lpszResourceName);
+ BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CWnd* pParentWnd = NULL, // != NULL for popups
+ LPCTSTR lpszMenuName = NULL,
+ DWORD dwExStyle = 0,
+ CCreateContext* pContext = NULL);
+
+ // dynamic creation - load frame and associated resources
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+ // special helper for view creation
+ CWnd* CreateView(CCreateContext* pContext, UINT nID = AFX_IDW_PANE_FIRST);
+
+// Attributes
+ virtual CDocument* GetActiveDocument();
+
+ // Active child view maintenance
+ CView* GetActiveView() const; // active view or NULL
+ void SetActiveView(CView* pViewNew, BOOL bNotify = TRUE);
+ // active view or NULL, bNotify == FALSE if focus should not be set
+
+ // Active frame (for frames within frames -- MDI)
+ virtual CFrameWnd* GetActiveFrame();
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ BOOL m_bAutoMenuEnable;
+ // TRUE => menu items without handlers will be disabled
+
+ BOOL IsTracking() const;
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ void InitialUpdateFrame(CDocument* pDoc, BOOL bMakeVisible);
+
+ // to set text of standard status bar
+ void SetMessageText(LPCTSTR lpszText);
+ void SetMessageText(UINT nID);
+
+ // control bar docking
+ void EnableDocking(DWORD dwDockStyle);
+ void DockControlBar(CControlBar* pBar, UINT nDockBarID = 0,
+ LPCRECT lpRect = NULL);
+ void FloatControlBar(CControlBar* pBar, CPoint point,
+ DWORD dwStyle = CBRS_ALIGN_TOP);
+ CControlBar* GetControlBar(UINT nID);
+
+ // frame window based modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+ BOOL InModalState() const;
+ void ShowOwnedWindows(BOOL bShow);
+
+ // saving and loading control bar state
+ void LoadBarState(LPCTSTR lpszProfileName);
+ void SaveBarState(LPCTSTR lpszProfileName) const;
+ void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);
+ void SetDockState(const CDockState& state);
+ void GetDockState(CDockState& state) const;
+
+// Overridables
+ virtual void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState);
+ virtual CWnd* GetMessageBar();
+
+ // border space negotiation
+ enum BorderCmd
+ { borderGet = 1, borderRequest = 2, borderSet = 3 };
+ virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);
+
+protected:
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+
+// Command Handlers
+public:
+ afx_msg void OnContextHelp(); // for Shift+F1 help
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+
+// Implementation
+public:
+ virtual ~CFrameWnd();
+ int m_nWindow; // general purpose window number - display as ":n"
+ // -1 => unknown, 0 => only window viewing document
+ // 1 => first of many windows viewing document, 2=> second
+
+ HMENU m_hMenuDefault; // default menu resource for this frame
+ HACCEL m_hAccelTable; // accelerator table
+ DWORD m_dwPromptContext; // current help prompt context for message box
+ BOOL m_bHelpMode; // if TRUE, then Shift+F1 help mode is active
+ CFrameWnd* m_pNextFrameWnd; // next CFrameWnd in app global list
+ CRect m_rectBorder; // for OLE border space negotiation
+ COleFrameHook* m_pNotifyHook;
+
+ CPtrList m_listControlBars; // array of all control bars that have this
+ // window as their dock site
+ int m_nShowDelay; // SW_ command for delay show/hide
+
+ CMiniDockFrameWnd* CreateFloatingFrame(DWORD dwStyle);
+ DWORD CanDock(CRect rect, DWORD dwDockStyle,
+ CDockBar** ppDockBar = NULL); // called by CDockContext
+ void AddControlBar(CControlBar *pBar);
+ void RemoveControlBar(CControlBar *pBar);
+ void DockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void NotifyFloatingWindows(DWORD dwFlags);
+ void DestroyDockBars();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+ UINT m_nIDTracking; // tracking command ID or string IDS
+ UINT m_nIDLastMessage; // last displayed message string IDS
+ CView* m_pViewActive; // current active view
+ BOOL (CALLBACK* m_lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ UINT m_cModalStack; // BeginModalState depth
+ HWND* m_phWndDisable; // windows disabled because of BeginModalState
+ HMENU m_hMenuAlt; // menu to update to (NULL means default)
+ CString m_strTitle; // default title (original)
+ BOOL m_bInRecalcLayout; // avoid recursion in RecalcLayout
+ CRuntimeClass* m_pFloatingFrameClass;
+ static const DWORD dwDockBarMap[4][2];
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL IsFrameWnd() const;
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual HACCEL GetDefaultAccelerator();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+ // idle update of frame user interface
+ enum IdleFlags
+ { idleMenu = 1, idleTitle = 2, idleNotify = 4, idleLayout = 8 };
+ UINT m_nIdleFlags; // set of bit flags for idle processing
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ void DelayUpdateFrameTitle();
+ void DelayRecalcLayout(BOOL bNotify = TRUE);
+
+ // for Shift+F1 help support
+ BOOL CanEnterHelpMode();
+ virtual void ExitHelpMode();
+
+protected:
+ // implementation helpers
+ LPCTSTR GetIconWndClass(DWORD dwDefaultStyle, UINT nIDResource);
+ void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual void PostNcDestroy(); // default to delete this.
+ int OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ void BringToTop(int nCmdShow);
+ // bring window to top for SW_ commands which affect z-order
+
+ // implementation helpers for Shift+F1 help mode
+ BOOL ProcessHelpMsg(MSG& msg, DWORD* pContext);
+ HWND SetHelpCapture(POINT point, BOOL* pbDescendant);
+
+ // CFrameWnd list management
+ void AddFrameWnd();
+ void RemoveFrameWnd();
+
+ friend class CWnd; // for access to m_bModalDisable
+
+ //{{AFX_MSG(CFrameWnd)
+ // Windows messages
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnClose();
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnPopMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnSysCommand(UINT nID, LONG lParam);
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg BOOL OnQueryNewPalette();
+ // standard commands
+ afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
+ afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
+ afx_msg void OnHelp();
+ afx_msg void OnUpdateContextHelp(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+protected:
+#ifndef _MAC
+ afx_msg LRESULT OnDDEInitiate(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDEExecute(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDETerminate(WPARAM wParam, LPARAM lParam);
+#endif
+#ifdef _MAC
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg void OnPaint();
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CWinApp;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// MDI Support
+
+class CMDIFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIFrameWnd)
+
+public:
+// Constructors
+ CMDIFrameWnd();
+
+// Operations
+ void MDIActivate(CWnd* pWndActivate);
+ CMDIChildWnd* MDIGetActive(BOOL* pbMaximized = NULL) const;
+ void MDIIconArrange();
+ void MDIMaximize(CWnd* pWnd);
+ void MDINext();
+ void MDIRestore(CWnd* pWnd);
+ CMenu* MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu);
+ void MDITile();
+ void MDICascade();
+ void MDITile(int nType);
+ void MDICascade(int nType);
+
+// Overridables
+ // MFC 1.0 backward compatible CreateClient hook (called by OnCreateClient)
+ virtual BOOL CreateClient(LPCREATESTRUCT lpCreateStruct, CMenu* pWindowMenu);
+ // customize if using an 'Window' menu with non-standard IDs
+ virtual HMENU GetWindowMenuPopup(HMENU hMenuBar);
+
+// Implementation
+public:
+ HWND m_hWndMDIClient; // MDI Client window handle
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ virtual CFrameWnd* GetActiveFrame();
+
+protected:
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+
+ //{{AFX_MSG(CMDIFrameWnd)
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnUpdateMDIWindowCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnMDIWindowCmd(UINT nID);
+ afx_msg void OnWindowNew();
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT, CMenu*);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CMDIChildWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIChildWnd)
+
+// Constructors
+public:
+ CMDIChildWnd();
+
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CMDIFrameWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+// Attributes
+ CMDIFrameWnd* GetMDIFrame();
+
+// Operations
+ void MDIDestroy();
+ void MDIActivate();
+ void MDIMaximize();
+ void MDIRestore();
+
+// Implementation
+protected:
+ HMENU m_hMenuShared; // menu when we are active
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
+ CWnd* pParentWnd, CCreateContext* pContext = NULL);
+ // 'pParentWnd' parameter is required for MDI Child
+ virtual BOOL DestroyWindow();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ virtual void OnUpdateFrameMenu(BOOL bActive, CWnd* pActivateWnd,
+ HMENU hMenuAlt);
+
+ BOOL m_bPseudoInactive; // TRUE if window is MDI active according to
+ // windows, but not according to MFC...
+
+protected:
+ virtual CWnd* GetMessageBar();
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ BOOL UpdateClientEdge(LPRECT lpRect = NULL);
+
+ //{{AFX_MSG(CMDIChildWnd)
+ afx_msg void OnMDIActivate(BOOL bActivate, CWnd*, CWnd*);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd
+
+// MiniFrame window styles
+#define MFS_SYNCACTIVE 0x00000100L // syncronize activation w/ parent
+#define MFS_4THICKFRAME 0x00000200L // thick frame all around (no tiles)
+#define MFS_THICKFRAME 0x00000400L // use instead of WS_THICKFRAME
+#define MFS_MOVEFRAME 0x00000800L // no sizing, just moving
+#define MFS_BLOCKSYSMENU 0x00001000L // block hit testing on system menu
+
+class CMiniFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniFrameWnd)
+
+// Constructors
+public:
+ CMiniFrameWnd();
+ BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+
+// Implementation
+public:
+ ~CMiniFrameWnd();
+
+ static void AFX_CDECL Initialize();
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpParams);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt );
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt );
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt );
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* pMMI);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQueryCenterWnd(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+public:
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ static void PASCAL CalcBorders(LPRECT lpClientRect,
+ DWORD dwStyle = WS_THICKFRAME | WS_CAPTION, DWORD dwExStyle = 0);
+
+protected:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+protected:
+ BOOL m_bSysTracking;
+ BOOL m_bInSys;
+ BOOL m_bActive;
+ CString m_strCaption;
+
+ void InvertSysMenu();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CView is the client area UI for a document
+
+class CPrintDialog; // forward reference (see afxdlgs.h)
+class CPreviewView; // forward reference (see afxpriv.h)
+class CSplitterWnd; // forward reference (see afxext.h)
+class COleServerDoc; // forward reference (see afxole.h)
+
+typedef DWORD DROPEFFECT;
+class COleDataObject; // forward reference (see afxole.h)
+
+class CView : public CWnd
+{
+ DECLARE_DYNAMIC(CView)
+
+// Constructors
+protected:
+ CView();
+
+// Attributes
+public:
+ CDocument* GetDocument() const;
+
+// Operations
+public:
+ // for standard printing setup (override OnPreparePrinting)
+ BOOL DoPreparePrinting(CPrintInfo* pInfo);
+
+// Overridables
+public:
+ virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE
+
+ // OLE scrolling support (used for drag/drop as well)
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ // OLE drag/drop support
+ virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual void OnDragLeave();
+ virtual BOOL OnDrop(COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual DROPEFFECT OnDragScroll(DWORD dwKeyState, CPoint point);
+
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ virtual void OnInitialUpdate(); // called first time after construct
+
+protected:
+ // Activation
+ virtual void OnActivateView(BOOL bActivate, CView* pActivateView,
+ CView* pDeactiveView);
+ virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);
+
+ // General drawing/updating
+ virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
+ virtual void OnDraw(CDC* pDC) = 0;
+
+ // Printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ // must override to enable printing and print preview
+
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
+
+ // Advanced: end print preview mode, move to point
+ virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,
+ CPreviewView* pView);
+
+// Implementation
+public:
+ virtual ~CView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+ // Advanced: for implementing custom print preview
+ BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,
+ CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);
+
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ static CSplitterWnd* PASCAL GetParentSplitter(
+ const CWnd* pWnd, BOOL bAnyState);
+
+protected:
+ CDocument* m_pDocument;
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ // friend classes that call protected CView overridables
+ friend class CDocument;
+ friend class CDocTemplate;
+ friend class CPreviewView;
+ friend class CFrameWnd;
+ friend class CMDIFrameWnd;
+ friend class CMDIChildWnd;
+ friend class CSplitterWnd;
+ friend class COleServerDoc;
+ friend class CDocObjectServer;
+
+ //{{AFX_MSG(CView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ // commands
+ afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSplitCmd(UINT nID);
+ afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnNextPaneCmd(UINT nID);
+
+ // not mapped commands - must be mapped in derived class
+ afx_msg void OnFilePrint();
+ afx_msg void OnFilePrintPreview();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CCtrlView allows almost any control to be a view
+
+class CCtrlView : public CView
+{
+ DECLARE_DYNCREATE(CCtrlView)
+
+public:
+ CCtrlView(LPCTSTR lpszClass, DWORD dwStyle);
+
+// Attributes
+protected:
+ CString m_strClass;
+ DWORD m_dwDefaultStyle;
+
+// Overrides
+ virtual void OnDraw(CDC*);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected:
+ afx_msg void OnPaint();
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CScrollView supports simple scrolling and scaling
+
+class CScrollView : public CView
+{
+ DECLARE_DYNAMIC(CScrollView)
+
+// Constructors
+protected:
+ CScrollView();
+
+public:
+ static AFX_DATA const SIZE sizeDefault;
+ // used to specify default calculated page and line sizes
+
+ // in logical units - call one of the following Set routines
+ void SetScaleToFitSize(SIZE sizeTotal);
+ void SetScrollSizes(int nMapMode, SIZE sizeTotal,
+ const SIZE& sizePage = sizeDefault,
+ const SIZE& sizeLine = sizeDefault);
+
+// Attributes
+public:
+ CPoint GetScrollPosition() const; // upper corner of scrolling
+ CSize GetTotalSize() const; // logical size
+
+ // for device units
+ CPoint GetDeviceScrollPosition() const;
+ void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
+ SIZE& sizePage, SIZE& sizeLine) const;
+
+// Operations
+public:
+ void ScrollToPosition(POINT pt); // set upper left position
+ void FillOutsideRect(CDC* pDC, CBrush* pBrush);
+ void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
+
+// Implementation
+protected:
+ int m_nMapMode;
+ CSize m_totalLog; // total size in logical units (no rounding)
+ CSize m_totalDev; // total size in device units
+ CSize m_pageDev; // per page scroll size in device units
+ CSize m_lineDev; // per line scroll size in device units
+
+ BOOL m_bCenter; // Center output if larger than total size
+ BOOL m_bInsideUpdate; // internal state for OnSize callback
+ void CenterOnPoint(CPoint ptCenter);
+ void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checking
+
+protected:
+ virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual
+
+ void UpdateBars(); // adjust scrollbars etc
+ BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
+ // size with no bars
+ void GetScrollBarSizes(CSize& sizeSb);
+ void GetScrollBarState(CSize sizeClient, CSize& needSb,
+ CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);
+
+public:
+ virtual ~CScrollView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ // scrolling implementation support for OLE
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ //{{AFX_MSG(CScrollView)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinThread
+
+typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
+
+class COleMessageFilter; // forward reference (see afxole.h)
+
+class CWinThread : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CWinThread)
+
+public:
+// Constructors
+ CWinThread();
+ BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
+ LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+// Attributes
+ CWnd* m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)
+ CWnd* m_pActiveWnd; // active main window (may not be m_pMainWnd)
+ BOOL m_bAutoDelete; // enables 'delete this' after thread termination
+
+ // only valid while running
+ HANDLE m_hThread; // this thread's HANDLE
+ operator HANDLE() const;
+ DWORD m_nThreadID; // this thread's ID
+
+ int GetThreadPriority();
+ BOOL SetThreadPriority(int nPriority);
+
+// Operations
+ DWORD SuspendThread();
+ DWORD ResumeThread();
+ BOOL PostThreadMessage(UINT message, WPARAM wParam, LPARAM lParam);
+
+// Overridables
+ // thread initialization
+ virtual BOOL InitInstance();
+
+ // running and idle processing
+ virtual int Run();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PumpMessage(); // low level message pump
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual BOOL IsIdleMessage(MSG* pMsg); // checks for special messages
+
+ // thread termination
+ virtual int ExitInstance(); // default will 'delete this'
+
+ // Advanced: exception handling
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+ // Advanced: handling messages sent to message filter hook
+ virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
+
+ // Advanced: virtual access to m_pMainWnd
+ virtual CWnd* GetMainWnd();
+
+// Implementation
+public:
+ virtual ~CWinThread();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ int m_nDisablePumpCount; // Diagnostic trap to detect illegal re-entrancy
+#endif
+ void CommonConstruct();
+ virtual void Delete();
+ // 'delete this' only if m_bAutoDelete == TRUE
+
+ // message pump for Run
+ MSG m_msgCur; // current message
+
+public:
+ // constructor used by implementation of AfxBeginThread
+ CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam);
+
+ // valid after construction
+ LPVOID m_pThreadParams; // generic parameters passed to starting function
+ AFX_THREADPROC m_pfnThreadProc;
+
+ // set after OLE is initialized
+ void (AFXAPI* m_lpfnOleTermOrFreeLib)(BOOL, BOOL);
+ COleMessageFilter* m_pMessageFilter;
+
+protected:
+ CPoint m_ptCursorLast; // last mouse position
+ UINT m_nMsgLast; // last mouse message
+ void DispatchThreadMessage(MSG* msg); // helper
+};
+
+// global helpers for threads
+
+CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+CWinThread* AFXAPI AfxGetThread();
+void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);
+
+void AFXAPI AfxInitThread();
+void AFXAPI AfxTermThread(HINSTANCE hInstTerm = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions for access to the one and only CWinApp
+
+#define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp
+#define afxCurrentInstanceHandle AfxGetModuleState()->m_hCurrentInstanceHandle
+#define afxCurrentResourceHandle AfxGetModuleState()->m_hCurrentResourceHandle
+#define afxCurrentAppName AfxGetModuleState()->m_lpszCurrentAppName
+#define afxContextIsDLL AfxGetModuleState()->m_bDLL
+#define afxRegisteredClasses AfxGetModuleState()->m_fRegisteredClasses
+
+#ifndef _AFX_NO_OCC_SUPPORT
+#define afxOccManager AfxGetModuleState()->m_pOccManager
+#endif
+
+// Advanced initialization: for overriding default WinMain
+BOOL AFXAPI AfxWinInit(HINSTANCE, HINSTANCE, LPTSTR, int);
+void AFXAPI AfxWinTerm();
+
+// Global Windows state data helper functions (inlines)
+CWinApp* AFXAPI AfxGetApp();
+CWnd* AFXAPI AfxGetMainWnd();
+HINSTANCE AFXAPI AfxGetInstanceHandle();
+HINSTANCE AFXAPI AfxGetResourceHandle();
+void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
+LPCTSTR AFXAPI AfxGetAppName();
+
+// Use instead of PostQuitMessage in OLE server applications
+void AFXAPI AfxPostQuitMessage(int nExitCode);
+
+// Use AfxFindResourceHandle to find resource in chain of extension DLLs
+#ifndef _AFXDLL
+#define AfxFindResourceHandle(lpszResource, lpszType) AfxGetResourceHandle()
+#else
+HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
+#endif
+
+class CRecentFileList; // forward reference (see afxpriv.h)
+
+// access to message filter in CWinApp
+COleMessageFilter* AFXAPI AfxOleGetMessageFilter();
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommandLineInfo
+
+class CCommandLineInfo : public CObject
+{
+public:
+ // Sets default values
+ CCommandLineInfo();
+
+ //REVIEW: Keep char* version on UNICODE for source-code backwards
+ //compatibility
+ virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
+#ifdef UNICODE
+ virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
+#endif
+
+ BOOL m_bShowSplash;
+ BOOL m_bRunEmbedded;
+ BOOL m_bRunAutomated;
+ enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE,
+ AppUnregister, FileNothing = -1 } m_nShellCommand;
+
+ // not valid for FileNew
+ CString m_strFileName;
+
+ // valid only for FilePrintTo
+ CString m_strPrinterName;
+ CString m_strDriverName;
+ CString m_strPortName;
+
+ ~CCommandLineInfo();
+// Implementation
+protected:
+ void ParseParamFlag(const char* pszParam);
+ void ParseParamNotFlag(const TCHAR* pszParam);
+#ifdef UNICODE
+ void ParseParamNotFlag(const char* pszParam);
+#endif
+ void ParseLast(BOOL bLast);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDocManager
+
+class CDocManager : public CObject
+{
+ DECLARE_DYNAMIC(CDocManager)
+public:
+
+// Constructor
+ CDocManager();
+
+ //Document functions
+ virtual void AddDocTemplate(CDocTemplate* pTemplate);
+ virtual POSITION GetFirstDocTemplatePosition() const;
+ virtual CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+ virtual void RegisterShellFileTypes(BOOL bCompat);
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual BOOL SaveAllModified(); // save before exit
+ virtual void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+ virtual int GetOpenDocumentCount();
+
+ // helper for standard commdlg dialogs
+ virtual BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+
+//Commands
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+ virtual void OnFileNew();
+ virtual void OnFileOpen();
+
+// Implementation
+protected:
+ CPtrList m_templateList;
+
+public:
+ static CPtrList* pStaticList; // for static CDocTemplate objects
+ static BOOL bStaticInit; // TRUE during static initialization
+ static CDocManager* pStaticDocManager; // for static CDocTemplate objects
+
+public:
+ virtual ~CDocManager();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinApp - the root of all Windows applications
+
+#define _AFX_MRU_COUNT 4 // default support for 4 entries in file MRU
+#define _AFX_MRU_MAX_COUNT 16 // currently allocated id range supports 16
+
+class CWinApp : public CWinThread
+{
+ DECLARE_DYNAMIC(CWinApp)
+public:
+
+// Constructor
+ CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
+
+// Attributes
+ // Startup args (do not change)
+ HINSTANCE m_hInstance;
+ HINSTANCE m_hPrevInstance;
+ LPTSTR m_lpCmdLine;
+ int m_nCmdShow;
+
+ // Running args (can be changed in InitInstance)
+ LPCTSTR m_pszAppName; // human readable name
+ // (from constructor or AFX_IDS_APP_TITLE)
+ LPCTSTR m_pszRegistryKey; // used for registry entries
+ CDocManager* m_pDocManager;
+
+ // Support for Shift+F1 help mode.
+ BOOL m_bHelpMode; // are we in Shift+F1 mode?
+
+#ifdef _MAC
+ // Support for AppleEvent interaction levels
+ enum SaveOption
+ {
+ saveYes, // always save modified documents
+ saveNo, // never save modified documents
+ saveAsk // ask user whether to save modified documents
+ };
+ SaveOption m_nSaveOption;
+#endif
+
+public: // set in constructor to override default
+ LPCTSTR m_pszExeName; // executable name (no spaces)
+ LPCTSTR m_pszHelpFilePath; // default based on module path
+ LPCTSTR m_pszProfileName; // default based on app name
+
+// Initialization Operations - should be done in InitInstance
+protected:
+ void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU file list and last preview state
+ void EnableShellOpen();
+
+ void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192),
+ COLORREF clrCtlText = RGB(0, 0, 0));
+ // set dialog box and message box background color
+
+ void SetRegistryKey(LPCTSTR lpszRegistryKey);
+ void SetRegistryKey(UINT nIDRegistryKey);
+ // enables app settings in registry instead of INI files
+ // (registry key is usually a "company name")
+
+#ifdef _MAC
+ friend void CFrameWnd::OnSysColorChange();
+ friend void CDialog::OnSysColorChange();
+#endif
+
+ BOOL Enable3dControls(); // use CTL3D32.DLL for 3D controls in dialogs
+#ifndef _AFXDLL
+ BOOL Enable3dControlsStatic(); // statically link CTL3D.LIB instead
+#endif
+
+ void RegisterShellFileTypes(BOOL bCompat=FALSE);
+ // call after all doc templates are registered
+ void RegisterShellFileTypesCompat();
+ // for backwards compatibility
+
+// Helper Operations - usually done in InitInstance
+public:
+ // Cursors
+ HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;
+ HCURSOR LoadCursor(UINT nIDResource) const;
+ HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const; // for IDC_ values
+ HCURSOR LoadOEMCursor(UINT nIDCursor) const; // for OCR_ values
+
+ // Icons
+ HICON LoadIcon(LPCTSTR lpszResourceName) const;
+ HICON LoadIcon(UINT nIDResource) const;
+ HICON LoadStandardIcon(LPCTSTR lpszIconName) const; // for IDI_ values
+ HICON LoadOEMIcon(UINT nIDIcon) const; // for OIC_ values
+
+ // Profile settings (to the app specific .INI file, or registry)
+ UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
+ BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
+ CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszDefault = NULL);
+ BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszValue);
+ BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE* ppData, UINT* pBytes);
+ BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE pData, UINT nBytes);
+
+#ifndef _MAC
+ BOOL Unregister();
+ LONG DelRegTree(HKEY hParentKey, const CString& strKeyName);
+#endif
+
+// Running Operations - to be done on a running application
+ // Dealing with document templates
+ void AddDocTemplate(CDocTemplate* pTemplate);
+ POSITION GetFirstDocTemplatePosition() const;
+ CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+
+ // Dealing with files
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual void AddToRecentFileList(LPCTSTR lpszPathName); // add to MRU
+
+ // Printer DC Setup routine, 'struct tagPD' is a PRINTDLG structure
+ void SelectPrinter(HANDLE hDevNames, HANDLE hDevMode,
+ BOOL bFreeOld = TRUE);
+ BOOL CreatePrinterDC(CDC& dc);
+#ifndef _UNICODE
+ BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
+#else
+ BOOL GetPrinterDeviceDefaults(struct tagPDW* pPrintDlg);
+#endif
+
+ // Command line parsing
+ BOOL RunEmbedded();
+ BOOL RunAutomated();
+ void ParseCommandLine(CCommandLineInfo& rCmdInfo);
+ BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
+
+// Overridables
+ // hooks for your initialization code
+ virtual BOOL InitApplication();
+#ifdef _MAC
+ virtual BOOL CreateInitialDocument();
+#endif
+
+ // exiting
+ virtual BOOL SaveAllModified(); // save before exit
+ void HideApplication();
+ void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+
+ // Advanced: to override message boxes and other hooks
+ virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
+ virtual void DoWaitCursor(int nCode); // 0 => restore, 1=> begin, -1=> end
+
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+
+ // Advanced: Help support
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Command Handlers
+protected:
+ // map to the following for file new/open
+ afx_msg void OnFileNew();
+ afx_msg void OnFileOpen();
+
+ // map to the following to enable print setup
+ afx_msg void OnFilePrintSetup();
+
+ // map to the following to enable help
+ afx_msg void OnContextHelp(); // shift-F1
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+
+// Implementation
+protected:
+ HGLOBAL m_hDevMode; // printer Dev Mode
+ HGLOBAL m_hDevNames; // printer Device Names
+ DWORD m_dwPromptContext; // help context override for message box
+
+ int m_nWaitCursorCount; // for wait cursor (>0 => waiting)
+ HCURSOR m_hcurWaitCursorRestore; // old cursor to restore after wait cursor
+
+ CRecentFileList* m_pRecentFileList;
+
+ void UpdatePrinterSelection(BOOL bForceDefaults);
+ void SaveStdProfileSettings(); // save options to .INI file
+
+public: // public for implementation access
+ CCommandLineInfo* m_pCmdInfo;
+
+ ATOM m_atomApp, m_atomSystemTopic; // for DDE open
+ UINT m_nNumPreviewPages; // number of default printed pages
+
+ size_t m_nSafetyPoolSize; // ideal size
+
+ void (AFXAPI* m_lpfnDaoTerm)();
+
+ void DevModeChange(LPTSTR lpDeviceName);
+ void SetCurrentHandles();
+ int GetOpenDocumentCount();
+
+ // helpers for standard commdlg dialogs
+ BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+ int DoPrintDialog(CPrintDialog* pPD);
+
+ void EnableModeless(BOOL bEnable); // to disable OLE in-place dialogs
+
+ // overrides for implementation
+ virtual BOOL InitInstance();
+ virtual int ExitInstance(); // return app exit code
+ virtual int Run();
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+public:
+ virtual ~CWinApp();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+#ifndef _MAC
+ // helpers for registration
+ HKEY GetSectionKey(LPCTSTR lpszSection);
+ HKEY GetAppRegistryKey();
+#endif
+
+protected:
+ //{{AFX_MSG(CWinApp)
+ afx_msg void OnAppExit();
+ afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnOpenRecentFile(UINT nID);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CWaitCursor
+
+class CWaitCursor
+{
+// Construction/Destruction
+public:
+ CWaitCursor();
+ ~CWaitCursor();
+
+// Operations
+public:
+ void Restore();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocTemplate creates documents
+
+class CDocTemplate : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocTemplate)
+
+// Constructors
+protected:
+ CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+public:
+ virtual void LoadTemplate();
+
+// Attributes
+public:
+ // setup for OLE containers
+ void SetContainerInfo(UINT nIDOleInPlaceContainer);
+
+ // setup for OLE servers
+ void SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer = 0,
+ CRuntimeClass* pOleFrameClass = NULL, CRuntimeClass* pOleViewClass = NULL);
+
+ // iterating over open documents
+ virtual POSITION GetFirstDocPosition() const = 0;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
+
+// Operations
+public:
+ virtual void AddDocument(CDocument* pDoc); // must override
+ virtual void RemoveDocument(CDocument* pDoc); // must override
+
+ enum DocStringIndex
+ {
+ windowTitle, // default window title
+ docName, // user visible name for default document
+ fileNewName, // user visible name for FileNew
+ // for file based documents:
+#ifndef _MAC
+ filterName, // user visible name for FileOpen
+ filterExt, // user visible extension for FileOpen
+#else
+ filterWinName, // user visible name for FileOpen
+ filterWinExt, // user visible extension for FileOpen
+#endif
+ // for file based documents with Shell open support:
+ regFileTypeId, // REGEDIT visible registered file type identifier
+ regFileTypeName, // Shell visible registered file type name
+ // for Macintosh file based documents:
+#ifdef _MAC
+ filterExt, // Macintosh file type for FileOpen
+ filterName // user visible name for Macintosh FileOpen
+#else
+ filterMacExt, // Macintosh file type for FileOpen
+ filterMacName // user visible name for Macintosh FileOpen
+#endif
+ };
+ virtual BOOL GetDocString(CString& rString,
+ enum DocStringIndex index) const; // get one of the info strings
+ CFrameWnd* CreateOleFrame(CWnd* pParentWnd, CDocument* pDoc,
+ BOOL bCreateView);
+
+// Overridables
+public:
+ enum Confidence
+ {
+ noAttempt,
+ maybeAttemptForeign,
+ maybeAttemptNative,
+ yesAttemptForeign,
+ yesAttemptNative,
+ yesAlreadyOpen
+ };
+#ifndef _MAC
+ virtual Confidence MatchDocType(LPCTSTR lpszPathName,
+ CDocument*& rpDocMatch);
+#else
+ virtual Confidence MatchDocType(LPCTSTR lpszFileName,
+ DWORD dwFileType, CDocument*& rpDocMatch);
+#endif
+ virtual CDocument* CreateNewDocument();
+ virtual CFrameWnd* CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther);
+ virtual void InitialUpdateFrame(CFrameWnd* pFrame, CDocument* pDoc,
+ BOOL bMakeVisible = TRUE);
+ virtual BOOL SaveAllModified(); // for all documents
+ virtual void CloseAllDocuments(BOOL bEndSession);
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE) = 0;
+ // open named file
+ // if lpszPathName == NULL => create new file with this type
+ virtual void SetDefaultTitle(CDocument* pDocument) = 0;
+
+// Implementation
+public:
+ BOOL m_bAutoDelete;
+ virtual ~CDocTemplate();
+
+ // back pointer to OLE or other server (NULL if none or disabled)
+ CObject* m_pAttachedFactory;
+
+ // menu & accelerator resources for in-place container
+ HMENU m_hMenuInPlace;
+ HACCEL m_hAccelInPlace;
+
+ // menu & accelerator resource for server editing embedding
+ HMENU m_hMenuEmbedding;
+ HACCEL m_hAccelEmbedding;
+
+ // menu & accelerator resource for server editing in-place
+ HMENU m_hMenuInPlaceServer;
+ HACCEL m_hAccelInPlaceServer;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void OnIdle(); // for all documents
+
+protected:
+ UINT m_nIDResource; // IDR_ for frame/menu/accel as well
+ UINT m_nIDServerResource; // IDR_ for OLE inplace frame/menu/accel
+ UINT m_nIDEmbeddingResource; // IDR_ for OLE open frame/menu/accel
+ UINT m_nIDContainerResource; // IDR_ for container frame/menu/accel
+
+ CRuntimeClass* m_pDocClass; // class for creating new documents
+ CRuntimeClass* m_pFrameClass; // class for creating new frames
+ CRuntimeClass* m_pViewClass; // class for creating new views
+ CRuntimeClass* m_pOleFrameClass; // class for creating in-place frame
+ CRuntimeClass* m_pOleViewClass; // class for creating in-place view
+
+ CString m_strDocStrings; // '\n' separated names
+ // The document names sub-strings are represented as _one_ string:
+ // windowTitle\ndocName\n ... (see DocStringIndex enum)
+};
+
+// SDI support (1 document only)
+class CSingleDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CSingleDocTemplate)
+
+// Constructors
+public:
+ CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ virtual ~CSingleDocTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CDocument* m_pOnlyDoc;
+};
+
+// MDI support (zero or more documents)
+class CMultiDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CMultiDocTemplate)
+
+// Constructors
+public:
+ CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ // Menu and accel table for MDI Child windows of this type
+ HMENU m_hMenuShared;
+ HACCEL m_hAccelTable;
+
+ virtual ~CMultiDocTemplate();
+ virtual void LoadTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CPtrList m_docList; // open documents of this type
+ UINT m_nUntitledCount; // start at 0, for "Document1" title
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocument is the main document data abstraction
+
+class CDocument : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocument)
+
+public:
+// Constructors
+ CDocument();
+
+// Attributes
+public:
+ const CString& GetTitle() const;
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ const CString& GetPathName() const;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+
+ CDocTemplate* GetDocTemplate() const;
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+
+// Operations
+ void AddView(CView* pView);
+ void RemoveView(CView* pView);
+ virtual POSITION GetFirstViewPosition() const;
+ virtual CView* GetNextView(POSITION& rPosition) const;
+
+ // Update Views (simple update - DAG only)
+ void UpdateAllViews(CView* pSender, LPARAM lHint = 0L,
+ CObject* pHint = NULL);
+
+// Overridables
+ // Special notifications
+ virtual void OnChangedViewList(); // after Add or Remove view
+ virtual void DeleteContents(); // delete doc items etc
+
+ // File helpers
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+#ifdef _MAC
+ virtual void RecordDataFileOwner(LPCTSTR lpszPathName, LPCTSTR lpszAppName);
+#endif
+ virtual void OnCloseDocument();
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError);
+ virtual void ReleaseFile(CFile* pFile, BOOL bAbort);
+
+ // advanced overridables, closing down frame/doc, etc.
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+
+// Implementation
+protected:
+ // default implementation
+ CString m_strTitle;
+ CString m_strPathName;
+ CDocTemplate* m_pDocTemplate;
+ CPtrList m_viewList; // list of views
+ BOOL m_bModified; // changed since last saved
+
+public:
+ BOOL m_bAutoDelete; // TRUE => delete document when no more views
+ BOOL m_bEmbedded; // TRUE => document is being created by OLE
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual ~CDocument();
+
+ // implementation helpers
+ virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE);
+ virtual BOOL DoFileSave();
+ virtual void UpdateFrameCounts();
+ void DisconnectViews();
+ void SendInitialUpdate();
+
+ // overridables for implementation
+ virtual HMENU GetDefaultMenu(); // get menu depending on state
+ virtual HACCEL GetDefaultAccelerator();
+ virtual void OnIdle();
+ virtual void OnFinalRelease();
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ friend class CDocTemplate;
+
+protected:
+ // file menu commands
+ //{{AFX_MSG(CDocument)
+ afx_msg void OnFileClose();
+ afx_msg void OnFileSave();
+ afx_msg void OnFileSaveAs();
+ //}}AFX_MSG
+ // mail enabling
+ afx_msg void OnFileSendMail();
+ afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Extra diagnostic tracing options
+
+#ifdef _DEBUG
+
+extern AFX_DATA UINT afxTraceFlags;
+enum AfxTraceFlags
+{
+ traceMultiApp = 1, // multi-app debugging
+ traceAppMsg = 2, // main message pump trace (includes DDE)
+ traceWinMsg = 4, // Windows message tracing
+ traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
+ traceOle = 16, // special OLE callback trace
+ traceDatabase = 32, // special database trace
+ traceInternet = 64 // special Internet client trace
+};
+
+#endif // _DEBUG
+
+//////////////////////////////////////////////////////////////////////////////
+// MessageBox helpers
+
+void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1);
+void AFXAPI AfxFormatString2(CString& rString, UINT nIDS,
+ LPCTSTR lpsz1, LPCTSTR lpsz2);
+int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
+ UINT nIDHelp = 0);
+int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK,
+ UINT nIDHelp = (UINT)-1);
+
+// Implementation string helpers
+void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
+ LPCTSTR const* rglpsz, int nString);
+void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
+ LPCTSTR const* rglpsz, int nString);
+BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
+ int iSubString, TCHAR chSep = '\n');
+
+/////////////////////////////////////////////////////////////////////////////
+// Special target variant APIs
+
+#ifdef _AFXDLL
+ #include <afxdll_.h>
+#endif
+
+// Windows Version compatibility (obsolete)
+#define AfxEnableWin30Compatibility()
+#define AfxEnableWin31Compatibility()
+#define AfxEnableWin40Compatibility()
+
+// Temporary map management (locks temp map on current thread)
+void AFXAPI AfxLockTempMaps();
+BOOL AFXAPI AfxUnlockTempMaps(BOOL bDeleteTemps = TRUE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special OLE related functions (see OLELOCK.CPP)
+
+void AFXAPI AfxOleOnReleaseAllObjects();
+BOOL AFXAPI AfxOleCanExitApp();
+void AFXAPI AfxOleLockApp();
+void AFXAPI AfxOleUnlockApp();
+
+void AFXAPI AfxOleSetUserCtrl(BOOL bUserCtrl);
+BOOL AFXAPI AfxOleGetUserCtrl();
+
+#ifndef _AFX_NO_OCC_SUPPORT
+BOOL AFXAPI AfxOleLockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleUnlockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleLockControl(LPCTSTR lpszProgID);
+BOOL AFXAPI AfxOleUnlockControl(LPCTSTR lpszProgID);
+void AFXAPI AfxOleUnlockAllControls();
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Use version 1.0 of the RichEdit control
+
+#define _RICHEDIT_VER 0x0100
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXWIN_INLINE inline
+#include <afxwin1.inl>
+#include <afxwin2.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#else //RC_INVOKED
+#include <afxres.h> // standard resource IDs
+#endif //RC_INVOKED
+
+#endif //__AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxwin1.inl b/public/sdk/inc/mfc42/afxwin1.inl
new file mode 100644
index 000000000..f6f3cd87d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin1.inl
@@ -0,0 +1,1091 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 1)
+
+#ifdef _AFXWIN_INLINE
+
+// Global helper functions
+_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
+ { return afxCurrentWinApp; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
+ { ASSERT(afxCurrentInstanceHandle != NULL);
+ return afxCurrentInstanceHandle; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
+ { ASSERT(afxCurrentResourceHandle != NULL);
+ return afxCurrentResourceHandle; }
+_AFXWIN_INLINE void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource)
+ { ASSERT(hInstResource != NULL); afxCurrentResourceHandle = hInstResource; }
+_AFXWIN_INLINE LPCTSTR AFXAPI AfxGetAppName()
+ { ASSERT(afxCurrentAppName != NULL); return afxCurrentAppName; }
+_AFXWIN_INLINE COleMessageFilter* AFXAPI AfxOleGetMessageFilter()
+ { ASSERT_VALID(AfxGetThread()); return AfxGetThread()->m_pMessageFilter; }
+_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
+ { return AfxGetThread() != NULL ? AfxGetThread()->GetMainWnd() : NULL; }
+
+#ifdef _AFXDLL
+// AFX_MAINTAIN_STATE functions
+_AFXWIN_INLINE AFX_MAINTAIN_STATE::AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pNewState)
+ { m_pPrevModuleState = AfxSetModuleState(pNewState); }
+#endif
+
+// CSize
+_AFXWIN_INLINE CSize::CSize()
+ { /* random filled */ }
+_AFXWIN_INLINE CSize::CSize(int initCX, int initCY)
+ { cx = initCX; cy = initCY; }
+_AFXWIN_INLINE CSize::CSize(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CSize::CSize(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CSize::CSize(DWORD dwSize)
+ {
+ cx = (short)LOWORD(dwSize);
+ cy = (short)HIWORD(dwSize);
+ }
+_AFXWIN_INLINE BOOL CSize::operator==(SIZE size) const
+ { return (cx == size.cx && cy == size.cy); }
+_AFXWIN_INLINE BOOL CSize::operator!=(SIZE size) const
+ { return (cx != size.cx || cy != size.cy); }
+_AFXWIN_INLINE void CSize::operator+=(SIZE size)
+ { cx += size.cx; cy += size.cy; }
+_AFXWIN_INLINE void CSize::operator-=(SIZE size)
+ { cx -= size.cx; cy -= size.cy; }
+_AFXWIN_INLINE CSize CSize::operator+(SIZE size) const
+ { return CSize(cx + size.cx, cy + size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-(SIZE size) const
+ { return CSize(cx - size.cx, cy - size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-() const
+ { return CSize(-cx, -cy); }
+_AFXWIN_INLINE CPoint CSize::operator+(POINT point) const
+ { return CPoint(cx + point.x, cy + point.y); }
+_AFXWIN_INLINE CPoint CSize::operator-(POINT point) const
+ { return CPoint(cx - point.x, cy - point.y); }
+_AFXWIN_INLINE CRect CSize::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CSize::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CPoint
+_AFXWIN_INLINE CPoint::CPoint()
+ { /* random filled */ }
+_AFXWIN_INLINE CPoint::CPoint(int initX, int initY)
+ { x = initX; y = initY; }
+_AFXWIN_INLINE CPoint::CPoint(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CPoint::CPoint(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CPoint::CPoint(DWORD dwPoint)
+ {
+ x = (short)LOWORD(dwPoint);
+ y = (short)HIWORD(dwPoint);
+ }
+_AFXWIN_INLINE void CPoint::Offset(int xOffset, int yOffset)
+ { x += xOffset; y += yOffset; }
+_AFXWIN_INLINE void CPoint::Offset(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::Offset(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE BOOL CPoint::operator==(POINT point) const
+ { return (x == point.x && y == point.y); }
+_AFXWIN_INLINE BOOL CPoint::operator!=(POINT point) const
+ { return (x != point.x || y != point.y); }
+_AFXWIN_INLINE void CPoint::operator+=(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE void CPoint::operator-=(SIZE size)
+ { x -= size.cx; y -= size.cy; }
+_AFXWIN_INLINE void CPoint::operator+=(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::operator-=(POINT point)
+ { x -= point.x; y -= point.y; }
+_AFXWIN_INLINE CPoint CPoint::operator+(SIZE size) const
+ { return CPoint(x + size.cx, y + size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-(SIZE size) const
+ { return CPoint(x - size.cx, y - size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-() const
+ { return CPoint(-x, -y); }
+_AFXWIN_INLINE CPoint CPoint::operator+(POINT point) const
+ { return CPoint(x + point.x, y + point.y); }
+_AFXWIN_INLINE CSize CPoint::operator-(POINT point) const
+ { return CSize(x - point.x, y - point.y); }
+_AFXWIN_INLINE CRect CPoint::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CPoint::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CRect
+_AFXWIN_INLINE CRect::CRect()
+ { /* random filled */ }
+_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
+ { left = l; top = t; right = r; bottom = b; }
+_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE CRect::CRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE CRect::CRect(POINT point, SIZE size)
+ { right = (left = point.x) + size.cx; bottom = (top = point.y) + size.cy; }
+_AFXWIN_INLINE CRect::CRect(POINT topLeft, POINT bottomRight)
+ { left = topLeft.x; top = topLeft.y;
+ right = bottomRight.x; bottom = bottomRight.y; }
+_AFXWIN_INLINE int CRect::Width() const
+ { return right - left; }
+_AFXWIN_INLINE int CRect::Height() const
+ { return bottom - top; }
+_AFXWIN_INLINE CSize CRect::Size() const
+ { return CSize(right - left, bottom - top); }
+_AFXWIN_INLINE CPoint& CRect::TopLeft()
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE CPoint& CRect::BottomRight()
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE const CPoint& CRect::TopLeft() const
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE const CPoint& CRect::BottomRight() const
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE CPoint CRect::CenterPoint() const
+ { return CPoint((left+right)/2, (top+bottom)/2); }
+_AFXWIN_INLINE CRect::operator LPRECT()
+ { return this; }
+_AFXWIN_INLINE CRect::operator LPCRECT() const
+ { return this; }
+_AFXWIN_INLINE BOOL CRect::IsRectEmpty() const
+ { return ::IsRectEmpty(this); }
+_AFXWIN_INLINE BOOL CRect::IsRectNull() const
+ { return (left == 0 && right == 0 && top == 0 && bottom == 0); }
+_AFXWIN_INLINE BOOL CRect::PtInRect(POINT point) const
+ { return ::PtInRect(this, point); }
+_AFXWIN_INLINE void CRect::SetRect(int x1, int y1, int x2, int y2)
+ { ::SetRect(this, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRect::SetRect(POINT topLeft, POINT bottomRight)
+ { ::SetRect(this, topLeft.x, topLeft.y, bottomRight.x, bottomRight.y); }
+_AFXWIN_INLINE void CRect::SetRectEmpty()
+ { ::SetRectEmpty(this); }
+_AFXWIN_INLINE void CRect::CopyRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE BOOL CRect::EqualRect(LPCRECT lpRect) const
+ { return ::EqualRect(this, lpRect); }
+_AFXWIN_INLINE void CRect::InflateRect(int x, int y)
+ { ::InflateRect(this, x, y); }
+_AFXWIN_INLINE void CRect::InflateRect(SIZE size)
+ { ::InflateRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::DeflateRect(int x, int y)
+ { ::InflateRect(this, -x, -y); }
+_AFXWIN_INLINE void CRect::DeflateRect(SIZE size)
+ { ::InflateRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::OffsetRect(int x, int y)
+ { ::OffsetRect(this, x, y); }
+_AFXWIN_INLINE void CRect::OffsetRect(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::OffsetRect(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE BOOL CRect::IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::IntersectRect(this, lpRect1, lpRect2);}
+_AFXWIN_INLINE BOOL CRect::UnionRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::UnionRect(this, lpRect1, lpRect2); }
+_AFXWIN_INLINE void CRect::operator=(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE BOOL CRect::operator==(const RECT& rect) const
+ { return ::EqualRect(this, &rect); }
+_AFXWIN_INLINE BOOL CRect::operator!=(const RECT& rect) const
+ { return !::EqualRect(this, &rect); }
+_AFXWIN_INLINE void CRect::operator+=(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::operator+=(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::operator+=(LPCRECT lpRect)
+ { InflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator-=(POINT point)
+ { ::OffsetRect(this, -point.x, -point.y); }
+_AFXWIN_INLINE void CRect::operator-=(SIZE size)
+ { ::OffsetRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::operator-=(LPCRECT lpRect)
+ { DeflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator&=(const RECT& rect)
+ { ::IntersectRect(this, this, &rect); }
+_AFXWIN_INLINE void CRect::operator|=(const RECT& rect)
+ { ::UnionRect(this, this, &rect); }
+_AFXWIN_INLINE CRect CRect::operator+(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, pt.x, pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, -pt.x, -pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, size.cx, size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, -size.cx, -size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(LPCRECT lpRect) const
+ { CRect rect(this); rect.InflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(LPCRECT lpRect) const
+ { CRect rect(this); rect.DeflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator&(const RECT& rect2) const
+ { CRect rect; ::IntersectRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE CRect CRect::operator|(const RECT& rect2) const
+ { CRect rect; ::UnionRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE BOOL CRect::SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2)
+ { return ::SubtractRect(this, lpRectSrc1, lpRectSrc2); }
+
+// CArchive output helpers
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, SIZE size)
+ { ar.Write(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, POINT point)
+ { ar.Write(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect)
+ { ar.Write(&rect, sizeof(RECT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size)
+ { ar.Read(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, POINT& point)
+ { ar.Read(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect)
+ { ar.Read(&rect, sizeof(RECT)); return ar; }
+
+// exception support
+_AFXWIN_INLINE CResourceException::CResourceException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CResourceException::CResourceException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CResourceException::~CResourceException()
+ { }
+_AFXWIN_INLINE CUserException::CUserException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CUserException::CUserException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CUserException::~CUserException()
+ { }
+
+// CGdiObject
+_AFXWIN_INLINE CGdiObject::operator HGDIOBJ() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE CGdiObject::CGdiObject()
+ { m_hObject = NULL; }
+_AFXWIN_INLINE CGdiObject::~CGdiObject()
+ { DeleteObject(); }
+_AFXWIN_INLINE int CGdiObject::GetObject(int nCount, LPVOID lpObject) const
+ { ASSERT(m_hObject != NULL); return ::GetObject(m_hObject, nCount, lpObject); }
+_AFXWIN_INLINE BOOL CGdiObject::CreateStockObject(int nIndex)
+ { return (m_hObject = ::GetStockObject(nIndex)) != NULL; }
+_AFXWIN_INLINE BOOL CGdiObject::UnrealizeObject()
+ { ASSERT(m_hObject != NULL); return ::UnrealizeObject(m_hObject); }
+_AFXWIN_INLINE UINT CGdiObject::GetObjectType() const
+ { return (UINT)::GetObjectType(m_hObject); }
+
+// CPen
+_AFXWIN_INLINE CPen::operator HPEN() const
+ { return (HPEN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPen* PASCAL CPen::FromHandle(HPEN hPen)
+ { return (CPen*) CGdiObject::FromHandle(hPen); }
+_AFXWIN_INLINE CPen::CPen()
+ { }
+_AFXWIN_INLINE CPen::~CPen()
+ { }
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
+ { return Attach(::CreatePen(nPenStyle, nWidth, crColor)); }
+_AFXWIN_INLINE BOOL CPen::CreatePenIndirect(LPLOGPEN lpLogPen)
+ { return Attach(::CreatePenIndirect(lpLogPen)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount, const DWORD* lpStyle)
+ { return Attach(::ExtCreatePen(nPenStyle, nWidth, pLogBrush, nStyleCount,
+ lpStyle)); }
+_AFXWIN_INLINE int CPen::GetExtLogPen(EXTLOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(EXTLOGPEN), pLogPen); }
+#endif
+_AFXWIN_INLINE int CPen::GetLogPen(LOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGPEN), pLogPen); }
+
+// CBrush
+_AFXWIN_INLINE CBrush::operator HBRUSH() const
+ { return (HBRUSH)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBrush* PASCAL CBrush::FromHandle(HBRUSH hBrush)
+ { return (CBrush*) CGdiObject::FromHandle(hBrush); }
+_AFXWIN_INLINE CBrush::CBrush()
+ { }
+_AFXWIN_INLINE CBrush::~CBrush()
+ { }
+_AFXWIN_INLINE BOOL CBrush::CreateSolidBrush(COLORREF crColor)
+ { return Attach(::CreateSolidBrush(crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateHatchBrush(int nIndex, COLORREF crColor)
+ { return Attach(::CreateHatchBrush(nIndex, crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateBrushIndirect(const LOGBRUSH* lpLogBrush)
+ { return Attach(::CreateBrushIndirect(lpLogBrush)); }
+_AFXWIN_INLINE BOOL CBrush::CreatePatternBrush(CBitmap* pBitmap)
+ { return Attach(::CreatePatternBrush((HBITMAP)pBitmap->GetSafeHandle())); }
+_AFXWIN_INLINE BOOL CBrush::CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
+ { return Attach(::CreateDIBPatternBrushPt(lpPackedDIB, nUsage)); }
+_AFXWIN_INLINE BOOL CBrush::CreateSysColorBrush(int nIndex)
+ { return Attach(::GetSysColorBrush(nIndex)); }
+_AFXWIN_INLINE int CBrush::GetLogBrush(LOGBRUSH* pLogBrush)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGBRUSH), pLogBrush); }
+
+// CFont
+_AFXWIN_INLINE CFont::operator HFONT() const
+ { return (HFONT)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CFont* PASCAL CFont::FromHandle(HFONT hFont)
+ { return (CFont*) CGdiObject::FromHandle(hFont); }
+_AFXWIN_INLINE CFont::CFont()
+ { }
+_AFXWIN_INLINE CFont::~CFont()
+ { }
+_AFXWIN_INLINE BOOL CFont::CreateFontIndirect(const LOGFONT* lpLogFont)
+ { return Attach(::CreateFontIndirect(lpLogFont)); }
+_AFXWIN_INLINE BOOL CFont::CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename)
+ { return Attach(::CreateFont(nHeight, nWidth, nEscapement,
+ nOrientation, nWeight, bItalic, bUnderline, cStrikeOut,
+ nCharSet, nOutPrecision, nClipPrecision, nQuality,
+ nPitchAndFamily, lpszFacename)); }
+_AFXWIN_INLINE int CFont::GetLogFont(LOGFONT* pLogFont)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGFONT), pLogFont); }
+
+// CBitmap
+_AFXWIN_INLINE CBitmap::operator HBITMAP() const
+ { return (HBITMAP)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBitmap* PASCAL CBitmap::FromHandle(HBITMAP hBitmap)
+ { return (CBitmap*) CGdiObject::FromHandle(hBitmap); }
+_AFXWIN_INLINE CBitmap::CBitmap()
+ { }
+_AFXWIN_INLINE CBitmap::~CBitmap()
+ { }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmap(int nWidth, int nHeight, UINT nPlanes,
+ UINT nBitcount, const void* lpBits)
+ { return Attach(::CreateBitmap(nWidth, nHeight, nPlanes, nBitcount, lpBits)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmapIndirect(LPBITMAP lpBitmap)
+ { return Attach(::CreateBitmapIndirect(lpBitmap)); }
+
+_AFXWIN_INLINE DWORD CBitmap::SetBitmapBits(DWORD dwCount, const void* lpBits)
+ { return ::SetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE DWORD CBitmap::GetBitmapBits(DWORD dwCount, LPVOID lpBits) const
+ { return ::GetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(LPCTSTR lpszResourceName)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ lpszResourceName, RT_BITMAP), lpszResourceName));}
+_AFXWIN_INLINE BOOL CBitmap::LoadMappedBitmap(UINT nIDBitmap, UINT nFlags,
+ LPCOLORMAP lpColorMap, int nMapSize)
+ { return Attach(::CreateMappedBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDBitmap), RT_BITMAP), nIDBitmap, (WORD)nFlags,
+ lpColorMap, nMapSize)); }
+_AFXWIN_INLINE CSize CBitmap::SetBitmapDimension(int nWidth, int nHeight)
+ {
+ SIZE size;
+ VERIFY(::SetBitmapDimensionEx((HBITMAP)m_hObject, nWidth, nHeight, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CBitmap::GetBitmapDimension() const
+ {
+ SIZE size;
+ VERIFY(::GetBitmapDimensionEx((HBITMAP)m_hObject, &size));
+ return size;
+ }
+
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(UINT nIDResource)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_BITMAP), MAKEINTRESOURCE(nIDResource))); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CBitmap::LoadOEMBitmap(UINT nIDBitmap)
+ { return Attach(::LoadBitmap(NULL, MAKEINTRESOURCE(nIDBitmap))); }
+#endif
+_AFXWIN_INLINE BOOL CBitmap::CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateCompatibleBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateDiscardableBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE int CBitmap::GetBitmap(BITMAP* pBitMap)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(BITMAP), pBitMap); }
+
+// CPalette
+_AFXWIN_INLINE CPalette::operator HPALETTE() const
+ { return (HPALETTE)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPalette* PASCAL CPalette::FromHandle(HPALETTE hPalette)
+ { return (CPalette*) CGdiObject::FromHandle(hPalette); }
+_AFXWIN_INLINE CPalette::CPalette()
+ { }
+_AFXWIN_INLINE CPalette::~CPalette()
+ { }
+_AFXWIN_INLINE BOOL CPalette::CreatePalette(LPLOGPALETTE lpLogPalette)
+ { return Attach(::CreatePalette(lpLogPalette)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPalette::CreateHalftonePalette(CDC* pDC)
+ { ASSERT(pDC != NULL && pDC->m_hDC != NULL); return Attach(
+ ::CreateHalftonePalette(pDC->m_hDC)); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const
+ { ASSERT(m_hObject != NULL); return ::GetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+_AFXWIN_INLINE UINT CPalette::SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); return ::SetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+#ifndef _MAC
+_AFXWIN_INLINE void CPalette::AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); ::AnimatePalette((HPALETTE)m_hObject, nStartIndex, nNumEntries,
+ lpPaletteColors); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetNearestPaletteIndex(COLORREF crColor) const
+ { ASSERT(m_hObject != NULL); return ::GetNearestPaletteIndex((HPALETTE)m_hObject, crColor); }
+_AFXWIN_INLINE BOOL CPalette::ResizePalette(UINT nNumEntries)
+ { ASSERT(m_hObject != NULL); return ::ResizePalette((HPALETTE)m_hObject, nNumEntries); }
+_AFXWIN_INLINE int CPalette::GetEntryCount()
+ { ASSERT(m_hObject != NULL); WORD nEntries;
+ ::GetObject(m_hObject, sizeof(WORD), &nEntries); return (int)nEntries; }
+
+// CRgn
+_AFXWIN_INLINE CRgn::operator HRGN() const
+ { return (HRGN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CRgn* PASCAL CRgn::FromHandle(HRGN hRgn)
+ { return (CRgn*) CGdiObject::FromHandle(hRgn); }
+_AFXWIN_INLINE CRgn::CRgn()
+ { }
+_AFXWIN_INLINE CRgn::~CRgn()
+ { }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateRectRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateRectRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateEllipticRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateEllipticRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)
+ { return Attach(::CreatePolygonRgn(lpPoints, nCount, nMode)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount, int nPolyFillMode)
+ { return Attach(::CreatePolyPolygonRgn(lpPoints, lpPolyCounts, nCount, nPolyFillMode)); }
+#endif
+_AFXWIN_INLINE BOOL CRgn::CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3)
+ { return Attach(::CreateRoundRectRgn(x1, y1, x2, y2, x3, y3)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreateFromPath(CDC* pDC)
+ { ASSERT(pDC != NULL); return Attach(::PathToRegion(pDC->m_hDC)); }
+_AFXWIN_INLINE BOOL CRgn::CreateFromData(const XFORM* lpXForm, int nCount, const RGNDATA* pRgnData)
+ { return Attach(::ExtCreateRegion(lpXForm, nCount, pRgnData)); }
+_AFXWIN_INLINE int CRgn::GetRegionData(LPRGNDATA lpRgnData, int nDataSize) const
+ { ASSERT(m_hObject != NULL); return (int)::GetRegionData((HRGN)m_hObject, nDataSize, lpRgnData); }
+#endif
+_AFXWIN_INLINE void CRgn::SetRectRgn(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRgn::SetRectRgn(LPCRECT lpRect)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE int CRgn::CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgn1->GetSafeHandle(),
+ (HRGN)pRgn2->GetSafeHandle(), nCombineMode); }
+_AFXWIN_INLINE int CRgn::CopyRgn(CRgn* pRgnSrc)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgnSrc->GetSafeHandle(), NULL, RGN_COPY); }
+_AFXWIN_INLINE BOOL CRgn::EqualRgn(CRgn* pRgn) const
+ { ASSERT(m_hObject != NULL); return ::EqualRgn((HRGN)m_hObject, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(int x, int y)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(POINT point)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE int CRgn::GetRgnBox(LPRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::GetRgnBox((HRGN)m_hObject, lpRect); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(int x, int y) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(POINT point) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE BOOL CRgn::RectInRegion(LPCRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::RectInRegion((HRGN)m_hObject, lpRect); }
+
+// CDC
+_AFXWIN_INLINE CDC::operator HDC() const
+ { return this == NULL ? NULL : m_hDC; }
+_AFXWIN_INLINE HDC CDC::GetSafeHdc() const
+ { return this == NULL ? NULL : m_hDC; }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CDC::GetWindow() const
+ { ASSERT(m_hDC != NULL); return CWnd::FromHandle(::WindowFromDC(m_hDC)); }
+#endif
+_AFXWIN_INLINE BOOL CDC::IsPrinting() const
+ { return m_bPrinting; }
+_AFXWIN_INLINE BOOL CDC::CreateDC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateDC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*)lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateIC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateIC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*) lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateCompatibleDC(CDC* pDC)
+ { return Attach(::CreateCompatibleDC(pDC->GetSafeHdc())); }
+_AFXWIN_INLINE int CDC::ExcludeUpdateRgn(CWnd* pWnd)
+ { ASSERT(m_hDC != NULL); return ::ExcludeUpdateRgn(m_hDC, pWnd->m_hWnd); }
+_AFXWIN_INLINE int CDC::GetDeviceCaps(int nIndex) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetDeviceCaps(m_hAttribDC, nIndex); }
+_AFXWIN_INLINE CPoint CDC::GetBrushOrg() const
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::GetBrushOrgEx(m_hDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(int x, int y)
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::SetBrushOrgEx(m_hDC, x, y, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(POINT point)
+ {
+ ASSERT(m_hDC != NULL);
+ VERIFY(::SetBrushOrgEx(m_hDC, point.x, point.y, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE int CDC::EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData)
+ { ASSERT(m_hAttribDC != NULL); return ::EnumObjects(m_hAttribDC, nObjectType, (GOBJENUMPROC)lpfn, lpData); }
+
+_AFXWIN_INLINE CBitmap* CDC::SelectObject(CBitmap* pBitmap)
+ { ASSERT(m_hDC != NULL); return (CBitmap*) SelectGdiObject(m_hDC, pBitmap->GetSafeHandle()); }
+_AFXWIN_INLINE CGdiObject* CDC::SelectObject(CGdiObject* pObject)
+ { ASSERT(m_hDC != NULL); return SelectGdiObject(m_hDC, pObject->GetSafeHandle()); }
+_AFXWIN_INLINE HGDIOBJ CDC::SelectObject(HGDIOBJ hObject) // Safe for NULL handles
+ { ASSERT(m_hDC == m_hAttribDC); // ASSERT a simple CDC object
+ return (hObject != NULL) ? ::SelectObject(m_hDC, hObject) : NULL; }
+_AFXWIN_INLINE COLORREF CDC::GetNearestColor(COLORREF crColor) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetNearestColor(m_hAttribDC, crColor); }
+_AFXWIN_INLINE UINT CDC::RealizePalette()
+ { ASSERT(m_hDC != NULL); return ::RealizePalette(m_hDC); }
+_AFXWIN_INLINE void CDC::UpdateColors()
+ { ASSERT(m_hDC != NULL); ::UpdateColors(m_hDC); }
+_AFXWIN_INLINE COLORREF CDC::GetBkColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetBkMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetPolyFillMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetPolyFillMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetROP2() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetROP2(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetStretchBltMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetStretchBltMode(m_hAttribDC); }
+_AFXWIN_INLINE COLORREF CDC::GetTextColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetMapMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetMapMode(m_hAttribDC); }
+
+_AFXWIN_INLINE CPoint CDC::GetViewportOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetViewportOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetViewportExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetViewportExtEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE CPoint CDC::GetWindowOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetWindowOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetWindowExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetWindowExtEx(m_hAttribDC, &size));
+ return size;
+ }
+
+// non-virtual helpers calling virtual mapping functions
+_AFXWIN_INLINE CPoint CDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXWIN_INLINE CPoint CDC::SetWindowOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetWindowOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetWindowExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetWindowExt(size.cx, size.cy); }
+
+_AFXWIN_INLINE void CDC::DPtoLP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::DPtoLP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+
+_AFXWIN_INLINE BOOL CDC::FillRgn(CRgn* pRgn, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::FillRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::FrameRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle(),
+ nWidth, nHeight); }
+_AFXWIN_INLINE BOOL CDC::InvertRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::InvertRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PaintRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::PaintRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::PtVisible(m_hDC, x, y); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); } // call virtual
+_AFXWIN_INLINE BOOL CDC::RectVisible(LPCRECT lpRect) const
+ { ASSERT(m_hDC != NULL); return ::RectVisible(m_hDC, lpRect); }
+_AFXWIN_INLINE CPoint CDC::GetCurrentPosition() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetCurrentPositionEx(m_hAttribDC, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE CPoint CDC::MoveTo(POINT point)
+ { ASSERT(m_hDC != NULL); return MoveTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::LineTo(POINT point)
+ { ASSERT(m_hDC != NULL); return LineTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polyline(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polyline(m_hDC, lpPoints, nCount); }
+_AFXWIN_INLINE void CDC::FillRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FillRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::FrameRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FrameRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::InvertRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::InvertRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(int x, int y, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, x, y, hIcon); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(POINT point, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, point.x, point.y, hIcon); }
+#ifndef _MAC
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)hBitmap, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)pBitmap->GetSafeHandle(), 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush, NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(), NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags)
+ { ASSERT(m_hDC != NULL); return ::DrawEdge(m_hDC, lpRect, nEdge, nFlags); }
+_AFXWIN_INLINE BOOL CDC::DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState)
+ { ASSERT(m_hDC != NULL); return ::DrawFrameControl(m_hDC, lpRect, nType, nState); }
+#endif
+
+_AFXWIN_INLINE BOOL CDC::Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+#endif
+_AFXWIN_INLINE void CDC::DrawFocusRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::DrawFocusRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polygon(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polygon(m_hDC, lpPoints, nCount); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolygon(m_hDC, lpPoints, lpPolyCounts, nCount); }
+#endif
+_AFXWIN_INLINE BOOL CDC::Rectangle(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Rectangle(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, x1, y1, x2, y2, x3, y3); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(LPCRECT lpRect, POINT point)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::PatBlt(m_hDC, x, y, nWidth, nHeight, dwRop); }
+_AFXWIN_INLINE BOOL CDC::BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::BitBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, dwRop); }
+_AFXWIN_INLINE BOOL CDC::StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::StretchBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, nSrcWidth, nSrcHeight,
+ dwRop); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, x, y); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(POINT point) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, point.x, point.y); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, point.x, point.y, crColor); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::FloodFill(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::FloodFill(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType)
+ { ASSERT(m_hDC != NULL); return ::ExtFloodFill(m_hDC, x, y, crColor, nFillType); }
+#endif
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount)
+ { ASSERT(m_hDC != NULL); return ::TextOut(m_hDC, x, y, lpszString, nCount); }
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); } // call virtual
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ lpszString, nCount, lpDxWidths); }
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE int CDC::DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return ::DrawText(m_hDC, lpszString, nCount, lpRect, nFormat); }
+_AFXWIN_INLINE int CDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(const CString& str) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(const CString& str) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE BOOL CDC::GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::GrayString(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ (GRAYSTRINGPROC)lpfnOutput, lpData, nCount, x, y, nWidth, nHeight); }
+_AFXWIN_INLINE UINT CDC::GetTextAlign() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextAlign(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetTextFace(int nCount, LPTSTR lpszFacename) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextFace(m_hAttribDC, nCount, lpszFacename); }
+_AFXWIN_INLINE int CDC::GetTextFace(CString& rString) const
+ { ASSERT(m_hAttribDC != NULL); int nResult = ::GetTextFace(m_hAttribDC,
+ 256, rString.GetBuffer(256)); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextMetrics(m_hAttribDC, lpMetrics); }
+_AFXWIN_INLINE BOOL CDC::GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hDC != NULL); return ::GetTextMetrics(m_hDC, lpMetrics); }
+_AFXWIN_INLINE int CDC::GetTextCharacterExtra() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextCharacterExtra(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidth(m_hAttribDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE BOOL CDC::GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hDC != NULL); return ::GetCharWidth(m_hDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE CSize CDC::GetAspectRatioFilter() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetAspectRatioFilterEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE BOOL CDC::ScrollDC(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate)
+ { ASSERT(m_hDC != NULL); return ::ScrollDC(m_hDC, dx, dy, lpRectScroll,
+ lpRectClip, (HRGN)pRgnUpdate->GetSafeHandle(), lpRectUpdate); }
+
+// Printer Escape Functions
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData)
+ { ASSERT(m_hDC != NULL); return ::Escape(m_hDC, nEscape, nCount, lpszInData, lpOutData);}
+
+// CDC 3.1 Specific functions
+#ifndef _MAC
+_AFXWIN_INLINE UINT CDC::SetBoundsRect(LPCRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hDC != NULL); return ::SetBoundsRect(m_hDC, lpRectBounds, flags); }
+_AFXWIN_INLINE UINT CDC::GetBoundsRect(LPRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hAttribDC != NULL); return ::GetBoundsRect(m_hAttribDC, lpRectBounds, flags); }
+#endif
+_AFXWIN_INLINE BOOL CDC::ResetDC(const DEVMODE* lpDevMode)
+ { ASSERT(m_hAttribDC != NULL); return ::ResetDC(m_hAttribDC, lpDevMode) != NULL; }
+_AFXWIN_INLINE UINT CDC::GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetOutlineTextMetrics(m_hAttribDC, cbData, lpotm); }
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidths(m_hAttribDC, nFirstChar, nLastChar, lpabc); }
+_AFXWIN_INLINE DWORD CDC::GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData,
+ DWORD cbData) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetFontData(m_hAttribDC, dwTable, dwOffset, lpData, cbData); }
+#ifndef _MAC
+_AFXWIN_INLINE int CDC::GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetKerningPairs(m_hAttribDC, nPairs, lpkrnpair); }
+_AFXWIN_INLINE DWORD CDC::GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetGlyphOutline(m_hAttribDC, nChar, nFormat,
+ lpgm, cbBuffer, lpBuffer, lpmat2); }
+#endif
+
+// Document handling functions
+_AFXWIN_INLINE int CDC::StartDoc(LPDOCINFO lpDocInfo)
+ { ASSERT(m_hDC != NULL); return ::StartDoc(m_hDC, lpDocInfo); }
+_AFXWIN_INLINE int CDC::StartPage()
+ { ASSERT(m_hDC != NULL); return ::StartPage(m_hDC); }
+_AFXWIN_INLINE int CDC::EndPage()
+ { ASSERT(m_hDC != NULL); return ::EndPage(m_hDC); }
+_AFXWIN_INLINE int CDC::SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int))
+ { ASSERT(m_hDC != NULL); return ::SetAbortProc(m_hDC, (ABORTPROC)lpfn); }
+_AFXWIN_INLINE int CDC::AbortDoc()
+ { ASSERT(m_hDC != NULL); return ::AbortDoc(m_hDC); }
+_AFXWIN_INLINE int CDC::EndDoc()
+ { ASSERT(m_hDC != NULL); return ::EndDoc(m_hDC); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::MaskBlt(m_hDC, x, y, nWidth, nHeight, pSrcDC->GetSafeHdc(),
+ xSrc, ySrc, (HBITMAP)maskBitmap.m_hObject, xMask, yMask, dwRop); }
+_AFXWIN_INLINE BOOL CDC::PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask)
+ { ASSERT(m_hDC != NULL); return ::PlgBlt(m_hDC, lpPoint, pSrcDC->GetSafeHdc(), xSrc, ySrc, nWidth,
+ nHeight, (HBITMAP)maskBitmap.m_hObject, xMask, yMask); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, point.x, point.y, crColor); }
+_AFXWIN_INLINE BOOL CDC::AngleArc(int x, int y, int nRadius,
+ float fStartAngle, float fSweepAngle)
+ { ASSERT(m_hDC != NULL); return ::AngleArc(m_hDC, x, y, nRadius, fStartAngle, fSweepAngle); }
+_AFXWIN_INLINE BOOL CDC::ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ArcTo(lpRect->left, lpRect->top, lpRect->right,
+ lpRect->bottom, ptStart.x, ptStart.y, ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE int CDC::GetArcDirection() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetArcDirection(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::PolyPolyline(const POINT* lpPoints, const DWORD* lpPolyPoints,
+ int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolyline(m_hDC, lpPoints, lpPolyPoints, nCount); }
+_AFXWIN_INLINE BOOL CDC::GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetColorAdjustment(m_hAttribDC, lpColorAdjust); }
+_AFXWIN_INLINE CPen* CDC::GetCurrentPen() const
+ { ASSERT(m_hAttribDC != NULL); return CPen::FromHandle((HPEN)::GetCurrentObject(m_hAttribDC, OBJ_PEN)); }
+_AFXWIN_INLINE CBrush* CDC::GetCurrentBrush() const
+ { ASSERT(m_hAttribDC != NULL); return CBrush::FromHandle((HBRUSH)::GetCurrentObject(m_hAttribDC, OBJ_BRUSH)); }
+_AFXWIN_INLINE CPalette* CDC::GetCurrentPalette() const
+ { ASSERT(m_hAttribDC != NULL); return CPalette::FromHandle((HPALETTE)::GetCurrentObject(m_hAttribDC, OBJ_PAL)); }
+_AFXWIN_INLINE CFont* CDC::GetCurrentFont() const
+ { ASSERT(m_hAttribDC != NULL); return CFont::FromHandle((HFONT)::GetCurrentObject(m_hAttribDC, OBJ_FONT)); }
+_AFXWIN_INLINE CBitmap* CDC::GetCurrentBitmap() const
+ { ASSERT(m_hAttribDC != NULL); return CBitmap::FromHandle((HBITMAP)::GetCurrentObject(m_hAttribDC, OBJ_BITMAP)); }
+_AFXWIN_INLINE BOOL CDC::PolyBezier(const POINT* lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyBezier(m_hDC, lpPoints, nCount); }
+
+_AFXWIN_INLINE int CDC::DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData)
+ { ASSERT(m_hDC != NULL); return ::DrawEscape(m_hDC, nEscape, nInputSize, lpszInputData); }
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData)
+ { ASSERT(m_hDC != NULL); return ::ExtEscape(m_hDC, nEscape, nInputSize, lpszInputData,
+ nOutputSize, lpszOutputData); }
+
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidthsFloat(m_hAttribDC, nFirstChar, nLastChar, lpABCF); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidthFloat(m_hAttribDC, nFirstChar, nLastChar, lpFloatBuffer); }
+
+_AFXWIN_INLINE BOOL CDC::AbortPath()
+ { ASSERT(m_hDC != NULL); return ::AbortPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::BeginPath()
+ { ASSERT(m_hDC != NULL); return ::BeginPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::CloseFigure()
+ { ASSERT(m_hDC != NULL); return ::CloseFigure(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::EndPath()
+ { ASSERT(m_hDC != NULL); return ::EndPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FillPath()
+ { ASSERT(m_hDC != NULL); return ::FillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FlattenPath()
+ { ASSERT(m_hDC != NULL); return ::FlattenPath(m_hDC); }
+_AFXWIN_INLINE float CDC::GetMiterLimit() const
+ { ASSERT(m_hDC != NULL); float fMiterLimit;
+ VERIFY(::GetMiterLimit(m_hDC, &fMiterLimit)); return fMiterLimit; }
+_AFXWIN_INLINE int CDC::GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const
+ { ASSERT(m_hDC != NULL); return ::GetPath(m_hDC, lpPoints, lpTypes, nCount); }
+_AFXWIN_INLINE BOOL CDC::SetMiterLimit(float fMiterLimit)
+ { ASSERT(m_hDC != NULL); return ::SetMiterLimit(m_hDC, fMiterLimit, NULL); }
+_AFXWIN_INLINE BOOL CDC::StrokeAndFillPath()
+ { ASSERT(m_hDC != NULL); return ::StrokeAndFillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::StrokePath()
+ { ASSERT(m_hDC != NULL); return ::StrokePath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::WidenPath()
+ { ASSERT(m_hDC != NULL); return ::WidenPath(m_hDC); }
+
+_AFXWIN_INLINE BOOL CDC::AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData)
+ { ASSERT(m_hDC != NULL); return ::GdiComment(m_hDC, nDataSize, pCommentData); }
+_AFXWIN_INLINE BOOL CDC::PlayMetaFile(HENHMETAFILE hEnhMF, LPCRECT lpBounds)
+ { ASSERT(m_hDC != NULL); return ::PlayEnhMetaFile(m_hDC, hEnhMF, lpBounds); }
+#endif
+
+// CMenu
+_AFXWIN_INLINE CMenu::CMenu()
+ { m_hMenu = NULL; }
+_AFXWIN_INLINE CMenu::~CMenu()
+ { DestroyMenu(); }
+_AFXWIN_INLINE BOOL CMenu::CreateMenu()
+ { return Attach(::CreateMenu()); }
+_AFXWIN_INLINE BOOL CMenu::CreatePopupMenu()
+ { return Attach(::CreatePopupMenu()); }
+_AFXWIN_INLINE CMenu::operator HMENU() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE BOOL CMenu::DeleteMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::DeleteMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE UINT CMenu::CheckMenuItem(UINT nIDCheckItem, UINT nCheck)
+ { ASSERT(::IsMenu(m_hMenu)); return (UINT)::CheckMenuItem(m_hMenu, nIDCheckItem, nCheck); }
+_AFXWIN_INLINE UINT CMenu::EnableMenuItem(UINT nIDEnableItem, UINT nEnable)
+ { ASSERT(::IsMenu(m_hMenu)); return ::EnableMenuItem(m_hMenu, nIDEnableItem, nEnable); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemCount() const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemCount(m_hMenu); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemID(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemID(m_hMenu, nPos); }
+_AFXWIN_INLINE UINT CMenu::GetMenuState(UINT nID, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuState(m_hMenu, nID, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuString(m_hMenu, nIDItem, lpString, nMaxCount, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); int nResult = ::GetMenuString(m_hMenu, nIDItem,
+ rString.GetBuffer(256), 256, nFlags); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::RemoveMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::RemoveMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked)
+ { ASSERT(::IsMenu(m_hMenu)); return ::SetMenuItemBitmaps(m_hMenu, nPosition, nFlags,
+ (HBITMAP)pBmpUnchecked->GetSafeHandle(),
+ (HBITMAP)pBmpChecked->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(LPCTSTR lpszResourceName)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(lpszResourceName,
+ RT_MENU), lpszResourceName)); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(UINT nIDResource)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_MENU), MAKEINTRESOURCE(nIDResource))); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenuIndirect(const void* lpMenuTemplate)
+ { return Attach(::LoadMenuIndirect(lpMenuTemplate)); }
+// Win4
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CMenu::SetMenuContextHelpId(DWORD dwContextHelpId)
+ { return ::SetMenuContextHelpId(m_hMenu, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CMenu::GetMenuContextHelpId() const
+ { return ::GetMenuContextHelpId(m_hMenu); }
+_AFXWIN_INLINE BOOL CMenu::CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags)
+ { return ::CheckMenuRadioItem(m_hMenu, nIDFirst, nIDLast, nIDItem, nFlags); }
+#endif
+
+// CCmdUI
+_AFXWIN_INLINE void CCmdUI::ContinueRouting()
+ { m_bContinueRouting = TRUE; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc42/afxwin2.inl b/public/sdk/inc/mfc42/afxwin2.inl
new file mode 100644
index 000000000..c84797b7b
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin2.inl
@@ -0,0 +1,1043 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 2)
+
+#ifdef _AFXWIN_INLINE
+
+// CWnd
+_AFXWIN_INLINE CWnd::operator HWND() const
+ { return this == NULL ? NULL : m_hWnd; }
+_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
+ { return this == NULL ? NULL : m_hWnd; }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE DWORD CWnd::GetStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE); }
+_AFXWIN_INLINE DWORD CWnd::GetExStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_EXSTYLE); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyle(m_hWnd, dwRemove, dwAdd, nFlags); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyleEx(m_hWnd, dwRemove, dwAdd, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetOwner() const
+ { return m_hWndOwner != NULL ? CWnd::FromHandle(m_hWndOwner) : GetParent(); }
+_AFXWIN_INLINE void CWnd::SetOwner(CWnd* pOwnerWnd)
+ { m_hWndOwner = pOwnerWnd != NULL ? pOwnerWnd->m_hWnd : NULL; }
+_AFXWIN_INLINE LRESULT CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }
+_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetWindowText(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetWindowText(m_hWnd, lpszString); }
+_AFXWIN_INLINE int CWnd::GetWindowText(LPTSTR lpszString, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowText(m_hWnd, lpszString, nMaxCount); }
+_AFXWIN_INLINE int CWnd::GetWindowTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowTextLength(m_hWnd); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetFont(CFont* pFont, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)pFont->GetSafeHandle(), bRedraw); }
+_AFXWIN_INLINE CFont* CWnd::GetFont() const
+ { ASSERT(::IsWindow(m_hWnd)); return CFont::FromHandle(
+ (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0)); }
+_AFXWIN_INLINE CMenu* CWnd::GetMenu() const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetMenu(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::SetMenu(CMenu* pMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetMenu(m_hWnd, pMenu->GetSafeHmenu()); }
+_AFXWIN_INLINE void CWnd::DrawMenuBar()
+ { ASSERT(::IsWindow(m_hWnd)); ::DrawMenuBar(m_hWnd); }
+_AFXWIN_INLINE CMenu* CWnd::GetSystemMenu(BOOL bRevert) const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetSystemMenu(m_hWnd, bRevert)); }
+_AFXWIN_INLINE BOOL CWnd::HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite)
+ { ASSERT(::IsWindow(m_hWnd)); return ::HiliteMenuItem(m_hWnd, pMenu->m_hMenu, nIDHiliteItem, nHilite); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE int CWnd::GetDlgCtrlID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgCtrlID(m_hWnd); }
+_AFXWIN_INLINE int CWnd::SetDlgCtrlID(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SetWindowLong(m_hWnd, GWL_ID, nID); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsIconic() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsIconic(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::IsZoomed() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsZoomed(m_hWnd); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint)
+ { MoveWindow(lpRect->left, lpRect->top, lpRect->right - lpRect->left,
+ lpRect->bottom - lpRect->top, bRepaint); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),
+ x, y, cx, cy, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE UINT CWnd::ArrangeIconicWindows()
+ { ASSERT(::IsWindow(m_hWnd)); return ::ArrangeIconicWindows(m_hWnd); }
+#endif
+_AFXWIN_INLINE void CWnd::BringWindowToTop()
+ { ASSERT(::IsWindow(m_hWnd)); ::BringWindowToTop(m_hWnd); }
+_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::GetClientRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetClientRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), lpPoint, nCount); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), (LPPOINT)lpRect, 2); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, (LPPOINT)lpRect);
+ ::ClientToScreen(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, (LPPOINT)lpRect);
+ ::ScreenToClient(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE CDC* CWnd::BeginPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::BeginPaint(m_hWnd, lpPaint)); }
+_AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }
+_AFXWIN_INLINE CDC* CWnd::GetDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }
+_AFXWIN_INLINE CDC* CWnd::GetWindowDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetWindowDC(m_hWnd)); }
+_AFXWIN_INLINE int CWnd::ReleaseDC(CDC* pDC)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ReleaseDC(m_hWnd, pDC->m_hDC); }
+_AFXWIN_INLINE void CWnd::UpdateWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::UpdateWindow(m_hWnd); }
+_AFXWIN_INLINE void CWnd::SetRedraw(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETREDRAW, bRedraw, 0); }
+_AFXWIN_INLINE BOOL CWnd::GetUpdateRect(LPRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE int CWnd::GetUpdateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::Invalidate(BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, NULL, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::ValidateRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::ValidateRgn(CRgn* pRgn)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::ShowWindow(int nCmdShow)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ShowWindow(m_hWnd, nCmdShow); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowVisible() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowVisible(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowOwnedPopups(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowOwnedPopups(m_hWnd, bShow); }
+_AFXWIN_INLINE void CWnd::SendMessageToDescendants(
+ UINT message, WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm)
+ { ASSERT(::IsWindow(m_hWnd)); CWnd::SendMessageToDescendants(m_hWnd, message, wParam, lParam, bDeep,
+ bOnlyPerm); }
+_AFXWIN_INLINE CWnd* CWnd::GetDescendantWindow(int nID, BOOL bOnlyPerm) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::GetDescendantWindow(m_hWnd, nID, bOnlyPerm); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsDialogMessage(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDialogMessage(m_hWnd, lpMsg); }
+#endif
+
+_AFXWIN_INLINE CDC* CWnd::GetDCEx(CRgn* prgnClip, DWORD flags)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDCEx(m_hWnd, (HRGN)prgnClip->GetSafeHandle(), flags)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::LockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); return ::LockWindowUpdate(m_hWnd); }
+_AFXWIN_INLINE void CWnd::UnlockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); ::LockWindowUpdate(NULL); }
+#endif
+_AFXWIN_INLINE BOOL CWnd::RedrawWindow(LPCRECT lpRectUpdate, CRgn* prgnUpdate,
+ UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::RedrawWindow(m_hWnd, lpRectUpdate, (HRGN)prgnUpdate->GetSafeHandle(), flags); }
+_AFXWIN_INLINE BOOL CWnd::EnableScrollBar(int nSBFlags, UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::EnableScrollBar(m_hWnd, nSBFlags, nArrowFlags); }
+
+_AFXWIN_INLINE UINT CWnd::SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD))
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
+ (TIMERPROC)lpfnTimer); }
+_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
+ { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowEnabled() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowEnabled(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::EnableWindow(BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableWindow(m_hWnd, bEnable); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetActiveWindow()
+ { return CWnd::FromHandle(::GetActiveWindow()); }
+_AFXWIN_INLINE CWnd* CWnd::SetActiveWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetActiveWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetCapture()
+ { return CWnd::FromHandle(::GetCapture()); }
+_AFXWIN_INLINE CWnd* CWnd::SetCapture()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetCapture(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetFocus()
+ { return CWnd::FromHandle(::GetFocus()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::SetFocus()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetFocus(m_hWnd)); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetDesktopWindow()
+ { return CWnd::FromHandle(::GetDesktopWindow()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::CheckDlgButton(int nIDButton, UINT nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckDlgButton(m_hWnd, nIDButton, nCheck); }
+_AFXWIN_INLINE void CWnd::CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE int CWnd::DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox,
+ nIDStaticPath, nFileType); }
+_AFXWIN_INLINE int CWnd::DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirListComboBox(m_hWnd, lpPathSpec,
+ nIDComboBox, nIDStaticPath, nFileType); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelect(LPTSTR lpString, int nIDListBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectEx(m_hWnd, lpString, _MAX_PATH, nIDListBox); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, _MAX_PATH, nIDComboBox);}
+#endif
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetDlgItem(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); }
+_AFXWIN_INLINE void CWnd::GetDlgItem(int nID, HWND* phWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(phWnd != NULL); *phWnd = ::GetDlgItem(m_hWnd, nID); }
+_AFXWIN_INLINE UINT CWnd::GetDlgItemInt(int nID, BOOL* lpTrans,
+ BOOL bSigned) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);}
+_AFXWIN_INLINE int CWnd::GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);}
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgGroupItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgTabItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE UINT CWnd::IsDlgButtonChecked(int nIDButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDlgButtonChecked(m_hWnd, nIDButton); }
+_AFXWIN_INLINE LPARAM CWnd::SendDlgItemMessage(int nID, UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendDlgItemMessage(m_hWnd, nID, message, wParam, lParam); }
+_AFXWIN_INLINE void CWnd::SetDlgItemInt(int nID, UINT nValue, BOOL bSigned)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned); }
+_AFXWIN_INLINE void CWnd::SetDlgItemText(int nID, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemText(m_hWnd, nID, lpszString); }
+_AFXWIN_INLINE int CWnd::ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip,
+ (HRGN)prgnUpdate->GetSafeHandle(), lpRectUpdate, flags); }
+#endif //_AFX_NO_OCC_SUPPORT
+
+_AFXWIN_INLINE void CWnd::ShowScrollBar(UINT nBar, BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, nBar, bShow); }
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPoint(m_hWnd, point)); }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point, UINT nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPointEx(m_hWnd, point, nFlags)); }
+#endif
+_AFXWIN_INLINE CWnd* PASCAL CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
+ { return CWnd::FromHandle(::FindWindow(lpszClassName, lpszWindowName)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextWindow(UINT nFlag) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextWindow(m_hWnd, nFlag)); }
+_AFXWIN_INLINE CWnd* CWnd::GetTopWindow() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetTopWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetWindow(UINT nCmd) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetWindow(m_hWnd, nCmd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetLastActivePopup() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetLastActivePopup(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::IsChild(const CWnd* pWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsChild(m_hWnd, pWnd->GetSafeHwnd()); }
+_AFXWIN_INLINE CWnd* CWnd::GetParent() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetParent(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::SetParent(CWnd* pWndNewParent)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetParent(m_hWnd,
+ pWndNewParent->GetSafeHwnd())); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::WindowFromPoint(POINT point)
+ { return CWnd::FromHandle(::WindowFromPoint(point)); }
+_AFXWIN_INLINE BOOL CWnd::FlashWindow(BOOL bInvert)
+ { ASSERT(::IsWindow(m_hWnd)); return ::FlashWindow(m_hWnd, bInvert); }
+_AFXWIN_INLINE BOOL CWnd::ChangeClipboardChain(HWND hWndNext)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ChangeClipboardChain(m_hWnd, hWndNext); }
+_AFXWIN_INLINE HWND CWnd::SetClipboardViewer()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetClipboardViewer(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenClipboard()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenClipboard(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetOpenClipboardWindow()
+ { return CWnd::FromHandle(::GetOpenClipboardWindow()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardOwner()
+ { return CWnd::FromHandle(::GetClipboardOwner()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardViewer()
+ { return CWnd::FromHandle(::GetClipboardViewer()); }
+_AFXWIN_INLINE void CWnd::CreateCaret(CBitmap* pBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)pBitmap->GetSafeHandle(), 0, 0); }
+_AFXWIN_INLINE void CWnd::CreateSolidCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight); }
+_AFXWIN_INLINE void CWnd::CreateGrayCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight); }
+_AFXWIN_INLINE CPoint PASCAL CWnd::GetCaretPos()
+ { CPoint point; ::GetCaretPos((LPPOINT)&point); return point; }
+_AFXWIN_INLINE void PASCAL CWnd::SetCaretPos(POINT point)
+ { ::SetCaretPos(point.x, point.y); }
+_AFXWIN_INLINE void CWnd::HideCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::HideCaret(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowCaret(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::SetForegroundWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetForegroundWindow(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetForegroundWindow()
+ { return CWnd::FromHandle(::GetForegroundWindow()); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendNotifyMessage(m_hWnd, message, wParam, lParam); }
+#endif
+
+// Win4
+_AFXWIN_INLINE HICON CWnd::SetIcon(HICON hIcon, BOOL bBigIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_SETICON, bBigIcon, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CWnd::GetIcon(BOOL bBigIcon) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_GETICON, bBigIcon, 0); }
+_AFXWIN_INLINE void CWnd::Print(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+_AFXWIN_INLINE void CWnd::PrintClient(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINTCLIENT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SetWindowContextHelpId(DWORD dwContextHelpId)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowContextHelpId(m_hWnd, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CWnd::GetWindowContextHelpId() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowContextHelpId(m_hWnd); }
+#endif
+
+
+// Default message map implementations
+_AFXWIN_INLINE void CWnd::OnActivateApp(BOOL, HTASK)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnActivate(UINT, CWnd*, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCancelMode()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChildActivate()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnClose()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnContextMenu(CWnd*, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnCreate(LPCREATESTRUCT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroy()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnable(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEndSession(BOOL)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnEraseBkgnd(CDC*)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnGetMinMaxInfo(MINMAXINFO*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnIconEraseBkgnd(CDC*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKillFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE LRESULT CWnd::OnMenuChar(UINT, UINT, CMenu*)
+ { return Default(); }
+_AFXWIN_INLINE void CWnd::OnMenuSelect(UINT, UINT, HMENU)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMove(int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaint()
+ { Default(); }
+_AFXWIN_INLINE HCURSOR CWnd::OnQueryDragIcon()
+ { return (HCURSOR)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryEndSession()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryNewPalette()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryOpen()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnSetCursor(CWnd*, UINT, UINT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnSetFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnShowWindow(BOOL, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSize(UINT, int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTCard(UINT, DWORD)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanging(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanged(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDropFiles(HDROP)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteIsChanging(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcActivate(BOOL)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcCreate(LPCREATESTRUCT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE UINT CWnd::OnNcHitTest(CPoint)
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcPaint()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysCommand(UINT, LPARAM)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCompacting(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnFontChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSpoolerStatus(UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimeChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnMouseActivate(CWnd*, UINT, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimer(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenu(CMenu*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenuPopup(CMenu*, UINT, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnAskCbFormatName(UINT, LPTSTR)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChangeCbChain(HWND, HWND)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroyClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDrawClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnHScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaintClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderAllFormats()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderFormat(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizeClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnVScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE UINT CWnd::OnGetDlgCode()
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnMDIActivate(BOOL, CWnd*, CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnterMenuLoop(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnExitMenuLoop(BOOL)
+ { Default(); }
+// Win4 support
+_AFXWIN_INLINE void CWnd::OnStyleChanged(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnStyleChanging(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizing(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMoving(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCaptureChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnDeviceChange(UINT, DWORD)
+ { return (BOOL)Default(); }
+
+// CWnd dialog data support
+_AFXWIN_INLINE void CWnd::DoDataExchange(CDataExchange*)
+ { } // default does nothing
+
+// CWnd modality support
+_AFXWIN_INLINE void CWnd::BeginModalState()
+ { ::EnableWindow(m_hWnd, FALSE); }
+_AFXWIN_INLINE void CWnd::EndModalState()
+ { ::EnableWindow(m_hWnd, TRUE); }
+
+// CFrameWnd
+_AFXWIN_INLINE void CFrameWnd::DelayUpdateFrameTitle()
+ { m_nIdleFlags |= idleTitle; }
+_AFXWIN_INLINE void CFrameWnd::DelayRecalcLayout(BOOL bNotify)
+ { m_nIdleFlags |= (idleLayout | (bNotify ? idleNotify : 0)); };
+_AFXWIN_INLINE BOOL CFrameWnd::InModalState() const
+ { return m_cModalStack != 0; }
+_AFXWIN_INLINE void CFrameWnd::AddControlBar(CControlBar *pBar)
+ { m_listControlBars.AddTail(pBar); }
+
+// CDialog
+_AFXWIN_INLINE BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd)
+ { return Create(MAKEINTRESOURCE(nIDTemplate), pParentWnd); }
+_AFXWIN_INLINE void CDialog::MapDialogRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapDialogRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CDialog::SetHelpID(UINT nIDR)
+ { m_nIDHelp = nIDR; }
+_AFXWIN_INLINE void CDialog::NextDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 0, 0); }
+_AFXWIN_INLINE void CDialog::PrevDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 1, 0); }
+_AFXWIN_INLINE void CDialog::GotoDlgCtrl(CWnd* pWndCtrl)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, (WPARAM)pWndCtrl->m_hWnd, 1L); }
+_AFXWIN_INLINE void CDialog::SetDefID(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DM_SETDEFID, nID, 0); }
+_AFXWIN_INLINE DWORD CDialog::GetDefID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, DM_GETDEFID, 0, 0); }
+
+// Window control functions
+_AFXWIN_INLINE CStatic::CStatic()
+ { }
+_AFXWIN_INLINE HICON CStatic::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L); }
+_AFXWIN_INLINE HICON CStatic::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HENHMETAFILE CStatic::SetEnhMetaFile(HENHMETAFILE hMetaFile)
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hMetaFile); }
+_AFXWIN_INLINE HENHMETAFILE CStatic::GetEnhMetaFile() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ENHMETAFILE, 0L); }
+_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CStatic::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CStatic::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CStatic::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CButton::CButton()
+ { }
+_AFXWIN_INLINE UINT CButton::GetState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0); }
+_AFXWIN_INLINE void CButton::SetState(BOOL bHighlight)
+ { ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0); }
+_AFXWIN_INLINE int CButton::GetCheck() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); }
+_AFXWIN_INLINE void CButton::SetCheck(int nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }
+_AFXWIN_INLINE UINT CButton::GetButtonStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)GetWindowLong(m_hWnd, GWL_STYLE) & 0xff; }
+_AFXWIN_INLINE void CButton::SetButtonStyle(UINT nStyle, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw); }
+// Win4
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HICON CButton::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CButton::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_ICON, 0L); }
+_AFXWIN_INLINE HBITMAP CButton::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CButton::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CButton::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CButton::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CListBox::CListBox()
+ { }
+_AFXWIN_INLINE int CListBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE int CListBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT,
+ 0, 0); }
+_AFXWIN_INLINE void CListBox::SetHorizontalExtent(int cxExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0); }
+_AFXWIN_INLINE int CListBox::GetSelCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetSelItems(int nMaxItems, LPINT rgIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex); }
+_AFXWIN_INLINE int CListBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0);}
+_AFXWIN_INLINE DWORD CListBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CListBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CListBox::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXWIN_INLINE int CListBox::GetSel(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetSel(int nIndex, BOOL bSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex); }
+_AFXWIN_INLINE int CListBox::GetText(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CListBox::GetTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CListBox::SetColumnWidth(int cxWidth)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CListBox::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop); }
+_AFXWIN_INLINE int CListBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CListBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CListBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CListBox::GetCaretIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0L); }
+_AFXWIN_INLINE int CListBox::SetCaretIndex(int nIndex, BOOL bScroll)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0)); }
+_AFXWIN_INLINE int CListBox::AddString(LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::InsertString(int nIndex, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem); }
+_AFXWIN_INLINE void CListBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CListBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CListBox::FindString(int nStartAfter, LPCTSTR lpszItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelectString(int nStartAfter, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
+ { ASSERT(::IsWindow(m_hWnd)); return bSelect ?
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) :
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem); }
+_AFXWIN_INLINE void CListBox::SetAnchorIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::GetAnchorIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CListBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+#endif
+
+_AFXWIN_INLINE CCheckListBox::CCheckListBox()
+ { m_cyText = 0; m_nStyle = 0; }
+_AFXWIN_INLINE UINT CCheckListBox::GetCheckStyle()
+ { return m_nStyle; }
+
+_AFXWIN_INLINE CComboBox::CComboBox()
+ { }
+_AFXWIN_INLINE int CComboBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE DWORD CComboBox::GetEditSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0); }
+_AFXWIN_INLINE BOOL CComboBox::LimitText(int nMaxChars)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0); }
+_AFXWIN_INLINE BOOL CComboBox::SetEditSel(int nStartChar, int nEndChar)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar)); }
+_AFXWIN_INLINE DWORD CComboBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CComboBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)GetItemData(nIndex); }
+_AFXWIN_INLINE int CComboBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CComboBox::GetLBText(int nIndex, LPTSTR lpszText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText); }
+_AFXWIN_INLINE int CComboBox::GetLBTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CComboBox::ShowDropDown(BOOL bShowIt)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0); }
+_AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0);}
+_AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter,
+ (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::SelectString(int nStartAfter, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CComboBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CComboBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CComboBox::SetExtendedUI(BOOL bExtended )
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L); }
+_AFXWIN_INLINE BOOL CComboBox::GetExtendedUI() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L); }
+_AFXWIN_INLINE void CComboBox::GetDroppedControlRect(LPRECT lprect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (DWORD)lprect); }
+_AFXWIN_INLINE BOOL CComboBox::GetDroppedState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L); }
+_AFXWIN_INLINE LCID CComboBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CComboBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CComboBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETTOPINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+_AFXWIN_INLINE void CComboBox::SetHorizontalExtent(UINT nExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SETHORIZONTALEXTENT, nExtent, 0); }
+_AFXWIN_INLINE UINT CComboBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, CB_GETHORIZONTALEXTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetDroppedWidth(UINT nWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETDROPPEDWIDTH, nWidth, 0); }
+_AFXWIN_INLINE int CComboBox::GetDroppedWidth() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETDROPPEDWIDTH, 0, 0); }
+#endif
+_AFXWIN_INLINE CEdit::CEdit()
+ { }
+_AFXWIN_INLINE BOOL CEdit::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXWIN_INLINE int CEdit::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetModify(BOOL bModified)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0); }
+_AFXWIN_INLINE void CEdit::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::GetSel(int& nStartChar, int& nEndChar) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar,(LPARAM)&nEndChar); }
+_AFXWIN_INLINE DWORD CEdit::GetSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, EM_GETSEL, 0, 0); }
+_AFXWIN_INLINE HLOCAL CEdit::GetHandle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetHandle(HLOCAL hBuffer)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
+ {
+ ASSERT(::IsWindow(m_hWnd));
+ *(LPWORD)lpszBuffer = (WORD)nMaxLength;
+ return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
+ }
+_AFXWIN_INLINE void CEdit::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::FmtLines(BOOL bAddEOL)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0); }
+_AFXWIN_INLINE void CEdit::LimitText(int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0); }
+_AFXWIN_INLINE int CEdit::LineFromChar(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0); }
+_AFXWIN_INLINE int CEdit::LineIndex(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0); }
+_AFXWIN_INLINE int CEdit::LineLength(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0); }
+_AFXWIN_INLINE void CEdit::LineScroll(int nLines, int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines); }
+_AFXWIN_INLINE void CEdit::ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText); }
+_AFXWIN_INLINE void CEdit::SetPasswordChar(TCHAR ch)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0); }
+_AFXWIN_INLINE void CEdit::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetRectNP(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetSel(DWORD dwSelection, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL,
+ LOWORD(dwSelection), HIWORD(dwSelection));
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetSel(int nStartChar, int nEndChar, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops,
+ (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CEdit::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS,
+ 1, (LPARAM)(LPINT)&cxEachStop); }
+#endif
+_AFXWIN_INLINE BOOL CEdit::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXWIN_INLINE void CEdit::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CEdit::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CEdit::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CEdit::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::SetReadOnly(BOOL bReadOnly )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXWIN_INLINE int CEdit::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXWIN_INLINE TCHAR CEdit::GetPasswordChar() const
+ { ASSERT(::IsWindow(m_hWnd)); return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE void CEdit::SetMargins(UINT nLeft, UINT nRight)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELONG(nLeft, nRight)); }
+_AFXWIN_INLINE DWORD CEdit::GetMargins() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetLimitText(UINT nMax)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETLIMITTEXT, nMax, 0); }
+_AFXWIN_INLINE UINT CEdit::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0); }
+_AFXWIN_INLINE CPoint CEdit::PosFromChar(UINT nChar) const
+ { ASSERT(::IsWindow(m_hWnd)); return CPoint( (DWORD)::SendMessage(m_hWnd, EM_POSFROMCHAR, nChar, 0)); }
+_AFXWIN_INLINE int CEdit::CharFromPos(CPoint pt) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y)); }
+#endif
+
+_AFXWIN_INLINE CScrollBar::CScrollBar()
+ { }
+_AFXWIN_INLINE int CScrollBar::GetScrollPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetScrollPos(m_hWnd, SB_CTL); }
+_AFXWIN_INLINE int CScrollBar::SetScrollPos(int nPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos); }
+_AFXWIN_INLINE void CScrollBar::SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::ShowScrollBar(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, SB_CTL, bShow); }
+_AFXWIN_INLINE BOOL CScrollBar::EnableScrollBar(UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags); }
+_AFXWIN_INLINE BOOL CScrollBar::SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw)
+ { return CWnd::SetScrollInfo(SB_CTL, lpScrollInfo, bRedraw); }
+_AFXWIN_INLINE BOOL CScrollBar::GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask)
+ { return CWnd::GetScrollInfo(SB_CTL, lpScrollInfo, nMask); }
+_AFXWIN_INLINE int CScrollBar::GetScrollLimit()
+ { return CWnd::GetScrollLimit(SB_CTL); }
+
+
+// MDI functions
+_AFXWIN_INLINE void CMDIFrameWnd::MDIActivate(CWnd* pWndActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIACTIVATE,
+ (WPARAM)pWndActivate->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIIconArrange()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIICONARRANGE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIMaximize(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIMAXIMIZE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDINext()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDINEXT, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIRestore(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIRESTORE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE CMenu* CMDIFrameWnd::MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle((HMENU)::SendMessage(
+ m_hWndMDIClient, WM_MDISETMENU, (WPARAM)pFrameMenu->GetSafeHmenu(),
+ (LPARAM)pWindowMenu->GetSafeHmenu())); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, 0, 0); }
+
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, nType, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, nType, 0); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIDestroy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIDESTROY, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIActivate()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIACTIVATE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIMaximize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIMAXIMIZE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIRestore()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIRESTORE, (WPARAM)m_hWnd, 0L); }
+
+// CView
+_AFXWIN_INLINE CDocument* CView::GetDocument() const
+ { ASSERT(this != NULL); return m_pDocument; }
+_AFXWIN_INLINE CSize CScrollView::GetTotalSize() const
+ { ASSERT(this != NULL); return m_totalLog; }
+
+// CDocument
+_AFXWIN_INLINE const CString& CDocument::GetTitle() const
+ { ASSERT(this != NULL); return m_strTitle; }
+_AFXWIN_INLINE const CString& CDocument::GetPathName() const
+ { ASSERT(this != NULL); return m_strPathName; }
+_AFXWIN_INLINE CDocTemplate* CDocument::GetDocTemplate() const
+ { ASSERT(this != NULL); return m_pDocTemplate; }
+_AFXWIN_INLINE BOOL CDocument::IsModified()
+ { ASSERT(this != NULL); return m_bModified; }
+_AFXWIN_INLINE void CDocument::SetModifiedFlag(BOOL bModified)
+ { ASSERT(this != NULL); m_bModified = bModified; }
+
+// CWinThread
+_AFXWIN_INLINE CWinThread::operator HANDLE() const
+ { return this == NULL ? NULL : m_hThread; }
+_AFXWIN_INLINE BOOL CWinThread::SetThreadPriority(int nPriority)
+ { ASSERT(m_hThread != NULL); return ::SetThreadPriority(m_hThread, nPriority); }
+_AFXWIN_INLINE int CWinThread::GetThreadPriority()
+ { ASSERT(m_hThread != NULL); return ::GetThreadPriority(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::ResumeThread()
+ { ASSERT(m_hThread != NULL); return ::ResumeThread(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::SuspendThread()
+ { ASSERT(m_hThread != NULL); return ::SuspendThread(m_hThread); }
+_AFXWIN_INLINE BOOL CWinThread::PostThreadMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(m_hThread != NULL); return ::PostThreadMessage(m_nThreadID, message, wParam, lParam); }
+
+// CWinApp
+#ifdef _MAC
+#if !defined(_USRDLL)
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControls()
+ { return FALSE; }
+#ifndef _AFXDLL
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControlsStatic()
+ { return FALSE; }
+#endif
+#endif
+#endif
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(LPCTSTR lpszResourceName) const
+ { return ::LoadCursor(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_CURSOR), lpszResourceName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(UINT nIDResource) const
+ { return ::LoadCursor(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_CURSOR), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadStandardCursor(LPCTSTR lpszCursorName) const
+ { return ::LoadCursor(NULL, lpszCursorName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadOEMCursor(UINT nIDCursor) const
+ { return ::LoadCursor(NULL, MAKEINTRESOURCE(nIDCursor)); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(LPCTSTR lpszResourceName) const
+ { return ::LoadIcon(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_ICON), lpszResourceName); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(UINT nIDResource) const
+ { return ::LoadIcon(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_ICON), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HICON CWinApp::LoadStandardIcon(LPCTSTR lpszIconName) const
+ { return ::LoadIcon(NULL, lpszIconName); }
+_AFXWIN_INLINE HICON CWinApp::LoadOEMIcon(UINT nIDIcon) const
+ { return ::LoadIcon(NULL, MAKEINTRESOURCE(nIDIcon)); }
+#ifdef _MAC
+_AFXWIN_INLINE void CWinApp::EnableShellOpen()
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypes(BOOL)
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypesCompat()
+ { }
+_AFXWIN_INLINE void CDocManager::RegisterShellFileTypes(BOOL)
+ { }
+#endif
+
+_AFXWIN_INLINE CWaitCursor::CWaitCursor()
+ { AfxGetApp()->BeginWaitCursor(); }
+_AFXWIN_INLINE CWaitCursor::~CWaitCursor()
+ { AfxGetApp()->EndWaitCursor(); }
+_AFXWIN_INLINE void CWaitCursor::Restore()
+ { AfxGetApp()->RestoreWaitCursor(); }
+
+/////////////////////////////////////////////////////////////////////////////
+// Obsolete and non-portable
+
+#ifndef _MAC
+_AFXWIN_INLINE void CWnd::CloseWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::CloseWindow(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenIcon()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenIcon(m_hWnd); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc42/daogetrw.h b/public/sdk/inc/mfc42/daogetrw.h
new file mode 100644
index 000000000..50f0ed369
--- /dev/null
+++ b/public/sdk/inc/mfc42/daogetrw.h
@@ -0,0 +1,143 @@
+/************************************************************************
+** D A O G E T R W . H *
+** *
+** GetRows interface *
+** *
+** Warning: The interface defined in this file is for internal use by *
+** the Microsoft Foundation Classes and the dbdao C++ classes. *
+** Future releases of DAO may not be completely compatible with this *
+** implementation. However, if you write to the MFC or dbdao *
+** classes that use this interface, those classes will continue to *
+** be compatible even if this underlying interface changes. *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#if !defined (_DAOGETRW_H_)
+#define _DAOGETRW_H_
+
+
+/*
+ Enumerations
+*/
+typedef enum
+ {
+ DAOCOLKIND_IND = 0,
+ DAOCOLKIND_STR,
+ DAOCOLKIND_WSTR
+ } DAOCOLKIND;
+
+typedef enum
+ {
+ DAO_I2 = 0,
+ DAO_I4,
+ DAO_R4,
+ DAO_R8,
+ DAO_CURRENCY,
+ DAO_DATE,
+ DAO_BOOL,
+ DAO_BSTR,
+ DAO_LPSTR,
+ DAO_LPWSTR,
+ DAO_BLOB,
+ DAO_BYTES,
+ DAO_CHAR,
+ DAO_WCHAR,
+ DAO_ANYVARIANT,
+ DAO_BOOKMARK,
+ DAO_BYTE,
+ DAO_GUID,
+ DAO_DATATYPEMAX
+ } DAODATATYPE;
+
+/*
+ Macros
+*/
+#define DAO_NOINDICATOR 0xffffffff
+#define DAO_NULL 0xffffffff
+#define DAO_CANTCOERCE 0xfffffffc
+#define DAO_NOMAXLENGTH 0x00000000
+
+#define DAOROWFETCH_CALLEEALLOCATES 0x00000001
+#define DAOROWFETCH_DONTADVANCE 0x00000002
+#define DAOROWFETCH_FORCEREFRESH 0x00000004
+#define DAOROWFETCH_BINDABSOLUTE 0x00000008
+
+#define DAOBINDING_DIRECT 0x00000001
+#define DAOBINDING_VARIANT 0x00000002
+#define DAOBINDING_CALLBACK 0x00000004
+
+/*
+ Structures
+*/
+typedef struct
+ {
+ DWORD dwKind;
+ union
+ {
+ LONG ind;
+ LPCSTR lpstr;
+ LPCWSTR lpwstr;
+ };
+ } DAOCOLUMNID;
+typedef DAOCOLUMNID *LPDAOCOLUMNID;
+
+// Callback for binding
+EXTERN_C typedef HRESULT (STDAPICALLTYPE *LPDAOBINDFUNC)(ULONG cb, DWORD dwUser, LPVOID *ppData);
+#define DAOBINDINGFUNC(f) STDAPI f (ULONG cb, DWORD dwUser, LPVOID *ppData)
+
+typedef struct
+ {
+ DAOCOLUMNID columnID;
+ ULONG cbDataOffset;
+ ULONG cbMaxLen;
+ ULONG cbInfoOffset;
+ DWORD dwBinding;
+ DWORD dwDataType;
+ DWORD dwUser;
+ } DAOCOLUMNBINDING;
+typedef DAOCOLUMNBINDING *LPDAOCOLUMNBINDING;
+
+typedef struct
+ {
+ ULONG cRowsRequested;
+ DWORD dwFlags;
+ LPVOID pData;
+ LPVOID pVarData;
+ ULONG cbVarData;
+ ULONG cRowsReturned;
+ } DAOFETCHROWS;
+typedef DAOFETCHROWS *LPDAOFETCHROWS;
+
+/*
+ New Errors
+
+ **NOTE: OLE standard ids to be determined.
+*/
+
+#define GETROWSUCCESS(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, x)
+#define GETROWERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, x)
+
+#define S_BUFFERTOOSMALL GETROWSUCCESS(0x1000)
+#define S_ENDOFCURSOR GETROWSUCCESS(0x1001)
+#define S_SILENTCANCEL GETROWSUCCESS(0x1002)
+#define S_RECORDDELETED GETROWSUCCESS(0x1003)
+
+#define E_ROWTOOSHORT GETROWERR(0x1000)
+#define E_BADBINDINFO GETROWERR(0x1001)
+#define E_COLUMNUNAVAILABLE GETROWERR(0x1002)
+
+
+/*
+ Interfaces
+*/
+#undef INTERFACE
+#define INTERFACE ICDAORecordset
+DECLARE_INTERFACE_(ICDAORecordset, IDispatch)
+ {
+ STDMETHOD(GetRows) (THIS_ LONG cRowsToSkip, LONG cCol, LPDAOCOLUMNBINDING prgBndCol, ULONG cbRowLen, LPDAOFETCHROWS pFetchRows) PURE;
+ };
+
+#endif // _DAOGETRW_H_
diff --git a/public/sdk/inc/mfc42/datapath.h b/public/sdk/inc/mfc42/datapath.h
new file mode 100644
index 000000000..40c60737c
--- /dev/null
+++ b/public/sdk/inc/mfc42/datapath.h
@@ -0,0 +1,601 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Thu Jun 13 20:25:13 1996
+ */
+/* Compiler settings for datapath.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __datapath_h__
+#define __datapath_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IObjectWithSite_FWD_DEFINED__
+#define __IObjectWithSite_FWD_DEFINED__
+typedef interface IObjectWithSite IObjectWithSite;
+#endif /* __IObjectWithSite_FWD_DEFINED__ */
+
+
+#ifndef __IDataPathBrowser_FWD_DEFINED__
+#define __IDataPathBrowser_FWD_DEFINED__
+typedef interface IDataPathBrowser IDataPathBrowser;
+#endif /* __IDataPathBrowser_FWD_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo3_FWD_DEFINED__
+#define __IProvideClassInfo3_FWD_DEFINED__
+typedef interface IProvideClassInfo3 IProvideClassInfo3;
+#endif /* __IProvideClassInfo3_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+#include "oaidl.h"
+#include "olectl.h"
+#include "urlmon.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: datapath.h
+
+#pragma comment(lib,"uuid3.lib")
+//
+//--------------------------------------------------------------------------
+
+
+#include "idispids.h"
+typedef BSTR OLE_DATAPATH;
+#define SID_SDataPathBrowser IID_IDataPathBrowser
+
+////////////////////////////////////////////////////////////////////////////
+// State values for the DISPID_READYSTATE property
+
+enum __MIDL___MIDL__intf_0000_0001
+ { READYSTATE_UNINITIALIZED = 1,
+ READYSTATE_LOADING = 0,
+ READYSTATE_LOADED = 2,
+ READYSTATE_INTERACTIVE = 3,
+ READYSTATE_COMPLETE = 4
+ };
+
+////////////////////////////////////////////////////////////////////////////
+// DataPath GUIDs (link to uuid3.lib)
+EXTERN_C const GUID OLE_DATAPATH_BMP;
+EXTERN_C const GUID OLE_DATAPATH_DIB;
+EXTERN_C const GUID OLE_DATAPATH_WMF;
+EXTERN_C const GUID OLE_DATAPATH_ENHMF;
+EXTERN_C const GUID OLE_DATAPATH_GIF;
+EXTERN_C const GUID OLE_DATAPATH_JPEG;
+EXTERN_C const GUID OLE_DATAPATH_TIFF;
+EXTERN_C const GUID OLE_DATAPATH_XBM;
+EXTERN_C const GUID OLE_DATAPATH_PCX;
+EXTERN_C const GUID OLE_DATAPATH_PICT;
+EXTERN_C const GUID OLE_DATAPATH_CGM;
+EXTERN_C const GUID OLE_DATAPATH_EPS;
+EXTERN_C const GUID OLE_DATAPATH_COMMONIMAGE;
+EXTERN_C const GUID OLE_DATAPATH_ALLIMAGE;
+EXTERN_C const GUID OLE_DATAPATH_AVI;
+EXTERN_C const GUID OLE_DATAPATH_MPEG;
+EXTERN_C const GUID OLE_DATAPATH_QUICKTIME;
+EXTERN_C const GUID OLE_DATAPATH_BASICAUDIO;
+EXTERN_C const GUID OLE_DATAPATH_MIDI;
+EXTERN_C const GUID OLE_DATAPATH_WAV;
+EXTERN_C const GUID OLE_DATAPATH_RIFF;
+EXTERN_C const GUID OLE_DATAPATH_SOUND;
+EXTERN_C const GUID OLE_DATAPATH_VIDEO;
+EXTERN_C const GUID OLE_DATAPATH_ALLMM;
+EXTERN_C const GUID OLE_DATAPATH_ANSITEXT;
+EXTERN_C const GUID OLE_DATAPATH_UNICODE;
+EXTERN_C const GUID OLE_DATAPATH_RTF;
+EXTERN_C const GUID OLE_DATAPATH_HTML;
+EXTERN_C const GUID OLE_DATAPATH_POSTSCRIPT;
+EXTERN_C const GUID OLE_DATAPATH_ALLTEXT;
+EXTERN_C const GUID OLE_DATAPATH_DIF;
+EXTERN_C const GUID OLE_DATAPATH_SYLK;
+EXTERN_C const GUID OLE_DATAPATH_BIFF;
+EXTERN_C const GUID OLE_DATAPATH_PALETTE;
+EXTERN_C const GUID OLE_DATAPATH_PENDATA;
+////////////////////////////////////////////////////////////////////////////
+
+EXTERN_C const GUID FLAGID_Internet;
+EXTERN_C const GUID GUID_PathProperty;
+EXTERN_C const GUID GUID_HasPathProperties;
+
+////////////////////////////////////////////////////////////////////////////
+// ARRAYID GUIDs (link to uuid3.lib)
+EXTERN_C const GUID ARRAYID_PathProperties;
+
+////////////////////////////////////////////////////////////////////////////
+// Interface Definitions
+#ifndef _LPOBJECTWITHSITE_DEFINED
+#define _LPOBJECTWITHSITE_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IObjectWithSite_INTERFACE_DEFINED__
+#define __IObjectWithSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IObjectWithSite
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][object][uuid] */
+
+
+typedef /* [unique] */ IObjectWithSite __RPC_FAR *LPOBJECTWITHSITE;
+
+
+EXTERN_C const IID IID_IObjectWithSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IObjectWithSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetSite(
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSite(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IObjectWithSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IObjectWithSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IObjectWithSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+ END_INTERFACE
+ } IObjectWithSiteVtbl;
+
+ interface IObjectWithSite
+ {
+ CONST_VTBL struct IObjectWithSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IObjectWithSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IObjectWithSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IObjectWithSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IObjectWithSite_SetSite(This,pUnkSite) \
+ (This)->lpVtbl -> SetSite(This,pUnkSite)
+
+#define IObjectWithSite_GetSite(This,riid,ppvSite) \
+ (This)->lpVtbl -> GetSite(This,riid,ppvSite)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_SetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+
+void __RPC_STUB IObjectWithSite_SetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_GetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+
+void __RPC_STUB IObjectWithSite_GetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IObjectWithSite_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0119
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPDATAPATHBROWSER_DEFINED
+#define _LPDATAPATHBROWSER_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0119_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0119_v0_0_s_ifspec;
+
+#ifndef __IDataPathBrowser_INTERFACE_DEFINED__
+#define __IDataPathBrowser_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataPathBrowser
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][object][local][uuid] */
+
+
+
+EXTERN_C const IID IID_IDataPathBrowser;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataPathBrowser : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE BrowseType(
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataPathBrowserVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataPathBrowser __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataPathBrowser __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BrowseType )(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd);
+
+ END_INTERFACE
+ } IDataPathBrowserVtbl;
+
+ interface IDataPathBrowser
+ {
+ CONST_VTBL struct IDataPathBrowserVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataPathBrowser_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataPathBrowser_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataPathBrowser_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataPathBrowser_BrowseType(This,rguidPathType,pszDefaultPath,cchPath,pszPath,hWnd) \
+ (This)->lpVtbl -> BrowseType(This,rguidPathType,pszDefaultPath,cchPath,pszPath,hWnd)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDataPathBrowser_BrowseType_Proxy(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd);
+
+
+void __RPC_STUB IDataPathBrowser_BrowseType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataPathBrowser_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0120
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPPROVIDECLASSINFO3_DEFINED
+#define _LPPROVIDECLASSINFO3_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0120_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0120_v0_0_s_ifspec;
+
+#ifndef __IProvideClassInfo3_INTERFACE_DEFINED__
+#define __IProvideClassInfo3_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProvideClassInfo3
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IProvideClassInfo3 __RPC_FAR *LPPROVIDECLASSINFO3;
+
+
+enum __MIDL_IProvideClassInfo3_0001
+ { INTERNETFLAG_USESDATAPATHS = 0x1
+ };
+
+EXTERN_C const IID IID_IProvideClassInfo3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProvideClassInfo3 : public IProvideClassInfo2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGUIDDwordArrays(
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClassInfoLocale(
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFlags(
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProvideClassInfo3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProvideClassInfo3 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProvideClassInfo3 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfo )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUID )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ DWORD dwGuidKind,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUIDDwordArrays )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfoLocale )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags);
+
+ END_INTERFACE
+ } IProvideClassInfo3Vtbl;
+
+ interface IProvideClassInfo3
+ {
+ CONST_VTBL struct IProvideClassInfo3Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProvideClassInfo3_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProvideClassInfo3_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProvideClassInfo3_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProvideClassInfo3_GetClassInfo(This,ppTI) \
+ (This)->lpVtbl -> GetClassInfo(This,ppTI)
+
+
+#define IProvideClassInfo3_GetGUID(This,dwGuidKind,pGUID) \
+ (This)->lpVtbl -> GetGUID(This,dwGuidKind,pGUID)
+
+
+#define IProvideClassInfo3_GetGUIDDwordArrays(This,rguidArray,pcaUUID,pcadw) \
+ (This)->lpVtbl -> GetGUIDDwordArrays(This,rguidArray,pcaUUID,pcadw)
+
+#define IProvideClassInfo3_GetClassInfoLocale(This,ppITypeInfo,lcid) \
+ (This)->lpVtbl -> GetClassInfoLocale(This,ppITypeInfo,lcid)
+
+#define IProvideClassInfo3_GetFlags(This,guidGroup,pdwFlags) \
+ (This)->lpVtbl -> GetFlags(This,guidGroup,pdwFlags)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetGUIDDwordArrays_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw);
+
+
+void __RPC_STUB IProvideClassInfo3_GetGUIDDwordArrays_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetClassInfoLocale_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid);
+
+
+void __RPC_STUB IProvideClassInfo3_GetClassInfoLocale_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetFlags_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags);
+
+
+void __RPC_STUB IProvideClassInfo3_GetFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProvideClassInfo3_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0121
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0121_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0121_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/dbdaoerr.h b/public/sdk/inc/mfc42/dbdaoerr.h
new file mode 100644
index 000000000..d5f4e738d
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoerr.h
@@ -0,0 +1,448 @@
+
+/************************************************************************
+** D B D A O E R R . H * *
+** *
+** History *
+** ------- *
+** 5-17-95 Added to DAO SDK *
+** 7-17-95 Added DBDAOERR macro, removed internal only codes *
+** *
+** The following #defines map the integer to a descriptive name
+** i.e. 3270 -> E_DAO_VtoPropNotFound *
+** *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#ifndef _DBDAOERR_H_
+#define _DBDAOERR_H_
+
+#define DBDAOERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, x)
+
+#define E_DAO_InternalError DBDAOERR(3000) //Reserved error (|); there is no message for this error.
+#define E_DAO_InvalidParameter DBDAOERR(3001) //Invalid argument.
+#define E_DAO_CantBegin DBDAOERR(3002) //Couldn't start session.
+#define E_DAO_TransTooDeep DBDAOERR(3003) //Couldn't start transaction; too many transactions already nested.
+#define E_DAO_DatabaseNotFound DBDAOERR(3004) //Couldn't find database '|'.
+#define E_DAO_DatabaseInvalidName DBDAOERR(3005) //'|' isn't a valid database name.
+#define E_DAO_DatabaseLocked DBDAOERR(3006) //Database '|' is exclusively locked.
+#define E_DAO_DatabaseOpenError DBDAOERR(3007) //Can't open library database '|'.
+#define E_DAO_TableLocked DBDAOERR(3008) //Table '|' is exclusively locked.
+#define E_DAO_TableInUse DBDAOERR(3009) //Couldn't lock table '|'; currently in use.
+#define E_DAO_TableDuplicate DBDAOERR(3010) //Table '|' already exists.
+#define E_DAO_ObjectNotFound DBDAOERR(3011) //Couldn't find object '|'.
+#define E_DAO_ObjectDuplicate DBDAOERR(3012) //Object '|' already exists.
+#define E_DAO_CannotRename DBDAOERR(3013) //Couldn't rename installable ISAM file.
+#define E_DAO_TooManyOpenTables DBDAOERR(3014) //Can't open any more tables.
+#define E_DAO_IndexNotFound DBDAOERR(3015) //'|' isn't an index in this table.
+#define E_DAO_ColumnDoesNotFit DBDAOERR(3016) //Field won't fit in record.
+#define E_DAO_ColumnTooBig DBDAOERR(3017) //The size of a field is too long.
+#define E_DAO_ColumnNotFound DBDAOERR(3018) //Couldn't find field '|'.
+#define E_DAO_NoCurrentIndex DBDAOERR(3019) //Operation invalid without a current index.
+#define E_DAO_RecordNoCopy DBDAOERR(3020) //Update or CancelUpdate without AddNew or Edit.
+#define E_DAO_NoCurrentRecord DBDAOERR(3021) //No current record.
+#define E_DAO_KeyDuplicate DBDAOERR(3022) //Duplicate value in index, primary key, or relationship. Changes were unsuccessful.
+#define E_DAO_AlreadyPrepared DBDAOERR(3023) //AddNew or Edit already used.
+#define E_DAO_FileNotFound DBDAOERR(3024) //Couldn't find file '|'.
+#define E_DAO_TooManyOpenFiles DBDAOERR(3025) //Can't open any more files.
+#define E_DAO_DiskFull DBDAOERR(3026) //Not enough space on disk.
+#define E_DAO_PermissionDenied DBDAOERR(3027) //Can't update. Database or object is read-only.
+#define E_DAO_CannotOpenSystemDb DBDAOERR(3028) //Can't start your application. The system database is missing or opened exclusively by another user.
+#define E_DAO_InvalidLogon DBDAOERR(3029) //Not a valid account name or password.
+#define E_DAO_InvalidAccountName DBDAOERR(3030) //'|' isn't a valid account name.
+#define E_DAO_InvalidPassword DBDAOERR(3031) //Not a valid password.
+#define E_DAO_InvalidOperation DBDAOERR(3032) //Can't perform this operation.
+#define E_DAO_AccessDenied DBDAOERR(3033) //No permission for '|'.
+#define E_DAO_NotInTransaction DBDAOERR(3034) //Commit or Rollback without BeginTrans.
+#define E_DAO_OutOfMemory DBDAOERR(3035) //*
+#define E_DAO_CantAllocatePage DBDAOERR(3036) //Database has reached maximum size.
+#define E_DAO_NoMoreCursors DBDAOERR(3037) //Can't open any more tables or queries.
+#define E_DAO_OutOfBuffers DBDAOERR(3038) //*
+#define E_DAO_TooManyIndexes DBDAOERR(3039) //Couldn't create index; too many indexes already defined.
+#define E_DAO_ReadVerifyFailure DBDAOERR(3040) //Disk I/O error during read.
+#define E_DAO_FilesysVersion DBDAOERR(3041) //Can't open a database created with a previous version of your application.
+#define E_DAO_NoMoreFiles DBDAOERR(3042) //Out of MS-DOS file handles.
+#define E_DAO_DiskError DBDAOERR(3043) //Disk or network error.
+#define E_DAO_InvalidPath DBDAOERR(3044) //'|' isn't a valid path.
+#define E_DAO_FileShareViolation DBDAOERR(3045) //Couldn't use '|'; file already in use.
+#define E_DAO_FileLockViolation DBDAOERR(3046) //Couldn't save; currently locked by another user.
+#define E_DAO_RecordTooBig DBDAOERR(3047) //Record is too large.
+#define E_DAO_TooManyOpenDatabases DBDAOERR(3048) //Can't open any more databases.
+#define E_DAO_InvalidDatabase DBDAOERR(3049) //Can't open database '|'. It may not be a database that your application recognizes, or the file may be corrupt.
+#define E_DAO_FileLockingUnavailable DBDAOERR(3050) //Couldn't lock file.
+#define E_DAO_FileAccessDenied DBDAOERR(3051) //Couldn't open file '|'.
+#define E_DAO_SharingBufferExceeded DBDAOERR(3052) //MS-DOS file sharing lock count exceeded. You need to increase the number of locks installed with SHARE.EXE.
+#define E_DAO_TaskLimitExceeded DBDAOERR(3053) //Too many client tasks.
+#define E_DAO_TooManyLongColumns DBDAOERR(3054) //Too many Memo or OLE object fields.
+#define E_DAO_InvalidFilename DBDAOERR(3055) //Not a valid file name.
+#define E_DAO_AbortSalvage DBDAOERR(3056) //Couldn't repair this database.
+#define E_DAO_LinkNotSupported DBDAOERR(3057) //Operation not supported on attached, or linked, tables.
+#define E_DAO_NullKeyDisallowed DBDAOERR(3058) //Index or primary key can't contain a null value.
+#define E_DAO_OperationCanceled DBDAOERR(3059) //Operation canceled by user.
+#define E_DAO_QueryParmTypeMismatch DBDAOERR(3060) //Wrong data type for parameter '|'.
+#define E_DAO_QueryMissingParmsM DBDAOERR(3061) //Too few parameters. Expected |.
+#define E_DAO_QueryDuplicateAliasM DBDAOERR(3062) //Duplicate output alias '|'.
+#define E_DAO_QueryDuplicateOutputM DBDAOERR(3063) //Duplicate output destination '|'.
+#define E_DAO_QueryIsBulkOp DBDAOERR(3064) //Can't open action query '|'.
+#define E_DAO_QueryIsNotBulkOp DBDAOERR(3065) //Can't execute a non-action query.
+#define E_DAO_QueryNoOutputsM DBDAOERR(3066) //Query or table must contain at least one output field.
+#define E_DAO_QueryNoInputTablesM DBDAOERR(3067) //Query input must contain at least one table or query.
+#define E_DAO_QueryInvalidAlias DBDAOERR(3068) //Not a valid alias name.
+#define E_DAO_QueryInvalidBulkInputM DBDAOERR(3069) //The action query '|' cannot be used as a row source.
+#define E_DAO_QueryUnboundRef DBDAOERR(3070) //Can't bind name '|'.
+#define E_DAO_QueryExprEvaluation DBDAOERR(3071) //Can't evaluate expression.
+#define E_DAO_EvalEBESErr DBDAOERR(3072) //|
+#define E_DAO_QueryNotUpdatable DBDAOERR(3073) //Operation must use an updatable query.
+#define E_DAO_TableRepeatInFromList DBDAOERR(3074) //Can't repeat table name '|' in FROM clause.
+#define E_DAO_QueryExprSyntax DBDAOERR(3075) //|1 in query expression '|2'.
+#define E_DAO_QbeExprSyntax DBDAOERR(3076) //| in criteria expression.
+#define E_DAO_FindExprSyntax DBDAOERR(3077) //| in expression.
+#define E_DAO_InputTableNotFound DBDAOERR(3078) //Couldn't find input table or query '|'.
+#define E_DAO_QueryAmbigRefM DBDAOERR(3079) //Ambiguous field reference '|'.
+#define E_DAO_JoinTableNotInput DBDAOERR(3080) //Joined table '|' not listed in FROM clause.
+#define E_DAO_UnaliasedSelfJoin DBDAOERR(3081) //Can't join more than one table with the same name (|).
+#define E_DAO_ColumnNotInJoinTable DBDAOERR(3082) //JOIN operation '|' refers to a non-joined table.
+#define E_DAO_QueryIsMGB DBDAOERR(3083) //Can't use internal report query.
+#define E_DAO_QueryInsIntoBulkMGB DBDAOERR(3084) //Can't insert data with action query.
+#define E_DAO_ExprUnknownFunctionM DBDAOERR(3085) //Undefined function '|' in expression.
+#define E_DAO_QueryCannotDelete DBDAOERR(3086) //Couldn't delete from specified tables.
+#define E_DAO_QueryTooManyGroupExprs DBDAOERR(3087) //Too many expressions in GROUP BY clause.
+#define E_DAO_QueryTooManyOrderExprs DBDAOERR(3088) //Too many expressions in ORDER BY clause.
+#define E_DAO_QueryTooManyDistExprs DBDAOERR(3089) //Too many expressions in DISTINCT output.
+#define E_DAO_Column2ndSysMaint DBDAOERR(3090) //Resultant table not allowed to have more than one Counter or Autonumber field.
+#define E_DAO_HavingWOGrouping DBDAOERR(3091) //HAVING clause (|) without grouping or aggregation.
+#define E_DAO_HavingOnTransform DBDAOERR(3092) //Can't use HAVING clause in TRANSFORM statement.
+#define E_DAO_OrderVsDistinct DBDAOERR(3093) //ORDER BY clause (|) conflicts with DISTINCT.
+#define E_DAO_OrderVsGroup DBDAOERR(3094) //ORDER BY clause (|) conflicts with GROUP BY clause.
+#define E_DAO_AggregateInArgument DBDAOERR(3095) //Can't have aggregate function in expression (|).
+#define E_DAO_AggregateInWhere DBDAOERR(3096) //Can't have aggregate function in WHERE clause (|).
+#define E_DAO_AggregateInOrderBy DBDAOERR(3097) //Can't have aggregate function in ORDER BY clause (|).
+#define E_DAO_AggregateInGroupBy DBDAOERR(3098) //Can't have aggregate function in GROUP BY clause (|).
+#define E_DAO_AggregateInJoin DBDAOERR(3099) //Can't have aggregate function in JOIN operation (|).
+#define E_DAO_NullInJoinKey DBDAOERR(3100) //Can't set field '|' in join key to Null.
+#define E_DAO_ValueBreaksJoin DBDAOERR(3101) //There is no record in table '|2' with key matching field(s) '|1'.
+#define E_DAO_QueryTreeCycle DBDAOERR(3102) //Circular reference caused by '|'.
+#define E_DAO_OutputAliasCycle DBDAOERR(3103) //Circular reference caused by alias '|' in query definition's SELECT list.
+#define E_DAO_QryDuplicatedFixedSetM DBDAOERR(3104) //Can't specify Fixed Column Heading '|' in a crosstab query more than once.
+#define E_DAO_NoSelectIntoColumnName DBDAOERR(3105) //Missing destination field name in SELECT INTO statement (|).
+#define E_DAO_NoUpdateColumnName DBDAOERR(3106) //Missing destination field name in UPDATE statement (|).
+#define E_DAO_QueryNoInsertPerm DBDAOERR(3107) //Record(s) can't be added; no Insert Data permission on '|'.
+#define E_DAO_QueryNoReplacePerm DBDAOERR(3108) //Record(s) can't be edited; no Update Data permission on '|'.
+#define E_DAO_QueryNoDeletePerm DBDAOERR(3109) //Record(s) can't be deleted; no Delete Data permission on '|'.
+#define E_DAO_QueryNoReadDefPerm DBDAOERR(3110) //Couldn't read definitions; no Read Design permission for table or query '|'.
+#define E_DAO_QueryNoTblCrtPerm DBDAOERR(3111) //Couldn't create; no Create permission for table or query '|'.
+#define E_DAO_QueryNoReadPerm DBDAOERR(3112) //Record(s) can't be read; no Read Data permission on '|'.
+#define E_DAO_QueryColNotUpd DBDAOERR(3113) //Can't update '|'; field not updatable.
+#define E_DAO_QueryLVInDistinct DBDAOERR(3114) //Can't include Memo or OLE object when you select unique values (|).
+#define E_DAO_QueryLVInAggregate DBDAOERR(3115) //Can't have Memo or OLE object in aggregate argument (|).
+#define E_DAO_QueryLVInHaving DBDAOERR(3116) //Can't have Memo or OLE object in criteria (|) for aggregate function.
+#define E_DAO_QueryLVInOrderBy DBDAOERR(3117) //Can't sort on Memo or OLE object (|).
+#define E_DAO_QueryLVInJoin DBDAOERR(3118) //Can't join on Memo or OLE object (|).
+#define E_DAO_QueryLVInGroupBy DBDAOERR(3119) //Can't group on Memo or OLE object (|).
+#define E_DAO_DotStarWithGrouping DBDAOERR(3120) //Can't group on fields selected with '*' (|).
+#define E_DAO_StarWithGrouping DBDAOERR(3121) //Can't group on fields selected with '*'.
+#define E_DAO_IllegalDetailRef DBDAOERR(3122) //'|' not part of aggregate function or grouping.
+#define E_DAO_StarNotAtLevel0 DBDAOERR(3123) //Can't use '*' in crosstab query.
+#define E_DAO_QueryInvalidMGBInput DBDAOERR(3124) //Can't input from internal report query (|).
+#define E_DAO_InvalidName DBDAOERR(3125) //'|' isn't a valid name.
+#define E_DAO_QueryBadBracketing DBDAOERR(3126) //Invalid bracketing of name '|'.
+#define E_DAO_InsertIntoUnknownCol DBDAOERR(3127) //INSERT INTO statement contains unknown field name '|'.
+#define E_DAO_QueryNoDeleteTables DBDAOERR(3128) //Must specify tables to delete from.
+#define E_DAO_SQLSyntax DBDAOERR(3129) //Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
+#define E_DAO_SQLDeleteSyntax DBDAOERR(3130) //Syntax error in DELETE statement.
+#define E_DAO_SQLFromSyntax DBDAOERR(3131) //Syntax error in FROM clause.
+#define E_DAO_SQLGroupBySyntax DBDAOERR(3132) //Syntax error in GROUP BY clause.
+#define E_DAO_SQLHavingSyntax DBDAOERR(3133) //Syntax error in HAVING clause.
+#define E_DAO_SQLInsertSyntax DBDAOERR(3134) //Syntax error in INSERT statement.
+#define E_DAO_SQLJoinSyntax DBDAOERR(3135) //Syntax error in JOIN operation.
+#define E_DAO_SQLLevelSyntax DBDAOERR(3136) //Syntax error in LEVEL clause.
+#define E_DAO_SQLMissingSemicolon DBDAOERR(3137) //Missing semicolon (;) at end of SQL statement.
+#define E_DAO_SQLOrderBySyntax DBDAOERR(3138) //Syntax error in ORDER BY clause.
+#define E_DAO_SQLParameterSyntax DBDAOERR(3139) //Syntax error in PARAMETER clause.
+#define E_DAO_SQLProcedureSyntax DBDAOERR(3140) //Syntax error in PROCEDURE clause.
+#define E_DAO_SQLSelectSyntax DBDAOERR(3141) //Syntax error in SELECT statement.
+#define E_DAO_SQLTooManyTokens DBDAOERR(3142) //Characters found after end of SQL statement.
+#define E_DAO_SQLTransformSyntax DBDAOERR(3143) //Syntax error in TRANSFORM statement.
+#define E_DAO_SQLUpdateSyntax DBDAOERR(3144) //Syntax error in UPDATE statement.
+#define E_DAO_SQLWhereSyntax DBDAOERR(3145) //Syntax error in WHERE clause.
+#define E_DAO_RmtSQLCError DBDAOERR(3146) //ODBC--call failed.
+#define E_DAO_RmtDataOverflow DBDAOERR(3147) //*
+#define E_DAO_RmtConnectFailed DBDAOERR(3148) //*
+#define E_DAO_RmtIncorrectSqlcDll DBDAOERR(3149) //*
+#define E_DAO_RmtMissingSqlcDll DBDAOERR(3150) //*
+#define E_DAO_RmtConnectFailedM DBDAOERR(3151) //ODBC--connection to '|' failed.
+#define E_DAO_RmtDrvrVer DBDAOERR(3152) //*
+#define E_DAO_RmtSrvrVer DBDAOERR(3153) //*
+#define E_DAO_RmtMissingOdbcDll DBDAOERR(3154) //ODBC--couldn't find DLL '|'.
+#define E_DAO_RmtInsertFailedM DBDAOERR(3155) //ODBC--insert failed on attached (linked) table '|'.
+#define E_DAO_RmtDeleteFailedM DBDAOERR(3156) //ODBC--delete failed on attached (linked) table '|'.
+#define E_DAO_RmtUpdateFailedM DBDAOERR(3157) //ODBC--update failed on attached (linked) table '|'.
+#define E_DAO_RecordLocked DBDAOERR(3158) //Couldn't save record; currently locked by another user.
+#define E_DAO_InvalidBookmark DBDAOERR(3159) //Not a valid bookmark.
+#define E_DAO_TableNotOpen DBDAOERR(3160) //Table isn't open.
+#define E_DAO_DecryptFail DBDAOERR(3161) //Couldn't decrypt file.
+#define E_DAO_NullInvalid DBDAOERR(3162) //Null is invalid.
+#define E_DAO_InvalidBufferSize DBDAOERR(3163) //Couldn't perform operation; data too long for field.
+#define E_DAO_ColumnNotUpdatable DBDAOERR(3164) //Field can't be updated.
+#define E_DAO_CantMakeINFFile DBDAOERR(3165) //Couldn't open .INF file.
+#define E_DAO_MissingMemoFile DBDAOERR(3166) //Missing memo file.
+#define E_DAO_RecordDeleted DBDAOERR(3167) //Record is deleted.
+#define E_DAO_INFFileError DBDAOERR(3168) //Invalid .INF file.
+#define E_DAO_ExprIllegalType DBDAOERR(3169) //Illegal type in expression.
+#define E_DAO_InstalIsamNotFound DBDAOERR(3170) //Couldn't find installable ISAM.
+#define E_DAO_NoConfigParameters DBDAOERR(3171) //Couldn't find net path or user name.
+#define E_DAO_CantAccessPdoxNetDir DBDAOERR(3172) //Couldn't open PARADOX.NET.
+#define E_DAO_NoMSysAccounts DBDAOERR(3173) //Couldn't open table 'MSysAccounts' in the system database file.
+#define E_DAO_NoMSysGroups DBDAOERR(3174) //Couldn't open table 'MSysGroups' in the system database file.
+#define E_DAO_DateOutOfRange DBDAOERR(3175) //Date is out of range or is in an invalid format.
+#define E_DAO_ImexCantOpenFile DBDAOERR(3176) //Couldn't open file '|'.
+#define E_DAO_ImexBadTableName DBDAOERR(3177) //Not a valid table name.
+#define E_DAO_ImexOutOfMemory DBDAOERR(3178) //*
+#define E_DAO_ImexEndofFile DBDAOERR(3179) //Encountered unexpected end of file.
+#define E_DAO_ImexCantWriteToFile DBDAOERR(3180) //Couldn't write to file '|'.
+#define E_DAO_ImexBadRange DBDAOERR(3181) //Invalid range.
+#define E_DAO_ImexBogusFile DBDAOERR(3182) //Invalid file format.
+#define E_DAO_TempDiskFull DBDAOERR(3183) //Not enough space on temporary disk.
+#define E_DAO_RmtLinkNotFound DBDAOERR(3184) //Couldn't execute query; couldn't find attached, or linked, table.
+#define E_DAO_RmtTooManyColumns DBDAOERR(3185) //SELECT INTO remote database tried to produce too many fields.
+#define E_DAO_ReadConflictM DBDAOERR(3186) //Couldn't save; currently locked by user '|2' on machine '|1'.
+#define E_DAO_CommitConflictM DBDAOERR(3187) //Couldn't read; currently locked by user '|2' on machine '|1'.
+#define E_DAO_SessionWriteConflict DBDAOERR(3188) //Couldn't update; currently locked by another session on this machine.
+#define E_DAO_JetSpecialTableLocked DBDAOERR(3189) //Table '|1' is exclusively locked by user '|3' on machine '|2'.
+#define E_DAO_TooManyColumns DBDAOERR(3190) //Too many fields defined.
+#define E_DAO_ColumnDuplicate DBDAOERR(3191) //Can't define field more than once.
+#define E_DAO_OutputTableNotFound DBDAOERR(3192) //Couldn't find output table '|'.
+#define E_DAO_JetNoUserName DBDAOERR(3193) //(unknown)
+#define E_DAO_JetNoMachineName DBDAOERR(3194) //(unknown)
+#define E_DAO_JetNoColumnName DBDAOERR(3195) //(expression)
+#define E_DAO_DatabaseInUse DBDAOERR(3196) //Couldn't use '|'; database already in use.
+#define E_DAO_DataHasChanged DBDAOERR(3197) //Data has changed; operation stopped.
+#define E_DAO_TooManySessions DBDAOERR(3198) //Couldn't start session. Too many sessions already active.
+#define E_DAO_ReferenceNotFound DBDAOERR(3199) //Couldn't find reference.
+#define E_DAO_IntegrityViolMasterM DBDAOERR(3200) //Can't delete or change record. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_IntegrityViolSlaveM DBDAOERR(3201) //Can't add or change record. Referential integrity rules require a related record in table '|'.
+#define E_DAO_ReadConflict DBDAOERR(3202) //Couldn't save; currently locked by another user.
+#define E_DAO_AggregatingHigherLevel DBDAOERR(3203) //Can't specify subquery in expression (|).
+#define E_DAO_DatabaseDuplicate DBDAOERR(3204) //Database already exists.
+#define E_DAO_QueryTooManyXvtColumn DBDAOERR(3205) //Too many crosstab column headers (|).
+#define E_DAO_SelfReference DBDAOERR(3206) //Can't create a relationship between a field and itself.
+#define E_DAO_CantUseUnkeyedTable DBDAOERR(3207) //Operation not supported on Paradox table with no primary key.
+#define E_DAO_IllegalDeletedOption DBDAOERR(3208) //Invalid Deleted entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalStatsOption DBDAOERR(3209) //Invalid Stats entry in the Xbase section of initialization setting.
+#define E_DAO_ConnStrTooLong DBDAOERR(3210) //Connection string too long.
+#define E_DAO_TableInUseQM DBDAOERR(3211) //Couldn't lock table '|'; currently in use.
+#define E_DAO_JetSpecialTableInUse DBDAOERR(3212) //Couldn't lock table '|1'; currently in use by user '|3' on machine '|2'.
+#define E_DAO_IllegalDateOption DBDAOERR(3213) //Invalid Date entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalMarkOption DBDAOERR(3214) //Invalid Mark entry in the Xbase section of initialization setting.
+#define E_DAO_BtrieveTooManyTasks DBDAOERR(3215) //Too many Btrieve tasks.
+#define E_DAO_QueryParmNotTableid DBDAOERR(3216) //Parameter '|' specified where a table name is required.
+#define E_DAO_QueryParmNotDatabase DBDAOERR(3217) //Parameter '|' specified where a database name is required.
+#define E_DAO_WriteConflict DBDAOERR(3218) //Couldn't update; currently locked.
+#define E_DAO_IllegalOperation DBDAOERR(3219) //Invalid operation.
+#define E_DAO_WrongCollatingSequence DBDAOERR(3220) //Incorrect collating sequence.
+#define E_DAO_BadConfigParameters DBDAOERR(3221) //Invalid entries in the Btrieve section of initialization setting.
+#define E_DAO_QueryContainsDbParm DBDAOERR(3222) //Query can't contain a Database parameter.
+#define E_DAO_QueryInvalidParmM DBDAOERR(3223) //'|' isn't a valid parameter name.
+#define E_DAO_BtrieveDDCorrupted DBDAOERR(3224) //Can't read Btrieve data dictionary.
+#define E_DAO_BtrieveDeadlock DBDAOERR(3225) //Encountered record locking deadlock while performing Btrieve operation.
+#define E_DAO_BtrieveFailure DBDAOERR(3226) //Errors encountered while using the Btrieve DLL.
+#define E_DAO_IllegalCenturyOption DBDAOERR(3227) //Invalid Century entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalCollatingSeq DBDAOERR(3228) //Invalid Collating Sequence.
+#define E_DAO_NonModifiableKey DBDAOERR(3229) //Btrieve--can't change field.
+#define E_DAO_ObsoleteLockFile DBDAOERR(3230) //Out-of-date Paradox lock file.
+#define E_DAO_RmtColDataTruncated DBDAOERR(3231) //ODBC--field would be too long; data truncated.
+#define E_DAO_RmtCreateTableFailed DBDAOERR(3232) //ODBC--couldn't create table.
+#define E_DAO_RmtOdbcVer DBDAOERR(3233) //*
+#define E_DAO_RmtQueryTimeout DBDAOERR(3234) //ODBC--remote query timeout expired.
+#define E_DAO_RmtTypeIncompat DBDAOERR(3235) //ODBC--data type not supported on server.
+#define E_DAO_RmtUnexpectedNull DBDAOERR(3236) //*
+#define E_DAO_RmtUnexpectedType DBDAOERR(3237) //*
+#define E_DAO_RmtValueOutOfRange DBDAOERR(3238) //ODBC--data out of range.
+#define E_DAO_TooManyActiveUsers DBDAOERR(3239) //Too many active users.
+#define E_DAO_CantStartBtrieve DBDAOERR(3240) //Btrieve--missing Btrieve engine.
+#define E_DAO_OutOfBVResources DBDAOERR(3241) //Btrieve--out of resources.
+#define E_DAO_QueryBadUpwardRefedM DBDAOERR(3242) //Invalid reference in SELECT statement.
+#define E_DAO_ImexNoMatchingColumns DBDAOERR(3243) //None of the import field names match fields in the appended table.
+#define E_DAO_ImexPasswordProtected DBDAOERR(3244) //Can't import password-protected spreadsheet.
+#define E_DAO_ImexUnparsableRecord DBDAOERR(3245) //Couldn't parse field names from first row of import table.
+#define E_DAO_InTransaction DBDAOERR(3246) //Operation not supported in transactions.
+#define E_DAO_RmtLinkOutOfSync DBDAOERR(3247) //ODBC--linked table definition has changed.
+#define E_DAO_IllegalNetworkOption DBDAOERR(3248) //Invalid NetworkAccess entry in initialization setting.
+#define E_DAO_IllegalTimeoutOption DBDAOERR(3249) //Invalid PageTimeout entry in initialization setting.
+#define E_DAO_CantBuildKey DBDAOERR(3250) //Couldn't build key.
+#define E_DAO_FeatureNotAvailable DBDAOERR(3251) //Operation is not supported for this type of object.
+#define E_DAO_IllegalReentrancy DBDAOERR(3252) //Can't open form whose underlying query contains a user-defined function that attempts to set or get the form's RecordsetClone property.
+#define E_DAO_UNUSED DBDAOERR(3253) //*
+#define E_DAO_RmtDenyWriteIsInvalid DBDAOERR(3254) //ODBC--Can't lock all records.
+#define E_DAO_ODBCParmsChanged DBDAOERR(3255) //*
+#define E_DAO_INFIndexNotFound DBDAOERR(3256) //Index file not found.
+#define E_DAO_SQLOwnerAccessSyntax DBDAOERR(3257) //Syntax error in WITH OWNERACCESS OPTION declaration.
+#define E_DAO_QueryAmbiguousJoins DBDAOERR(3258) //Query contains ambiguous outer joins.
+#define E_DAO_InvalidColumnType DBDAOERR(3259) //Invalid field data type.
+#define E_DAO_WriteConflictM DBDAOERR(3260) //Couldn't update; currently locked by user '|2' on machine '|1'.
+#define E_DAO_TableLockedM DBDAOERR(3261) //|
+#define E_DAO_TableInUseMUQM DBDAOERR(3262) //|
+#define E_DAO_InvalidTableId DBDAOERR(3263) //Invalid database object.
+#define E_DAO_VtoNoFields DBDAOERR(3264) //No fields defined - cannot append Tabledef or Index.
+#define E_DAO_VtoNameNotFound DBDAOERR(3265) //Item not found in this collection.
+#define E_DAO_VtoFieldInCollection DBDAOERR(3266) //Can't append. Field is part of a TableDefs collection.
+#define E_DAO_VtoNotARecordset DBDAOERR(3267) //Property can be set only when the field is part of a Recordset object's Fields collection.
+#define E_DAO_VtoNoSetObjInDb DBDAOERR(3268) //Can't set this property once the object is part of a collection.
+#define E_DAO_VtoIndexInCollection DBDAOERR(3269) //Can't append. Index is part of a TableDefs collection.
+#define E_DAO_VtoPropNotFound DBDAOERR(3270) //Property not found.
+#define E_DAO_VtoIllegalValue DBDAOERR(3271) //Invalid property value.
+#define E_DAO_VtoNotArray DBDAOERR(3272) //Object isn't a collection.
+#define E_DAO_VtoNoSuchMethod DBDAOERR(3273) //Method not applicable for this object.
+#define E_DAO_NotExternalFormat DBDAOERR(3274) //External table isn't in the expected format.
+#define E_DAO_UnexpectedEngineReturn DBDAOERR(3275) //Unexpected error from external database driver (|).
+#define E_DAO_InvalidDatabaseId DBDAOERR(3276) //Invalid database ID.
+#define E_DAO_TooManyKeys DBDAOERR(3277) //Can't have more than 10 fields in an index.
+#define E_DAO_NotInitialized DBDAOERR(3278) //Database engine hasn't been initialized.
+#define E_DAO_AlreadyInitialized DBDAOERR(3279) //Database engine has already been initialized.
+#define E_DAO_ColumnInUse DBDAOERR(3280) //Can't delete a field that is part of an index or is needed by the system.
+#define E_DAO_IndexInUse DBDAOERR(3281) //Can't delete this index. It is either the current index or is used in a relationship.
+#define E_DAO_TableNotEmpty DBDAOERR(3282) //Can't create field or index in a table that is already defined.
+#define E_DAO_IndexHasPrimary DBDAOERR(3283) //Primary key already exists.
+#define E_DAO_IndexDuplicate DBDAOERR(3284) //Index already exists.
+#define E_DAO_IndexInvalidDef DBDAOERR(3285) //Invalid index definition.
+#define E_DAO_WrongMemoFileType DBDAOERR(3286) //Format of memo file doesn't match specified external database format.
+#define E_DAO_ColumnCannotIndex DBDAOERR(3287) //Can't create index on the given field.
+#define E_DAO_IndexHasNoPrimary DBDAOERR(3288) //Paradox index is not primary.
+#define E_DAO_DDLConstraintSyntax DBDAOERR(3289) //Syntax error in CONSTRAINT clause.
+#define E_DAO_DDLCreateTableSyntax DBDAOERR(3290) //Syntax error in CREATE TABLE statement.
+#define E_DAO_DDLCreateIndexSyntax DBDAOERR(3291) //Syntax error in CREATE INDEX statement.
+#define E_DAO_DDLColumnDefSyntax DBDAOERR(3292) //Syntax error in field definition.
+#define E_DAO_DDLAlterTableSyntax DBDAOERR(3293) //Syntax error in ALTER TABLE statement.
+#define E_DAO_DDLDropIndexSyntax DBDAOERR(3294) //Syntax error in DROP INDEX statement.
+#define E_DAO_DDLDropSyntax DBDAOERR(3295) //Syntax error in DROP TABLE or DROP INDEX.
+#define E_DAO_V11NotSupported DBDAOERR(3296) //Join expression not supported.
+#define E_DAO_ImexNothingToImport DBDAOERR(3297) //Couldn't import table or query. No records found, or all records contain errors.
+#define E_DAO_RmtTableAmbiguous DBDAOERR(3298) //There are several tables with that name. Please specify owner in the format 'owner.table'.
+#define E_DAO_JetODBCConformanceError DBDAOERR(3299) //ODBC Specification Conformance Error (|). This error should be reported to the ODBC driver vendor.
+#define E_DAO_IllegalRelationship DBDAOERR(3300) //Can't create a relationship.
+#define E_DAO_DBVerFeatureNotAvailable DBDAOERR(3301) //Can't perform this operation; features in this version are not available in databases with older formats.
+#define E_DAO_RulesLoaded DBDAOERR(3302) //Can't change a rule while the rules for this table are in use.
+#define E_DAO_ColumnInRelationship DBDAOERR(3303) //Can't delete this field. It's part of one or more relationships.
+#define E_DAO_InvalidPin DBDAOERR(3304) //You must enter a personal identifier (PID) consisting of at least four and no more than 20 characters and digits.
+#define E_DAO_RmtBogusConnStr DBDAOERR(3305) //Invalid connection string in pass-through query.
+#define E_DAO_SingleColumnExpected DBDAOERR(3306) //At most one field can be returned from a subquery that doesn't use the EXISTS keyword.
+#define E_DAO_ColumnCountMismatch DBDAOERR(3307) //The number of columns in the two selected tables or queries of a union query don't match.
+#define E_DAO_InvalidTopArgumentM DBDAOERR(3308) //Invalid TOP argument in select query.
+#define E_DAO_PropertyTooLarge DBDAOERR(3309) //Property setting can't be larger than 2 KB.
+#define E_DAO_JPMInvalidForV1x DBDAOERR(3310) //This property isn't supported for external data sources or for databases created in a previous version.
+#define E_DAO_PropertyExists DBDAOERR(3311) //Property specified already exists.
+#define E_DAO_TLVNativeUserTablesOnly DBDAOERR(3312) //Validation rules and default values can't be placed on system or attached (linked) tables.
+#define E_DAO_TLVInvalidColumn DBDAOERR(3313) //Can't place this validation expression on this field.
+#define E_DAO_TLVNoNullM DBDAOERR(3314) //Field '|' can't contain a null value.
+#define E_DAO_TLVNoBlankM DBDAOERR(3315) //Field '|' can't be a zero-length string.
+#define E_DAO_TLVRuleViolationM DBDAOERR(3316) //|
+#define E_DAO_TLVRuleVioNoMessage DBDAOERR(3317) //One or more values entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_QueryTopNotAllowedM DBDAOERR(3318) //Top not allowed in delete queries.
+#define E_DAO_SQLUnionSyntax DBDAOERR(3319) //Syntax error in union query.
+#define E_DAO_TLVExprSyntaxM DBDAOERR(3320) //| in table-level validation expression.
+#define E_DAO_NoDbInConnStr DBDAOERR(3321) //No database specified in connection string or IN clause.
+#define E_DAO_QueryBadValueListM DBDAOERR(3322) //Crosstab query contains one or more invalid fixed column headings.
+#define E_DAO_QueryIsNotRowReturning DBDAOERR(3323) //The query can not be used as a row source.
+#define E_DAO_QueryIsDDL DBDAOERR(3324) //This query is a DDL query and cannot be used as a row source.
+#define E_DAO_SPTReturnedNoRecords DBDAOERR(3325) //Pass-through query with ReturnsRecords property set to True did not return any records.
+#define E_DAO_QueryIsSnapshot DBDAOERR(3326) //This Recordset is not updatable.
+#define E_DAO_QueryExprOutput DBDAOERR(3327) //Field '|' is based on an expression and can't be edited.
+#define E_DAO_QueryTableRO DBDAOERR(3328) //Table '|2' is read-only.
+#define E_DAO_QueryRowDeleted DBDAOERR(3329) //Record in table '|' was deleted by another user.
+#define E_DAO_QueryRowLocked DBDAOERR(3330) //Record in table '|' is locked by another user.
+#define E_DAO_QueryFixupChanged DBDAOERR(3331) //To make changes to this field, first save the record.
+#define E_DAO_QueryCantFillIn DBDAOERR(3332) //Can't enter value into blank field on 'one' side of outer join.
+#define E_DAO_QueryWouldOrphan DBDAOERR(3333) //Records in table '|' would have no record on the 'one' side.
+#define E_DAO_V10Format DBDAOERR(3334) //Can be present only in version 1.0 format.
+#define E_DAO_InvalidDelete DBDAOERR(3335) //DeleteOnly called with non-zero cbData.
+#define E_DAO_IllegalIndexDDFOption DBDAOERR(3336) //Btrieve: Invalid IndexDDF option in initialization setting.
+#define E_DAO_IllegalDataCodePage DBDAOERR(3337) //Invalid DataCodePage option in initialization setting.
+#define E_DAO_XtrieveEnvironmentError DBDAOERR(3338) //Btrieve: Xtrieve options aren't correct in initialization setting.
+#define E_DAO_IllegalIndexNumberOption DBDAOERR(3339) //Btrieve: Invalid IndexDeleteRenumber option in initialization setting.
+#define E_DAO_QueryIsCorruptM DBDAOERR(3340) //Query '|' is corrupt.
+#define E_DAO_IncorrectJoinKeyM DBDAOERR(3341) //Current field must match join key '|' on 'one' side of outer join because it has been updated.
+#define E_DAO_QueryLVInSubqueryM DBDAOERR(3342) //Invalid Memo or OLE object in subquery '|'.
+#define E_DAO_InvalidDatabaseM DBDAOERR(3343) //Unrecognized database format '|'.
+#define E_DAO_TLVCouldNotBindRef DBDAOERR(3344) //Unknown or invalid reference '|1' in validation expression or default value in table '|2'.
+#define E_DAO_CouldNotBindRef DBDAOERR(3345) //Unknown or invalid field reference '|'.
+#define E_DAO_QueryWrongNumDestCol DBDAOERR(3346) //Number of query values and destination fields aren't the same.
+#define E_DAO_QueryPKeyNotOutput DBDAOERR(3347) //Can't add record(s); primary key for table '|' not in recordset.
+#define E_DAO_QueryJKeyNotOutput DBDAOERR(3348) //Can't add record(s); join key of table '|' not in recordset.
+#define E_DAO_NumericFieldOverflow DBDAOERR(3349) //Numeric field overflow.
+#define E_DAO_InvalidObject DBDAOERR(3350) //Object is invalid for operation.
+#define E_DAO_OrderVsUnion DBDAOERR(3351) //ORDER BY expression (|) uses non-output fields.
+#define E_DAO_NoInsertColumnNameM DBDAOERR(3352) //No destination field name in INSERT INTO statement (|).
+#define E_DAO_MissingDDFFile DBDAOERR(3353) //Btrieve: Can't find file FIELD.DDF.
+#define E_DAO_SingleRecordExpected DBDAOERR(3354) //At most one record can be returned by this subquery.
+#define E_DAO_DefaultExprSyntax DBDAOERR(3355) //Syntax error in default value.
+#define E_DAO_ExclusiveDBConflict DBDAOERR(3356) //The database is opened by user '|2' on machine '|1'.
+#define E_DAO_QueryIsNotDDL DBDAOERR(3357) //This query is not a properly formed data-definition query.
+#define E_DAO_SysDatabaseOpenError DBDAOERR(3358) //Can't open Microsoft Jet engine system database.
+#define E_DAO_SQLInvalidSPT DBDAOERR(3359) //Pass-through query must contain at least one character.
+#define E_DAO_QueryTooComplex DBDAOERR(3360) //Query is too complex.
+#define E_DAO_SetOpInvalidInSubquery DBDAOERR(3361) //Unions not allowed in a subquery.
+#define E_DAO_RmtMultiRowUpdate DBDAOERR(3362) //Single-row update/delete affected more than one row of an attached (linked) table. Unique index contains duplicate values.
+#define E_DAO_QueryNoJoinedRecord DBDAOERR(3363) //Record(s) can't be added; no corresponding record on the 'one' side.
+#define E_DAO_QueryLVInSetOp DBDAOERR(3364) //Can't use Memo or OLE object field '|' in SELECT clause of a union query.
+#define E_DAO_VtoInvalidOnRemote DBDAOERR(3365) //Property value not valid for REMOTE objects.
+#define E_DAO_VtoNoFieldsRel DBDAOERR(3366) //Can't append a relation with no fields defined.
+#define E_DAO_VtoObjectInCollection DBDAOERR(3367) //Can't append. Object already in collection.
+#define E_DAO_DDLDiffNumRelCols DBDAOERR(3368) //Relationship must be on the same number of fields with the same data types.
+#define E_DAO_DDLIndexColNotFound DBDAOERR(3369) //Can't find field in index definition.
+#define E_DAO_DDLPermissionDenied DBDAOERR(3370) //Can't modify the design of table '|'. It's in a read-only database.
+#define E_DAO_DDLObjectNotFound DBDAOERR(3371) //Can't find table or constraint.
+#define E_DAO_DDLIndexNotFound DBDAOERR(3372) //No such index '|2' on table '|1'.
+#define E_DAO_DDLNoPkeyOnRefdTable DBDAOERR(3373) //Can't create relationship. Referenced table '|' doesn't have a primary key.
+#define E_DAO_DDLColumnsNotUnique DBDAOERR(3374) //The specified fields are not uniquely indexed in table '|'.
+#define E_DAO_DDLIndexDuplicate DBDAOERR(3375) //Table '|1' already has an index named '|2'
+#define E_DAO_DDLTableNotFound DBDAOERR(3376) //Table '|' doesn't exist.
+#define E_DAO_DDLRelNotFound DBDAOERR(3377) //No such relationship '|2' on table '|1'.
+#define E_DAO_DDLRelDuplicate DBDAOERR(3378) //There is already a relationship named '|' in the current database.
+#define E_DAO_DDLIntegrityViolation DBDAOERR(3379) //Can't create relationships to enforce referential integrity. Existing data in table '|2' violates referential integrity rules with related table '|1'.
+#define E_DAO_DDLColumnDuplicate DBDAOERR(3380) //Field '|2' already exists in table '|1'.
+#define E_DAO_DDLColumnNotFound DBDAOERR(3381) //There is no field named '|2' in table '|1'.
+#define E_DAO_DDLColumnTooBig DBDAOERR(3382) //The size of field '|' is too long.
+#define E_DAO_DDLColumnInRel DBDAOERR(3383) //Can't delete field '|'. It's part of one or more relationships.
+#define E_DAO_VtoCantDeleteBuiltIn DBDAOERR(3384) //Can't delete a built-in property.
+#define E_DAO_VtoUDPsDontSupportNull DBDAOERR(3385) //User-defined properties don't support a Null value.
+#define E_DAO_VtoMissingRequiredParm DBDAOERR(3386) //Property '|' must be set before using this method.
+#define E_DAO_JetJetInitInvalidPath DBDAOERR(3387) //Can't find TEMP directory.
+#define E_DAO_TLVExprUnknownFunctionM DBDAOERR(3388) //Unknown function '|2' in validation expression or default value on '|1'.
+#define E_DAO_QueryNotSupported DBDAOERR(3389) //Query support unavailable.
+#define E_DAO_AccountDuplicate DBDAOERR(3390) //Account name already exists.
+#define E_DAO_JetwrnPropCouldNotSave DBDAOERR(3391) //An error has occurred. Properties were not saved.
+#define E_DAO_RelNoPrimaryIndexM DBDAOERR(3392) //There is no primary key in table '|'.
+#define E_DAO_QueryKeyTooBig DBDAOERR(3393) //Can't perform join, group, sort, or indexed restriction. A value being searched or sorted on is too long.
+#define E_DAO_PropMustBeDDL DBDAOERR(3394) //Can't save property; property is a schema property.
+#define E_DAO_IllegalRIConstraint DBDAOERR(3395) //Invalid referential integrity constraint.
+#define E_DAO_RIViolationMasterCM DBDAOERR(3396) //Can't perform cascading operation. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_RIViolationSlaveCM DBDAOERR(3397) //Can't perform cascading operation. There must be a related record in table '|'.
+#define E_DAO_RIKeyNullDisallowedCM DBDAOERR(3398) //Can't perform cascading operation. It would result in a null key in table '|'.
+#define E_DAO_RIKeyDuplicateCM DBDAOERR(3399) //Can't perform cascading operation. It would result in a duplicate key in table '|'.
+#define E_DAO_RIUpdateTwiceCM DBDAOERR(3400) //Can't perform cascading operation. It would result in two updates on field '|2' in table '|1'.
+#define E_DAO_RITLVNoNullCM DBDAOERR(3401) //Can't perform cascading operation. It would cause field '|' to become null, which is not allowed.
+#define E_DAO_RITLVNoBlankCM DBDAOERR(3402) //Can't perform cascading operation. It would cause field '|' to become a zero-length string, which is not allowed.
+#define E_DAO_RITLVRuleViolationCM DBDAOERR(3403) //Can't perform cascading operation: '|'
+#define E_DAO_RITLVRuleVioCNoMessage DBDAOERR(3404) //Can't perform cascading operation. The value entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_TLVRuleEvalEBESErr DBDAOERR(3405) //Error '|' in validation rule.
+#define E_DAO_TLVDefaultEvalEBESErr DBDAOERR(3406) //Error '|' in default value.
+#define E_DAO_BadMSysConf DBDAOERR(3407) //The server's MSysConf table exists, but is in an incorrect format. Contact your system administrator.
+#define E_DAO_TooManyFindSessions DBDAOERR(3408) //Too many FastFind Sessions were invoked.
+#define E_DAO_InvalidColumnM DBDAOERR(3409) //Invalid field name '|' in definition of index or relationship.
+#define E_DAO_REPReadOnly DBDAOERR(3410) //*
+#define E_DAO_RIInvalidBufferSizeCM DBDAOERR(3411) //Invalid entry. Can't perform cascading operation specified in table '|1' because value entered is too big for field '|2'.
+#define E_DAO_RIWriteConflictCM DBDAOERR(3412) //|
+#define E_DAO_JetSpecialRIWriteConflictCM DBDAOERR(3413) //Can't perform cascading update on table '|1' because it is currently in use by user '|3' on machine '|2'.
+#define E_DAO_RISessWriteConflictCM DBDAOERR(3414) //Can't perform cascading update on table '|' because it is currently in use.
+#define E_DAO_NoBlank DBDAOERR(3415) //Zero-length string is valid only in a text or Memo field.
+#define E_DAO_FutureError DBDAOERR(3416) //|
+#define E_DAO_QueryInvalidBulkInput DBDAOERR(3417) //An action query cannot be used as a row source.
+#define E_DAO_NetCtrlMismatch DBDAOERR(3418) //Can't open '|'. Another user has the table open using a different network control file or locking style.
+#define E_DAO_4xTableWith3xLocking DBDAOERR(3419) //Can't open this Paradox 4.x or Paradox 5.x table because ParadoxNetStyle is set to 3.x in the initialization setting.
+#define E_DAO_VtoObjectNotSet DBDAOERR(3420) //Object is invalid or not set.
+#define E_DAO_VtoDataConvError DBDAOERR(3421) //Data type conversion error.
+
+#endif // def _DBDAOERR.H_
+
diff --git a/public/sdk/inc/mfc42/dbdaoid.h b/public/sdk/inc/mfc42/dbdaoid.h
new file mode 100644
index 000000000..6e97ac95a
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoid.h
@@ -0,0 +1,131 @@
+/************************************************************************
+** D B D A O I D . H *
+** *
+** OLE DAO component class id definitions *
+** *
+*************************************************************************
+** Copyright (C) 1992-5 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+/*
+ All UNICODE IID_... names are the same as the ANSI IID_... name
+ with a "W" appended to the end.
+
+*/
+
+// Type library
+DEFINE_OLEGUID(LIBID_CDAO, 0x00025e01, 0, 0);
+
+// StdObject
+DEFINE_OLEGUID(IID_IDAOStdObject, 0x00025e02, 0, 0);
+
+// StdCollection
+DEFINE_OLEGUID(IID_IDAOStdCollection, 0x00025e03, 0, 0);
+
+// DBEngine
+DEFINE_OLEGUID(CLSID_CDAODBEngine, 0x00025e15, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngine, 0x00025e16, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngineW, 0x00025e17, 0, 0);
+DEFINE_OLEGUID(CLSID_CDAOPrivDBEngine, 0x00025e19, 0, 0);
+
+// Error
+DEFINE_OLEGUID(IID_IDAOError, 0x00025e1d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorW, 0x00025e1e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrors, 0x00025e1f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorsW, 0x00025e20, 0, 0);
+
+// Property
+DEFINE_OLEGUID(IID_IDAOProperty, 0x00025e25, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertyW, 0x00025e26, 0, 0);
+DEFINE_OLEGUID(IID_IDAOProperties, 0x00025e27, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertiesW, 0x00025e28, 0, 0);
+
+// Recordset
+DEFINE_OLEGUID(IID_IDAORecordset, 0x00025e2d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetW, 0x00025e2e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsets, 0x00025e2f, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetsW, 0x00025e30, 0, 0);
+DEFINE_OLEGUID(IID_ICDAORecordset, 0x00025e31, 0, 0);
+
+// Workspace
+DEFINE_OLEGUID(IID_IDAOWorkspace, 0x00025e3a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaceW, 0x00025e3b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaces, 0x00025e3c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspacesW, 0x00025e3d, 0, 0);
+
+// TableDef
+DEFINE_OLEGUID(CLSID_CDAOTableDef, 0x00025e43, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDef, 0x00025e44, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefW, 0x00025e45, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefs, 0x00025e46, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefsW, 0x00025e47, 0, 0);
+
+// Field
+DEFINE_OLEGUID(CLSID_CDAOField, 0x00025e4c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOField, 0x00025e4d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldW, 0x00025e4e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFields, 0x00025e4f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldsW, 0x00025e50, 0, 0);
+
+// Index
+DEFINE_OLEGUID(CLSID_CDAOIndex, 0x00025e55, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndex, 0x00025e56, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexW, 0x00025ed7, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexes, 0x00025e58, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexesW, 0x00025e59, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFields, 0x00025e5a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFieldsW, 0x00025e5b, 0, 0);
+
+// Group
+DEFINE_OLEGUID(CLSID_CDAOGroup, 0x00025e5f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroup, 0x00025e60, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupW, 0x00025e61, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroups, 0x00025e62, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupsW, 0x00025e63, 0, 0);
+
+// User
+DEFINE_OLEGUID(CLSID_CDAOUser, 0x00025e68, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUser, 0x00025e69, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUserW, 0x00025e6a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsers, 0x00025e6b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsersW, 0x00025e6c, 0, 0);
+
+// Database
+DEFINE_OLEGUID(IID_IDAODatabase, 0x00025e71, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabaseW, 0x00025e72, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabases, 0x00025e73, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabasesW, 0x00025e74, 0, 0);
+
+// QueryDef
+DEFINE_OLEGUID(CLSID_CDAOQueryDef, 0x00025e7a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDef, 0x00025e7b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefW, 0x00025e7c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefs, 0x00025e7d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefsW, 0x00025e7e, 0, 0);
+
+// Parameter
+DEFINE_OLEGUID(IID_IDAOParameter, 0x00025e83, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameterW, 0x00025e84, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameters, 0x00025e85, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParametersW, 0x00025e86, 0, 0);
+
+// Relation
+DEFINE_OLEGUID(CLSID_CDAORelation, 0x00025e8b, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelation, 0x00025e8c, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationW, 0x00025e8d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelations, 0x00025e8e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationsW, 0x00025e8f, 0, 0);
+
+// Container
+DEFINE_OLEGUID(IID_IDAOContainer, 0x00025e94, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainerW, 0x00025e95, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainers, 0x00025e96, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainersW, 0x00025e97, 0, 0);
+
+// Document
+DEFINE_OLEGUID(IID_IDAODocument, 0x00025e9c, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentW, 0x00025e9d, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocuments, 0x00025e9e, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentsW, 0x00025e9f, 0, 0);
+
diff --git a/public/sdk/inc/mfc42/dbdaoint.h b/public/sdk/inc/mfc42/dbdaoint.h
new file mode 100644
index 000000000..00d0deea7
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoint.h
@@ -0,0 +1,776 @@
+/*************************************************************************
+** D B D A O I N T . H *
+** *
+** OLE DAO Interface *
+** *
+** History *
+** ------- *
+** File converted from cdaotype.h for use by CDAO clients. *
+** *
+** *
+**************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+**************************************************************************/
+#ifndef _DBDAOINT_H_
+#define _DBDAOINT_H_
+
+#ifndef _INC_TCHAR
+#include <tchar.h>
+#endif
+
+// Forwards
+#define DAODBEngine _DAODBEngine
+interface _DAODBEngine;
+interface DAOError;
+interface DAOErrors;
+interface DAOProperty;
+interface DAOProperties;
+interface DAOWorkspace;
+interface DAOWorkspaces;
+interface DAODatabase;
+interface DAODatabases;
+#define DAOTableDef _DAOTableDef
+interface _DAOTableDef;
+interface DAOTableDefs;
+#define DAOQueryDef _DAOQueryDef
+interface _DAOQueryDef;
+interface DAOQueryDefs;
+interface DAORecordset;
+interface DAORecordsets;
+#define DAOField _DAOField
+interface _DAOField;
+interface DAOFields;
+#define DAOIndex _DAOIndex
+interface _DAOIndex;
+interface DAOIndexes;
+interface DAOParameter;
+interface DAOParameters;
+#define DAOUser _DAOUser
+interface _DAOUser;
+interface DAOUsers;
+#define DAOGroup _DAOGroup
+interface _DAOGroup;
+interface DAOGroups;
+#define DAORelation _DAORelation
+interface _DAORelation;
+interface DAORelations;
+interface DAOContainer;
+interface DAOContainers;
+interface DAODocument;
+interface DAODocuments;
+
+
+// Constants
+ const short dbOpenTable = 1;
+ const short dbOpenDynaset = 2;
+ const short dbOpenSnapshot = 4;
+ const short dbEditNone = 0;
+ const short dbEditInProgress = 1;
+ const short dbEditAdd = 2;
+ const short dbDenyWrite = 1;
+ const short dbDenyRead = 2;
+ const short dbReadOnly = 4;
+ const short dbAppendOnly = 8;
+ const short dbInconsistent = 16;
+ const short dbConsistent = 32;
+ const short dbSQLPassThrough = 64;
+ const short dbFailOnError = 128;
+ const short dbForwardOnly = 256;
+ const short dbSeeChanges = 512;
+ const short dbFixedField = 1;
+ const short dbVariableField = 2;
+ const short dbAutoIncrField = 16;
+ const short dbUpdatableField = 32;
+ const long dbSystemField = 8192;
+ const short dbDescending = 1;
+ const short dbBoolean = 1;
+ const short dbByte = 2;
+ const short dbInteger = 3;
+ const short dbLong = 4;
+ const short dbCurrency = 5;
+ const short dbSingle = 6;
+ const short dbDouble = 7;
+ const short dbDate = 8;
+ const short dbText = 10;
+ const short dbLongBinary = 11;
+ const short dbMemo = 12;
+ const short dbGUID = 15;
+ const long dbRelationUnique = 1;
+ const long dbRelationDontEnforce = 2;
+ const long dbRelationInherited = 4;
+ const long dbRelationUpdateCascade = 256;
+ const long dbRelationDeleteCascade = 4096;
+ const long dbRelationLeft = 16777216;
+ const long dbRelationRight = 33554432;
+ const long dbAttachExclusive = 65536;
+ const long dbAttachSavePWD = 131072;
+ const long dbSystemObject = -2147483646;
+ const long dbAttachedTable = 1073741824;
+ const long dbAttachedODBC = 536870912;
+ const long dbHiddenObject = 1;
+ const short dbQSelect = 0;
+ const short dbQAction = 240;
+ const short dbQCrosstab = 16;
+ const short dbQDelete = 32;
+ const short dbQUpdate = 48;
+ const short dbQAppend = 64;
+ const short dbQMakeTable = 80;
+ const short dbQDDL = 96;
+ const short dbQSQLPassThrough = 112;
+ const short dbQSetOperation = 128;
+ const short dbQSPTBulk = 144;
+ const TCHAR dbLangArabic[] = _T(";LANGID=0x0401;CP=1256;COUNTRY=0";);
+ const TCHAR dbLangCzech[] = _T(";LANGID=0x0405;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangDutch[] = _T(";LANGID=0x0413;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGeneral[] = _T(";LANGID=0x0409;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGreek[] = _T(";LANGID=0x0408;CP=1253;COUNTRY=0";);
+ const TCHAR dbLangHebrew[] = _T(";LANGID=0x040D;CP=1255;COUNTRY=0";);
+ const TCHAR dbLangHungarian[] = _T(";LANGID=0x040E;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangIcelandic[] = _T(";LANGID=0x040F;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNordic[] = _T(";LANGID=0x041D;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNorwDan[] = _T(";LANGID=0x0414;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangPolish[] = _T(";LANGID=0x0415;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangCyrillic[] = _T(";LANGID=0x0419;CP=1251;COUNTRY=0";);
+ const TCHAR dbLangSpanish[] = _T(";LANGID=0x040A;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangSwedFin[] = _T(";LANGID=0x040B;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangTurkish[] = _T(";LANGID=0x041F;CP=1254;COUNTRY=0";);
+ const TCHAR dbLangJapanese[] = _T(";LANGID=0x0411;CP=932;COUNTRY=0";);
+ const TCHAR dbLangChineseSimplified[] = _T(";LANGID=0x0804;CP=936;COUNTRY=0";);
+ const TCHAR dbLangChineseTraditional[] = _T(";LANGID=0x0404;CP=950;COUNTRY=0";);
+ const TCHAR dbLangKorean[] = _T(";LANGID=0x040C;CP=494;COUNTRY=0";);
+ const TCHAR dbLangThai[] = _T(";LANGID=0x101E;CP=874;COUNTRY=0";);
+ const short dbVersion10 = 1;
+ const short dbEncrypt = 2;
+ const short dbDecrypt = 4;
+ const short dbVersion11 = 8;
+ const short dbVersion20 = 16;
+ const short dbVersion30 = 32;
+ const short dbSortNeutral = 1024;
+ const short dbSortArabic = 1025;
+ const short dbSortCyrillic = 1049;
+ const short dbSortCzech = 1029;
+ const short dbSortDutch = 1043;
+ const short dbSortGeneral = 1033;
+ const short dbSortGreek = 1032;
+ const short dbSortHebrew = 1037;
+ const short dbSortHungarian = 1038;
+ const short dbSortIcelandic = 1039;
+ const short dbSortNorwdan = 1030;
+ const short dbSortPDXIntl = 1033;
+ const short dbSortPDXNor = 1030;
+ const short dbSortPDXSwe = 1053;
+ const short dbSortPolish = 1045;
+ const short dbSortSpanish = 1034;
+ const short dbSortSwedFin = 1053;
+ const short dbSortTurkish = 1055;
+ const short dbSortJapanese = 1041;
+ const short dbSortChineseSimplified = 2052;
+ const short dbSortChineseTraditional = 1028;
+ const short dbSortKorean = 1036;
+ const short dbSortThai = 4126;
+ const short dbSortUndefined = -1;
+ const short dbFreeLocks = 1;
+ const long dbSecNoAccess = 0;
+ const long dbSecFullAccess = 1048575;
+ const long dbSecDelete = 65536;
+ const long dbSecReadSec = 131072;
+ const long dbSecWriteSec = 262144;
+ const long dbSecWriteOwner = 524288;
+ const long dbSecDBCreate = 1;
+ const long dbSecDBOpen = 2;
+ const long dbSecDBExclusive = 4;
+ const long dbSecDBAdmin = 8;
+ const long dbSecCreate = 1;
+ const long dbSecReadDef = 4;
+ const long dbSecWriteDef = 65548;
+ const long dbSecRetrieveData = 20;
+ const long dbSecInsertData = 32;
+ const long dbSecReplaceData = 64;
+ const long dbSecDeleteData = 128;
+ const long dbRepExportChanges = 1;
+ const long dbRepImportChanges = 2;
+ const long dbRepImpExpChanges = 4;
+ const long dbRepMakeReadOnly = 2;
+// Interface: _DAOCollection
+#undef INTERFACE
+#define INTERFACE _DAOCollection
+DECLARE_INTERFACE_(_DAOCollection, IDispatch)
+ {
+ STDMETHOD(get_Count) (THIS_ short FAR* c) PURE;
+ STDMETHOD(_NewEnum) (THIS_ IUnknown * FAR* ppunk) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+ };
+
+// Interface: _DAODynaCollection
+#undef INTERFACE
+#define INTERFACE _DAODynaCollection
+DECLARE_INTERFACE_(_DAODynaCollection, _DAOCollection)
+ {
+ STDMETHOD(Append) (THIS_ IDispatch * Object) PURE;
+ STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
+ };
+
+// Interface: _DAO
+#undef INTERFACE
+#define INTERFACE _DAO
+DECLARE_INTERFACE_(_DAO, IDispatch)
+ {
+ STDMETHOD(get_Properties) (THIS_ DAOProperties FAR* FAR* ppprops) PURE;
+ };
+
+// Interface: _DAODBEngine
+#undef INTERFACE
+#define INTERFACE _DAODBEngine
+DECLARE_INTERFACE_(_DAODBEngine, _DAO)
+ {
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_IniPath) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_IniPath) (THIS_ BSTR path) PURE;
+ STDMETHOD(put_DefaultUser) (THIS_ BSTR user) PURE;
+ STDMETHOD(put_DefaultPassword) (THIS_ BSTR pw) PURE;
+ STDMETHOD(get_LoginTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_LoginTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Workspaces) (THIS_ DAOWorkspaces FAR* FAR* ppworks) PURE;
+ STDMETHOD(get_Errors) (THIS_ DAOErrors FAR* FAR* pperrs) PURE;
+ STDMETHOD(Idle) (THIS_ VARIANT Action) PURE;
+ STDMETHOD(CompactDatabase) (THIS_ BSTR SrcName, BSTR DstName, VARIANT DstConnect, VARIANT Options, VARIANT SrcConnect) PURE;
+ STDMETHOD(RepairDatabase) (THIS_ BSTR Name) PURE;
+ STDMETHOD(RegisterDatabase) (THIS_ BSTR Dsn, BSTR Driver, VARIANT_BOOL Silent, BSTR Attributes) PURE;
+ STDMETHOD(CreateWorkspace) (THIS_ BSTR Name, BSTR UserName, BSTR Password, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(FreeLocks) (THIS) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(SetDefaultWorkspace) (THIS_ BSTR Name, BSTR Password) PURE;
+ STDMETHOD(SetDataAccessOption) (THIS_ short Option, VARIANT Value) PURE;
+ STDMETHOD(ISAMStats) (THIS_ long StatNum, VARIANT Reset, long FAR* pl) PURE;
+ STDMETHOD(get_SystemDB) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SystemDB) (THIS_ BSTR SystemDBPath) PURE;
+ };
+
+// Interface: DAOError
+#undef INTERFACE
+#define INTERFACE DAOError
+DECLARE_INTERFACE_(DAOError, IDispatch)
+ {
+ STDMETHOD(get_Number) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Source) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Description) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpFile) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpContext) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOErrors
+#undef INTERFACE
+#define INTERFACE DAOErrors
+DECLARE_INTERFACE_(DAOErrors, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOError FAR* FAR* pperr) PURE;
+ };
+
+// Interface: DAOWorkspace
+#undef INTERFACE
+#define INTERFACE DAOWorkspace
+DECLARE_INTERFACE_(DAOWorkspace, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR UserName) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR Password) PURE;
+ STDMETHOD(get_IsolateODBCTrans) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_IsolateODBCTrans) (THIS_ short s) PURE;
+ STDMETHOD(get_Databases) (THIS_ DAODatabases FAR* FAR* ppdbs) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOWorkspaces
+#undef INTERFACE
+#define INTERFACE DAOWorkspaces
+DECLARE_INTERFACE_(DAOWorkspaces, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ };
+
+// Interface: _DAOTableDef
+#undef INTERFACE
+#define INTERFACE _DAOTableDef
+DECLARE_INTERFACE_(_DAOTableDef, _DAO)
+ {
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attributes) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR Connection) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_SourceTableName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SourceTableName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(RefreshLink) (THIS) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateIndex) (THIS_ VARIANT Name, DAOIndex FAR* FAR* ppidx) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_ConflictTable) (THIS_ BSTR FAR* pbstr) PURE;
+ };
+
+// Interface: DAOTableDefs
+#undef INTERFACE
+#define INTERFACE DAOTableDefs
+DECLARE_INTERFACE_(DAOTableDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOTableDef FAR* FAR* pptdf) PURE;
+ };
+
+// Interface: DAODatabase
+#undef INTERFACE
+#define INTERFACE DAODatabase
+DECLARE_INTERFACE_(DAODatabase, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_QueryTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_QueryTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_TableDefs) (THIS_ DAOTableDefs FAR* FAR* pptdfs) PURE;
+ STDMETHOD(get_QueryDefs) (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
+ STDMETHOD(get_Relations) (THIS_ DAORelations FAR* FAR* pprls) PURE;
+ STDMETHOD(get_Containers) (THIS_ DAOContainers FAR* FAR* ppctns) PURE;
+ STDMETHOD(get_Recordsets) (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Execute) (THIS_ BSTR Query, VARIANT Options) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ BSTR Name, VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(CreateRelation) (THIS_ VARIANT Name, VARIANT Table, VARIANT ForeignTable, VARIANT Attributes, DAORelation FAR* FAR* pprel) PURE;
+ STDMETHOD(CreateTableDef) (THIS_ VARIANT Name, VARIANT Attributes, VARIANT SourceTablename, VARIANT Connect, DAOTableDef FAR* FAR* pptdf) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ BSTR Name, VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateQueryDef) (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ BSTR Source, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(DeleteQueryDef) (THIS_ BSTR Name) PURE;
+ STDMETHOD(ExecuteSQL) (THIS_ BSTR SQL, long FAR* pl) PURE;
+ STDMETHOD(ListFields) (THIS_ BSTR Name, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListTables) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(OpenQueryDef) (THIS_ BSTR Name, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(OpenTable) (THIS_ BSTR Name, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(get_ReplicaID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_DesignMasterID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DesignMasterID) (THIS_ BSTR MasterID) PURE;
+ STDMETHOD(Synchronize) (THIS_ BSTR DbPathName, VARIANT ExchangeType) PURE;
+ STDMETHOD(MakeReplica) (THIS_ BSTR PathName, BSTR Description, VARIANT Options) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR ODBCConnnect) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ };
+
+// Interface: DAODatabases
+#undef INTERFACE
+#define INTERFACE DAODatabases
+DECLARE_INTERFACE_(DAODatabases, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODatabase FAR* FAR* ppdb) PURE;
+ };
+
+// Interface: _DAOQueryDef
+#undef INTERFACE
+#define INTERFACE _DAOQueryDef
+DECLARE_INTERFACE_(_DAOQueryDef, _DAO)
+ {
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ODBCTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_ODBCTimeout) (THIS_ short timeout) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_SQL) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SQL) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ReturnsRecords) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ReturnsRecords) (THIS_ VARIANT_BOOL f) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Parameters) (THIS_ DAOParameters FAR* FAR* ppprms) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_Copy) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(Execute) (THIS_ VARIANT Options) PURE;
+ STDMETHOD(Compare) (THIS_ DAOQueryDef FAR* pQdef, short FAR* lps) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListParameters) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOQueryDefs
+#undef INTERFACE
+#define INTERFACE DAOQueryDefs
+DECLARE_INTERFACE_(DAOQueryDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOQueryDef FAR* FAR* ppqdef) PURE;
+ };
+
+// Interface: DAORecordset
+#undef INTERFACE
+#define INTERFACE DAORecordset
+DECLARE_INTERFACE_(DAORecordset, _DAO)
+ {
+ STDMETHOD(get_BOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Bookmark) (THIS_ SAFEARRAY FAR* FAR* ppsach) PURE;
+ STDMETHOD(put_Bookmark) (THIS_ SAFEARRAY FAR* FAR* psach) PURE;
+ STDMETHOD(get_Bookmarkable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_EOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Filter) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Filter) (THIS_ BSTR Filter) PURE;
+ STDMETHOD(get_Index) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Index) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_LastModified) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LockEdits) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_LockEdits) (THIS_ VARIANT_BOOL Lock) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_NoMatch) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Sort) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Sort) (THIS_ BSTR Sort) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Restartable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_CacheStart) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(put_CacheStart) (THIS_ SAFEARRAY FAR* FAR* psa) PURE;
+ STDMETHOD(get_CacheSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_CacheSize) (THIS_ long CacheSize) PURE;
+ STDMETHOD(get_PercentPosition) (THIS_ float FAR* pd) PURE;
+ STDMETHOD(put_PercentPosition) (THIS_ float Position) PURE;
+ STDMETHOD(get_AbsolutePosition) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_AbsolutePosition) (THIS_ long Position) PURE;
+ STDMETHOD(get_EditMode) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_ODBCFetchCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_ODBCFetchDelay) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Parent) (THIS_ DAODatabase FAR* FAR* pdb) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(CancelUpdate) (THIS) PURE;
+ STDMETHOD(AddNew) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Delete) (THIS) PURE;
+ STDMETHOD(Edit) (THIS) PURE;
+ STDMETHOD(FindFirst) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindLast) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindNext) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindPrevious) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(MoveFirst) (THIS) PURE;
+ STDMETHOD(MoveLast) (THIS) PURE;
+ STDMETHOD(MoveNext) (THIS) PURE;
+ STDMETHOD(MovePrevious) (THIS) PURE;
+ STDMETHOD(Seek) (THIS_ BSTR Comparison, VARIANT Key1, VARIANT Key2, VARIANT Key3, VARIANT Key4, VARIANT Key5, VARIANT Key6, VARIANT Key7, VARIANT Key8, VARIANT Key9, VARIANT Key10, VARIANT Key11, VARIANT Key12, VARIANT Key13) PURE;
+ STDMETHOD(Update) (THIS) PURE;
+ STDMETHOD(Clone) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Requery) (THIS_ VARIANT NewQueryDef) PURE;
+ STDMETHOD(Move) (THIS_ long Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(FillCache) (THIS_ VARIANT Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CopyQueryDef) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(ListFields) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListIndexes) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(GetRows) (THIS_ VARIANT cRows, VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Collect) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Collect) (THIS_ VARIANT index, VARIANT value) PURE;
+ };
+
+// Interface: DAORecordsets
+#undef INTERFACE
+#define INTERFACE DAORecordsets
+DECLARE_INTERFACE_(DAORecordsets, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORecordset FAR* FAR* pprst) PURE;
+ };
+
+// Interface: _DAOField
+#undef INTERFACE
+#define INTERFACE _DAOField
+DECLARE_INTERFACE_(_DAOField, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_Type) (THIS_ short Type) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_Size) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Size) (THIS_ long Size) PURE;
+ STDMETHOD(get_SourceField) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_SourceTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attr) PURE;
+ STDMETHOD(get_OrdinalPosition) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_OrdinalPosition) (THIS_ short Pos) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidateOnSet) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ValidateOnSet) (THIS_ VARIANT_BOOL Validate) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_DefaultValue) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DefaultValue) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fReq) PURE;
+ STDMETHOD(get_AllowZeroLength) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_AllowZeroLength) (THIS_ VARIANT_BOOL fAllow) PURE;
+ STDMETHOD(get_DataUpdatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ForeignName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(AppendChunk) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(GetChunk) (THIS_ long Offset, long Bytes, VARIANT FAR* pvar) PURE;
+ STDMETHOD(FieldSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_CollectionIndex) (THIS_ short FAR* i) PURE;
+ };
+
+// Interface: DAOFields
+#undef INTERFACE
+#define INTERFACE DAOFields
+DECLARE_INTERFACE_(DAOFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: _DAOIndex
+#undef INTERFACE
+#define INTERFACE _DAOIndex
+DECLARE_INTERFACE_(_DAOIndex, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Foreign) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Unique) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Unique) (THIS_ VARIANT_BOOL fUnique) PURE;
+ STDMETHOD(get_Clustered) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Clustered) (THIS_ VARIANT_BOOL fClustered) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fRequired) PURE;
+ STDMETHOD(get_IgnoreNulls) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_IgnoreNulls) (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
+ STDMETHOD(get_Primary) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Primary) (THIS_ VARIANT_BOOL fPrimary) PURE;
+ STDMETHOD(get_DistinctCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ VARIANT FAR* pv) PURE;
+ STDMETHOD(put_Fields) (THIS_ VARIANT v) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOIndexes
+#undef INTERFACE
+#define INTERFACE DAOIndexes
+DECLARE_INTERFACE_(DAOIndexes, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOIndex FAR* FAR* ppidx) PURE;
+ };
+
+// Interface: DAOIndexFields
+#undef INTERFACE
+#define INTERFACE DAOIndexFields
+DECLARE_INTERFACE_(DAOIndexFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ };
+
+// Interface: DAOParameter
+#undef INTERFACE
+#define INTERFACE DAOParameter
+DECLARE_INTERFACE_(DAOParameter, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ };
+
+// Interface: DAOParameters
+#undef INTERFACE
+#define INTERFACE DAOParameters
+DECLARE_INTERFACE_(DAOParameters, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOParameter FAR* FAR* ppprm) PURE;
+ };
+
+// Interface: _DAOUser
+#undef INTERFACE
+#define INTERFACE _DAOUser
+DECLARE_INTERFACE_(_DAOUser, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOUsers
+#undef INTERFACE
+#define INTERFACE DAOUsers
+DECLARE_INTERFACE_(DAOUsers, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: _DAOGroup
+#undef INTERFACE
+#define INTERFACE _DAOGroup
+DECLARE_INTERFACE_(_DAOGroup, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: DAOGroups
+#undef INTERFACE
+#define INTERFACE DAOGroups
+DECLARE_INTERFACE_(DAOGroups, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: _DAORelation
+#undef INTERFACE
+#define INTERFACE _DAORelation
+DECLARE_INTERFACE_(_DAORelation, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Table) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Table) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ForeignTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignTable) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long attr) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: DAORelations
+#undef INTERFACE
+#define INTERFACE DAORelations
+DECLARE_INTERFACE_(DAORelations, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORelation FAR* FAR* pprel) PURE;
+ };
+
+// Interface: DAOProperty
+#undef INTERFACE
+#define INTERFACE DAOProperty
+DECLARE_INTERFACE_(DAOProperty, _DAO)
+ {
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pval) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ptype) PURE;
+ STDMETHOD(put_Type) (THIS_ short type) PURE;
+ STDMETHOD(get_Inherited) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ };
+
+// Interface: DAOProperties
+#undef INTERFACE
+#define INTERFACE DAOProperties
+DECLARE_INTERFACE_(DAOProperties, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOProperty FAR* FAR* ppprop) PURE;
+ };
+
+// Interface: DAOContainer
+#undef INTERFACE
+#define INTERFACE DAOContainer
+DECLARE_INTERFACE_(DAOContainer, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_Inherit) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Inherit) (THIS_ VARIANT_BOOL fInherit) PURE;
+ STDMETHOD(get_Documents) (THIS_ DAODocuments FAR* FAR* ppdocs) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOContainers
+#undef INTERFACE
+#define INTERFACE DAOContainers
+DECLARE_INTERFACE_(DAOContainers, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOContainer FAR* FAR* ppctn) PURE;
+ };
+
+// Interface: DAODocument
+#undef INTERFACE
+#define INTERFACE DAODocument
+DECLARE_INTERFACE_(DAODocument, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Container) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAODocuments
+#undef INTERFACE
+#define INTERFACE DAODocuments
+DECLARE_INTERFACE_(DAODocuments, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODocument FAR* FAR* ppdoc) PURE;
+ };
+
+#endif // _DBDAOINT_H_
diff --git a/public/sdk/inc/mfc42/docobj.h b/public/sdk/inc/mfc42/docobj.h
new file mode 100644
index 000000000..acda9e712
--- /dev/null
+++ b/public/sdk/inc/mfc42/docobj.h
@@ -0,0 +1,1654 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Thu Jun 13 20:25:19 1996
+ */
+/* Compiler settings for docobj.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __docobj_h__
+#define __docobj_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOleDocument_FWD_DEFINED__
+#define __IOleDocument_FWD_DEFINED__
+typedef interface IOleDocument IOleDocument;
+#endif /* __IOleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IOleDocumentSite_FWD_DEFINED__
+#define __IOleDocumentSite_FWD_DEFINED__
+typedef interface IOleDocumentSite IOleDocumentSite;
+#endif /* __IOleDocumentSite_FWD_DEFINED__ */
+
+
+#ifndef __IOleDocumentView_FWD_DEFINED__
+#define __IOleDocumentView_FWD_DEFINED__
+typedef interface IOleDocumentView IOleDocumentView;
+#endif /* __IOleDocumentView_FWD_DEFINED__ */
+
+
+#ifndef __IEnumOleDocumentViews_FWD_DEFINED__
+#define __IEnumOleDocumentViews_FWD_DEFINED__
+typedef interface IEnumOleDocumentViews IEnumOleDocumentViews;
+#endif /* __IEnumOleDocumentViews_FWD_DEFINED__ */
+
+
+#ifndef __IContinueCallback_FWD_DEFINED__
+#define __IContinueCallback_FWD_DEFINED__
+typedef interface IContinueCallback IContinueCallback;
+#endif /* __IContinueCallback_FWD_DEFINED__ */
+
+
+#ifndef __IPrint_FWD_DEFINED__
+#define __IPrint_FWD_DEFINED__
+typedef interface IPrint IPrint;
+#endif /* __IPrint_FWD_DEFINED__ */
+
+
+#ifndef __IOleCommandTarget_FWD_DEFINED__
+#define __IOleCommandTarget_FWD_DEFINED__
+typedef interface IOleCommandTarget IOleCommandTarget;
+#endif /* __IOleCommandTarget_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+#include "oaidl.h"
+#include "servprov.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995-1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: docobj.h
+
+#pragma comment(lib,"uuid3.lib")
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////
+// Interface Definitions
+#ifndef _LPOLEDOCUMENT_DEFINED
+#define _LPOLEDOCUMENT_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleDocument_INTERFACE_DEFINED__
+#define __IOleDocument_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocument
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocument __RPC_FAR *LPOLEDOCUMENT;
+
+typedef /* [public] */
+enum __MIDL_IOleDocument_0001
+ { DOCMISC_CANCREATEMULTIPLEVIEWS = 1,
+ DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2,
+ DOCMISC_CANTOPENEDIT = 4,
+ DOCMISC_NOFILESUPPORT = 8
+ } DOCMISC;
+
+
+EXTERN_C const IID IID_IOleDocument;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocument : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateView(
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocMiscStatus(
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumViews(
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocument __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocument __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocument __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateView )(
+ IOleDocument __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocMiscStatus )(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumViews )(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+ END_INTERFACE
+ } IOleDocumentVtbl;
+
+ interface IOleDocument
+ {
+ CONST_VTBL struct IOleDocumentVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocument_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocument_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocument_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocument_CreateView(This,pIPSite,pstm,dwReserved,ppView) \
+ (This)->lpVtbl -> CreateView(This,pIPSite,pstm,dwReserved,ppView)
+
+#define IOleDocument_GetDocMiscStatus(This,pdwStatus) \
+ (This)->lpVtbl -> GetDocMiscStatus(This,pdwStatus)
+
+#define IOleDocument_EnumViews(This,ppEnum,ppView) \
+ (This)->lpVtbl -> EnumViews(This,ppEnum,ppView)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_CreateView_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+
+void __RPC_STUB IOleDocument_CreateView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_GetDocMiscStatus_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IOleDocument_GetDocMiscStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_EnumViews_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+
+void __RPC_STUB IOleDocument_EnumViews_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocument_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0099
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLEDOCUMENTSITE_DEFINED
+#define _LPOLEDOCUMENTSITE_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0099_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0099_v0_0_s_ifspec;
+
+#ifndef __IOleDocumentSite_INTERFACE_DEFINED__
+#define __IOleDocumentSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocumentSite
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocumentSite __RPC_FAR *LPOLEDOCUMENTSITE;
+
+
+EXTERN_C const IID IID_IOleDocumentSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocumentSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ActivateMe(
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocumentSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocumentSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ActivateMe )(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate);
+
+ END_INTERFACE
+ } IOleDocumentSiteVtbl;
+
+ interface IOleDocumentSite
+ {
+ CONST_VTBL struct IOleDocumentSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocumentSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocumentSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocumentSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocumentSite_ActivateMe(This,pViewToActivate) \
+ (This)->lpVtbl -> ActivateMe(This,pViewToActivate)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentSite_ActivateMe_Proxy(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate);
+
+
+void __RPC_STUB IOleDocumentSite_ActivateMe_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocumentSite_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0100
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLEDOCUMENTVIEW_DEFINED
+#define _LPOLEDOCUMENTVIEW_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0100_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0100_v0_0_s_ifspec;
+
+#ifndef __IOleDocumentView_INTERFACE_DEFINED__
+#define __IOleDocumentView_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocumentView
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocumentView __RPC_FAR *LPOLEDOCUMENTVIEW;
+
+
+EXTERN_C const IID IID_IOleDocumentView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocumentView : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetInPlaceSite(
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInPlaceSite(
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocument(
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetRect(
+ /* [in] */ LPRECT prcView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRect(
+ /* [out] */ LPRECT prcView) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetRectComplex(
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Show(
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UIActivate(
+ /* [in] */ BOOL fUIActivate) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Open( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CloseView(
+ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveViewState(
+ /* [in] */ LPSTREAM pstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ApplyViewState(
+ /* [in] */ LPSTREAM pstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocumentView __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocumentView __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetInPlaceSite )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetInPlaceSite )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocument )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRect )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPRECT prcView);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRect )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ LPRECT prcView);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRectComplex )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Show )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UIActivate )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fUIActivate);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IOleDocumentView __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CloseView )(
+ IOleDocumentView __RPC_FAR * This,
+ DWORD dwReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveViewState )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ApplyViewState )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew);
+
+ END_INTERFACE
+ } IOleDocumentViewVtbl;
+
+ interface IOleDocumentView
+ {
+ CONST_VTBL struct IOleDocumentViewVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocumentView_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocumentView_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocumentView_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocumentView_SetInPlaceSite(This,pIPSite) \
+ (This)->lpVtbl -> SetInPlaceSite(This,pIPSite)
+
+#define IOleDocumentView_GetInPlaceSite(This,ppIPSite) \
+ (This)->lpVtbl -> GetInPlaceSite(This,ppIPSite)
+
+#define IOleDocumentView_GetDocument(This,ppunk) \
+ (This)->lpVtbl -> GetDocument(This,ppunk)
+
+#define IOleDocumentView_SetRect(This,prcView) \
+ (This)->lpVtbl -> SetRect(This,prcView)
+
+#define IOleDocumentView_GetRect(This,prcView) \
+ (This)->lpVtbl -> GetRect(This,prcView)
+
+#define IOleDocumentView_SetRectComplex(This,prcView,prcHScroll,prcVScroll,prcSizeBox) \
+ (This)->lpVtbl -> SetRectComplex(This,prcView,prcHScroll,prcVScroll,prcSizeBox)
+
+#define IOleDocumentView_Show(This,fShow) \
+ (This)->lpVtbl -> Show(This,fShow)
+
+#define IOleDocumentView_UIActivate(This,fUIActivate) \
+ (This)->lpVtbl -> UIActivate(This,fUIActivate)
+
+#define IOleDocumentView_Open(This) \
+ (This)->lpVtbl -> Open(This)
+
+#define IOleDocumentView_CloseView(This,dwReserved) \
+ (This)->lpVtbl -> CloseView(This,dwReserved)
+
+#define IOleDocumentView_SaveViewState(This,pstm) \
+ (This)->lpVtbl -> SaveViewState(This,pstm)
+
+#define IOleDocumentView_ApplyViewState(This,pstm) \
+ (This)->lpVtbl -> ApplyViewState(This,pstm)
+
+#define IOleDocumentView_Clone(This,pIPSiteNew,ppViewNew) \
+ (This)->lpVtbl -> Clone(This,pIPSiteNew,ppViewNew)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_SetInPlaceSite_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite);
+
+
+void __RPC_STUB IOleDocumentView_SetInPlaceSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetInPlaceSite_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite);
+
+
+void __RPC_STUB IOleDocumentView_GetInPlaceSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetDocument_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IOleDocumentView_GetDocument_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleDocumentView_SetRect_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPRECT prcView);
+
+
+void __RPC_STUB IOleDocumentView_SetRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetRect_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ LPRECT prcView);
+
+
+void __RPC_STUB IOleDocumentView_GetRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleDocumentView_SetRectComplex_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox);
+
+
+void __RPC_STUB IOleDocumentView_SetRectComplex_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Show_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IOleDocumentView_Show_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_UIActivate_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fUIActivate);
+
+
+void __RPC_STUB IOleDocumentView_UIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Open_Proxy(
+ IOleDocumentView __RPC_FAR * This);
+
+
+void __RPC_STUB IOleDocumentView_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_CloseView_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ DWORD dwReserved);
+
+
+void __RPC_STUB IOleDocumentView_CloseView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_SaveViewState_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+
+void __RPC_STUB IOleDocumentView_SaveViewState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_ApplyViewState_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+
+void __RPC_STUB IOleDocumentView_ApplyViewState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Clone_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew);
+
+
+void __RPC_STUB IOleDocumentView_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocumentView_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0101
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPENUMOLEDOCUMENTVIEWS_DEFINED
+#define _LPENUMOLEDOCUMENTVIEWS_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0101_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0101_v0_0_s_ifspec;
+
+#ifndef __IEnumOleDocumentViews_INTERFACE_DEFINED__
+#define __IEnumOleDocumentViews_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumOleDocumentViews
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumOleDocumentViews __RPC_FAR *LPENUMOLEDOCUMENTVIEWS;
+
+
+EXTERN_C const IID IID_IEnumOleDocumentViews;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumOleDocumentViews : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall Next(
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG cViews) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumOleDocumentViewsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *Next )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumOleDocumentViewsVtbl;
+
+ interface IEnumOleDocumentViews
+ {
+ CONST_VTBL struct IEnumOleDocumentViewsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumOleDocumentViews_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumOleDocumentViews_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumOleDocumentViews_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumOleDocumentViews_Next(This,cViews,rgpView,pcFetched) \
+ (This)->lpVtbl -> Next(This,cViews,rgpView,pcFetched)
+
+#define IEnumOleDocumentViews_Skip(This,cViews) \
+ (This)->lpVtbl -> Skip(This,cViews)
+
+#define IEnumOleDocumentViews_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumOleDocumentViews_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IEnumOleDocumentViews_RemoteNext_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [length_is][size_is][out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+void __RPC_STUB IEnumOleDocumentViews_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Skip_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Reset_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Clone_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumOleDocumentViews_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0102
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPCONTINUECALLBACK_DEFINED
+#define _LPCONTINUECALLBACK_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0102_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0102_v0_0_s_ifspec;
+
+#ifndef __IContinueCallback_INTERFACE_DEFINED__
+#define __IContinueCallback_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IContinueCallback
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IContinueCallback __RPC_FAR *LPCONTINUECALLBACK;
+
+
+EXTERN_C const IID IID_IContinueCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IContinueCallback : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FContinue( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FContinuePrinting(
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IContinueCallbackVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IContinueCallback __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IContinueCallback __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinue )(
+ IContinueCallback __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinuePrinting )(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus);
+
+ END_INTERFACE
+ } IContinueCallbackVtbl;
+
+ interface IContinueCallback
+ {
+ CONST_VTBL struct IContinueCallbackVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IContinueCallback_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IContinueCallback_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IContinueCallback_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IContinueCallback_FContinue(This) \
+ (This)->lpVtbl -> FContinue(This)
+
+#define IContinueCallback_FContinuePrinting(This,nCntPrinted,nCurPage,pwszPrintStatus) \
+ (This)->lpVtbl -> FContinuePrinting(This,nCntPrinted,nCurPage,pwszPrintStatus)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IContinueCallback_FContinue_Proxy(
+ IContinueCallback __RPC_FAR * This);
+
+
+void __RPC_STUB IContinueCallback_FContinue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IContinueCallback_FContinuePrinting_Proxy(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus);
+
+
+void __RPC_STUB IContinueCallback_FContinuePrinting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IContinueCallback_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0103
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPPRINT_DEFINED
+#define _LPPRINT_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0103_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0103_v0_0_s_ifspec;
+
+#ifndef __IPrint_INTERFACE_DEFINED__
+#define __IPrint_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPrint
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPrint __RPC_FAR *LPPRINT;
+
+typedef /* [public] */
+enum __MIDL_IPrint_0001
+ { PRINTFLAG_MAYBOTHERUSER = 1,
+ PRINTFLAG_PROMPTUSER = 2,
+ PRINTFLAG_USERMAYCHANGEPRINTER = 4,
+ PRINTFLAG_RECOMPOSETODEVICE = 8,
+ PRINTFLAG_DONTACTUALLYPRINT = 16,
+ PRINTFLAG_FORCEPROPERTIES = 32,
+ PRINTFLAG_PRINTTOFILE = 64
+ } PRINTFLAG;
+
+typedef struct tagPAGERANGE
+ {
+ LONG nFromPage;
+ LONG nToPage;
+ } PAGERANGE;
+
+typedef struct tagPAGESET
+ {
+ ULONG cbStruct;
+ BOOL fOddPages;
+ BOOL fEvenPages;
+ ULONG cPageRange;
+ /* [size_is] */ PAGERANGE rgPages[ 1 ];
+ } PAGESET;
+
+#define PAGESET_TOLASTPAGE ((WORD)(-1L))
+
+EXTERN_C const IID IID_IPrint;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPrint : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetInitialPageNum(
+ /* [in] */ LONG nFirstPage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageInfo(
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages) = 0;
+
+ virtual /* [local] */ HRESULT __stdcall Print(
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPrintVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPrint __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPrint __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetInitialPageNum )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ LONG nFirstPage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPageInfo )(
+ IPrint __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *Print )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+ END_INTERFACE
+ } IPrintVtbl;
+
+ interface IPrint
+ {
+ CONST_VTBL struct IPrintVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPrint_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPrint_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPrint_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPrint_SetInitialPageNum(This,nFirstPage) \
+ (This)->lpVtbl -> SetInitialPageNum(This,nFirstPage)
+
+#define IPrint_GetPageInfo(This,pnFirstPage,pcPages) \
+ (This)->lpVtbl -> GetPageInfo(This,pnFirstPage,pcPages)
+
+#define IPrint_Print(This,grfFlags,pptd,ppPageSet,pstgmOptions,pcallback,nFirstPage,pcPagesPrinted,pnLastPage) \
+ (This)->lpVtbl -> Print(This,grfFlags,pptd,ppPageSet,pstgmOptions,pcallback,nFirstPage,pcPagesPrinted,pnLastPage)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPrint_SetInitialPageNum_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ LONG nFirstPage);
+
+
+void __RPC_STUB IPrint_SetInitialPageNum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPrint_GetPageInfo_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages);
+
+
+void __RPC_STUB IPrint_GetPageInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IPrint_RemotePrint_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *pppageset,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+void __RPC_STUB IPrint_RemotePrint_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPrint_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0104
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLECOMMANDTARGET_DEFINED
+#define _LPOLECOMMANDTARGET_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0104_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0104_v0_0_s_ifspec;
+
+#ifndef __IOleCommandTarget_INTERFACE_DEFINED__
+#define __IOleCommandTarget_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCommandTarget
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCommandTarget __RPC_FAR *LPOLECOMMANDTARGET;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0001
+ { OLECMDF_SUPPORTED = 0x1,
+ OLECMDF_ENABLED = 0x2,
+ OLECMDF_LATCHED = 0x4,
+ OLECMDF_NINCHED = 0x8
+ } OLECMDF;
+
+typedef struct _tagOLECMD
+ {
+ ULONG cmdID;
+ DWORD cmdf;
+ } OLECMD;
+
+typedef struct _tagOLECMDTEXT
+ {
+ DWORD cmdtextf;
+ ULONG cwActual;
+ ULONG cwBuf;
+ /* [size_is] */ wchar_t rgwz[ 1 ];
+ } OLECMDTEXT;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0002
+ { OLECMDTEXTF_NONE = 0,
+ OLECMDTEXTF_NAME = 1,
+ OLECMDTEXTF_STATUS = 2
+ } OLECMDTEXTF;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0003
+ { OLECMDEXECOPT_DODEFAULT = 0,
+ OLECMDEXECOPT_PROMPTUSER = 1,
+ OLECMDEXECOPT_DONTPROMPTUSER = 2,
+ OLECMDEXECOPT_SHOWHELP = 3
+ } OLECMDEXECOPT;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0004
+ { OLECMDID_OPEN = 1,
+ OLECMDID_NEW = 2,
+ OLECMDID_SAVE = 3,
+ OLECMDID_SAVEAS = 4,
+ OLECMDID_SAVECOPYAS = 5,
+ OLECMDID_PRINT = 6,
+ OLECMDID_PRINTPREVIEW = 7,
+ OLECMDID_PAGESETUP = 8,
+ OLECMDID_SPELL = 9,
+ OLECMDID_PROPERTIES = 10,
+ OLECMDID_CUT = 11,
+ OLECMDID_COPY = 12,
+ OLECMDID_PASTE = 13,
+ OLECMDID_PASTESPECIAL = 14,
+ OLECMDID_UNDO = 15,
+ OLECMDID_REDO = 16,
+ OLECMDID_SELECTALL = 17,
+ OLECMDID_CLEARSELECTION = 18,
+ OLECMDID_ZOOM = 19,
+ OLECMDID_GETZOOMRANGE = 20,
+ OLECMDID_UPDATECOMMANDS = 21,
+ OLECMDID_REFRESH = 22,
+ OLECMDID_STOP = 23,
+ OLECMDID_HIDETOOLBARS = 24,
+ OLECMDID_SETPROGRESSMAX = 25,
+ OLECMDID_SETPROGRESSPOS = 26,
+ OLECMDID_SETPROGRESSTEXT = 27,
+ OLECMDID_SETTITLE = 28,
+ OLECMDID_SETDOWNLOADSTATE = 29
+ } OLECMDID;
+
+#define OLECMDERR_E_FIRST (OLE_E_LAST+1)
+#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST)
+#define OLECMDERR_E_DISABLED (OLECMDERR_E_FIRST+1)
+#define OLECMDERR_E_NOHELP (OLECMDERR_E_FIRST+2)
+#define OLECMDERR_E_CANCELED (OLECMDERR_E_FIRST+3)
+#define OLECMDERR_E_UNKNOWNGROUP (OLECMDERR_E_FIRST+4)
+#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST
+#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED
+#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED
+#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP
+#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED
+#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP
+
+EXTERN_C const IID IID_IOleCommandTarget;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCommandTarget : public IUnknown
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE QueryStatus(
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Exec(
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCommandTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCommandTarget __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCommandTarget __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryStatus )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Exec )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut);
+
+ END_INTERFACE
+ } IOleCommandTargetVtbl;
+
+ interface IOleCommandTarget
+ {
+ CONST_VTBL struct IOleCommandTargetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCommandTarget_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCommandTarget_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCommandTarget_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCommandTarget_QueryStatus(This,pguidCmdGroup,cCmds,prgCmds,pCmdText) \
+ (This)->lpVtbl -> QueryStatus(This,pguidCmdGroup,cCmds,prgCmds,pCmdText)
+
+#define IOleCommandTarget_Exec(This,pguidCmdGroup,nCmdID,nCmdexecopt,pvaIn,pvaOut) \
+ (This)->lpVtbl -> Exec(This,pguidCmdGroup,nCmdID,nCmdexecopt,pvaIn,pvaOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleCommandTarget_QueryStatus_Proxy(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText);
+
+
+void __RPC_STUB IOleCommandTarget_QueryStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCommandTarget_Exec_Proxy(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut);
+
+
+void __RPC_STUB IOleCommandTarget_Exec_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCommandTarget_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0105
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+////////////////////////////////////////////////////////////////////////////
+// Aliases to original office-compatible names
+#define IMsoDocument IOleDocument
+#define IMsoDocumentSite IOleDocumentSite
+#define IMsoView IOleDocumentView
+#define IEnumMsoView IEnumOleDocumentViews
+#define IMsoCommandTarget IOleCommandTarget
+#define LPMSODOCUMENT LPOLEDOCUMENT
+#define LPMSODOCUMENTSITE LPOLEDOCUMENTSITE
+#define LPMSOVIEW LPOLEDOCUMENTVIEW
+#define LPENUMMSOVIEW LPENUMOLEDOCUMENTVIEWS
+#define LPMSOCOMMANDTARGET LPOLECOMMANDTARGET
+#define MSOCMD OLECMD
+#define MSOCMDTEXT OLECMDTEXT
+#define IID_IMsoDocument IID_IOleDocument
+#define IID_IMsoDocumentSite IID_IOleDocumentSite
+#define IID_IMsoView IID_IOleDocumentView
+#define IID_IEnumMsoView IID_IEnumOleDocumentViews
+#define IID_IMsoCommandTarget IID_IOleCommandTarget
+#define MSOCMDF_SUPPORTED OLECMDF_SUPPORTED
+#define MSOCMDF_ENABLED OLECMDF_ENABLED
+#define MSOCMDF_LATCHED OLECMDF_LATCHED
+#define MSOCMDF_NINCHED OLECMDF_NINCHED
+#define MSOCMDTEXTF_NONE OLECMDTEXTF_NONE
+#define MSOCMDTEXTF_NAME OLECMDTEXTF_NAME
+#define MSOCMDTEXTF_STATUS OLECMDTEXTF_STATUS
+#define MSOCMDEXECOPT_DODEFAULT OLECMDEXECOPT_DODEFAULT
+#define MSOCMDEXECOPT_PROMPTUSER OLECMDEXECOPT_PROMPTUSER
+#define MSOCMDEXECOPT_DONTPROMPTUSER OLECMDEXECOPT_DONTPROMPTUSER
+#define MSOCMDEXECOPT_SHOWHELP OLECMDEXECOPT_SHOWHELP
+#define MSOCMDID_OPEN OLECMDID_OPEN
+#define MSOCMDID_NEW OLECMDID_NEW
+#define MSOCMDID_SAVE OLECMDID_SAVE
+#define MSOCMDID_SAVEAS OLECMDID_SAVEAS
+#define MSOCMDID_SAVECOPYAS OLECMDID_SAVECOPYAS
+#define MSOCMDID_PRINT OLECMDID_PRINT
+#define MSOCMDID_PRINTPREVIEW OLECMDID_PRINTPREVIEW
+#define MSOCMDID_PAGESETUP OLECMDID_PAGESETUP
+#define MSOCMDID_SPELL OLECMDID_SPELL
+#define MSOCMDID_PROPERTIES OLECMDID_PROPERTIES
+#define MSOCMDID_CUT OLECMDID_CUT
+#define MSOCMDID_COPY OLECMDID_COPY
+#define MSOCMDID_PASTE OLECMDID_PASTE
+#define MSOCMDID_PASTESPECIAL OLECMDID_PASTESPECIAL
+#define MSOCMDID_UNDO OLECMDID_UNDO
+#define MSOCMDID_REDO OLECMDID_REDO
+#define MSOCMDID_SELECTALL OLECMDID_SELECTALL
+#define MSOCMDID_CLEARSELECTION OLECMDID_CLEARSELECTION
+#define MSOCMDID_ZOOM OLECMDID_ZOOM
+#define MSOCMDID_GETZOOMRANGE OLECMDID_GETZOOMRANGE
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0105_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0105_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT __stdcall IEnumOleDocumentViews_Next_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+/* [call_as] */ HRESULT __stdcall IEnumOleDocumentViews_Next_Stub(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [length_is][size_is][out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+/* [local] */ HRESULT __stdcall IPrint_Print_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+/* [call_as] */ HRESULT __stdcall IPrint_Print_Stub(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *pppageset,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/idispids.h b/public/sdk/inc/mfc42/idispids.h
new file mode 100644
index 000000000..0d6637c1c
--- /dev/null
+++ b/public/sdk/inc/mfc42/idispids.h
@@ -0,0 +1,12 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: idispids.h
+//
+//--------------------------------------------------------------------------
+
+#define DISPID_READYSTATE (-525)
+#define DISPID_READYSTATECHANGE (-609)
+#define DISPID_AMBIENT_TRANSFERPRIORITY (-728)
diff --git a/public/sdk/inc/mfc42/l.chs/afxctl.rc b/public/sdk/inc/mfc42/l.chs/afxctl.rc
new file mode 100644
index 000000000..69ab2c204
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "×ÖÌå(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "×ÖÐÎ(&Y)",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "´óС(&S)",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Ч¹û",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "ɾ³ýÏß(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "Ï»®Ïß(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "×ÖÌå·¶Àý",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "ϵͳÑÕÉ«(&C)",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ä¯ÀÀ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Çå³ý(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Ô¤ÔÄ:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(δ֪)"
+ AFX_IDS_COLOR_DESKTOP "̨ʽ"
+ AFX_IDS_COLOR_APPWORKSPACE "Ó¦ÓóÌÐò¹¤×÷Çø"
+ AFX_IDS_COLOR_WNDBACKGND "´°¿Ú±³¾°"
+ AFX_IDS_COLOR_WNDTEXT "´°¿ÚÎı¾"
+ AFX_IDS_COLOR_MENUBAR "²Ëµ¥À¸"
+ AFX_IDS_COLOR_MENUTEXT "²Ëµ¥ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBAR "»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_INACTIVEBAR "²»»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_ACTIVETEXT "»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_INACTIVETEXT "²»»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBORDER "»î¶¯±ß¿ò"
+ AFX_IDS_COLOR_INACTIVEBORDER "²»»î¶¯±ß¿ò"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "´°¿Ú¿ò¼Ü"
+ AFX_IDS_COLOR_SCROLLBARS "¾í¶¯Ìõ"
+ AFX_IDS_COLOR_BTNFACE "°´Å¥±íÃæ"
+ AFX_IDS_COLOR_BTNSHADOW "°´Å¥ÒõÓ°"
+ AFX_IDS_COLOR_BTNTEXT "°´Å¥ÎÄ×Ö"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "°´Å¥Í»³ö"
+ AFX_IDS_COLOR_DISABLEDTEXT "ʧЧÎÄ×Ö"
+ AFX_IDS_COLOR_HIGHLIGHT "Í»³ö"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Í»³öµÄÎÄ×Ö"
+ AFX_IDS_REGULAR "Õý³£Ìå"
+ AFX_IDS_BOLD "ºÚÌå"
+ AFX_IDS_ITALIC "бÌå"
+ AFX_IDS_BOLDITALIC "ºÚбÌå"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(×ÖÌå)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(ÑÕÉ«)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(ͼƬ - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "δ֪"
+ AFX_IDS_PICTYPE_NONE "ÎÞ"
+ AFX_IDS_PICTYPE_BITMAP "λͼ"
+ AFX_IDS_PICTYPE_METAFILE "ÔªÎļþ"
+ AFX_IDS_PICTYPE_ICON "ͼ±ê"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "ÑÕÉ«ÌØÐÔÒ³"
+ AFX_IDS_COLOR_PPG_CAPTION "ÑÕÉ«"
+ AFX_IDS_FONT_PPG "×ÖÌåÌØÐÔÒ³"
+ AFX_IDS_FONT_PPG_CAPTION "×ÖÌå"
+ AFX_IDS_PICTURE_PPG "ͼƬÌØÐÔÒ³"
+ AFX_IDS_PICTURE_PPG_CAPTION "ͼƬ"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ÎÞ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ¹Ì¶¨µ¥¸ö"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "±à¼­(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌØÐÔ(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "ÎÞ·¨´ò¿ªÍ¼Æ¬Îļþ %1¡£´ËÎļþ¿ÉÄܲ»´æÔÚ»ò²»¿É¶Á¡£"
+ AFX_IDP_PICTURECANTLOAD "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþ¿ÉÄܸñʽ²»ÕýÈ·¡£"
+ AFX_IDP_PICTURETOOLARGE "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþÌ«´óÄÚ´æÎÞ·¨ÈÝÄÉ¡£"
+ AFX_IDP_PICTUREREADFAILED
+ "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£Î´Óè¾ßÌå˵Ã÷µÄ¶Á²Ù×÷ʧ°Ü¡£"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "ä¯ÀÀͼƬ"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "·Ç·¨º¯Êýµ÷ÓÃ"
+ AFX_IDP_E_OVERFLOW "Òç³ö"
+ AFX_IDP_E_OUTOFMEMORY "ÄÚ´æ²»×ã"
+ AFX_IDP_E_DIVISIONBYZERO "±»Áã³ý"
+ AFX_IDP_E_OUTOFSTRINGSPACE "×Ö·û´®¿Õ¼ä²»×ã"
+ AFX_IDP_E_OUTOFSTACKSPACE "¶ÑÕ»¿Õ¼ä²»×ã"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ÎļþÃû»òÎļþºÅ´í"
+ AFX_IDP_E_FILENOTFOUND "ÎļþδÕÒµ½"
+ AFX_IDP_E_BADFILEMODE "Îļþģʽ´í"
+ AFX_IDP_E_FILEALREADYOPEN "ÎļþÒѾ­´ò¿ª"
+ AFX_IDP_E_DEVICEIOERROR "É豸ÊäÈë/Êä³ö³ö´í"
+ AFX_IDP_E_FILEALREADYEXISTS "ÎļþÒѾ­´æÔÚ"
+ AFX_IDP_E_BADRECORDLENGTH "¼Ç¼³¤¶È´í"
+ AFX_IDP_E_DISKFULL "´ÅÅÌÒÑÂú"
+ AFX_IDP_E_BADRECORDNUMBER "¼Ç¼ºÅÂë´í"
+ AFX_IDP_E_BADFILENAME "ÎļþÃû´í"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÎļþÌ«¶à"
+ AFX_IDP_E_DEVICEUNAVAILABLE "É豸²»ÊʺÏ"
+ AFX_IDP_E_PERMISSIONDENIED "δ»ñµÃÐí¿É"
+ AFX_IDP_E_DISKNOTREADY "´ÅÅÌδ׼±¸ºÃ"
+ AFX_IDP_E_PATHFILEACCESSERROR "·¾¶/Îļþ·ÃÎÊ´íÎó"
+ AFX_IDP_E_PATHNOTFOUND "ûÓÐÕÒµ½Â·¾¶"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÎÞЧµÄ×Ö·û´®ÐÍÑù"
+ AFX_IDP_E_INVALIDUSEOFNULL "¿ÕֵʹÓò»µ±"
+ AFX_IDP_E_INVALIDFILEFORMAT "ÎÞЧµÄÎļþ¸ñʽ"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÎÞЧµÄÌØÐÔÖµ"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "ÎÞЧµÄÊý×éϱê"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔÔÚÔËÐÐʱ¿Ì²»ÄÜÉèÖÃ"
+ AFX_IDP_E_SETNOTSUPPORTED "¸ÃÌØÐÔΪֻ¶ÁÌØÐÔ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ʹÓÃÌØÐÔÊý×éʱ±ØÐëÖ¸Ã÷Êý×éϱê"
+ AFX_IDP_E_SETNOTPERMITTED "²»¿ÉÔÚÕâ¸ö¿ØÖÆÉÏÉèÖÃÌØÐÔ"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔ²»¿ÉÔÚÔËÐÐʱ¿Ì¶ÁÈ¡"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "¸ÃÌØÐÔΪֻдÌØÐÔ"
+ AFX_IDP_E_PROPERTYNOTFOUND "ûÓÐÕÒµ½ÌØÐÔ"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "ÎÞЧµÄ¼ôÌù°å¸ñʽ"
+ AFX_IDP_E_INVALIDPICTURE "ÎÞЧͼƬ"
+ AFX_IDP_E_PRINTERERROR "´òÓ¡»ú³ö´í"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÎÞ·¨´´½¨´æÖü¹ý³ÌËùÐèÒªµÄÁÙʱÎļþ"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ûÓÐÕÒµ½Òª²éÕÒµÄÎı¾"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "ÒªÌæ»»µÄÎı¾Ì«³¤"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxdb.rc b/public/sdk/inc/mfc42/l.chs/afxdb.rc
new file mode 100644
index 000000000..e01f3517b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÊÔͼÁ¬½ÓÊý¾ÝԴʧ°Ü"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "¼Ç¼¼¯½öÖ§³ÖÏòÇ°Òƶ¯¡£"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ÊÔͼ´ò¿ª±í¸ñʧ°Ü¡ªÎ´Ö¸Ã÷Òª¼ìË÷µÄÁС£"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "²éѯ·µ»ØµÄÁÐÊý¾ÝÀàÐÍÓëÆÚÍû²»·û¡£"
+ AFX_IDP_SQL_ILLEGAL_MODE "¸üлòɾ³ýµÄÆóͼʧ°ÜÁË¡£"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¶àÐÐÊý¾Ý±»¸üС£"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "²Ù×÷ʧ°Ü£¬ÎÞµ±Ç°¼Ç¼¡£"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¸üлòɾ³ý²Ù×÷δÉæ¼°ÈκÎÊý¾ÝÐС£"
+ AFX_IDP_SQL_RECORDSET_READONLY "¼Ç¼¼¯ÊÇÖ»¶Á"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö Microsoft »ù´¡À೤¶þ½øÖÆÊý¾ÝÄ£ÐÍ¡£"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "×°ÈëËùÐèµÄ ODBC32.DLL ²¿¼þµÄÆóͼʧ°Ü¡£"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ÒªÖ§³Ö¿ìÕÕ¹¦ÄÜ£¬ODBC ¾²Ì¬ÓαêÊDZØÒªµÄ¡£"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_LEVEL1 ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_MINIMUM ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÊÔͼԽ¹ýÊý¾ÝµÄÓÐЧ´æÖüÇø¼ä¡£"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ÐèÒª·ûºÏ ODBC µÄ¶þ¼¶±ê×¼µÄÇý¶¯³ÌÐò¡£"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¨Î»¸üС£"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "²»Ö§³ÖËùÒªÇóµÄËøģʽ¡£"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Êý¾Ý±»½Ø¶Ï¡£"
+ AFX_IDP_SQL_ROW_FETCH
+ "¼ìË÷¼Ç¼³ö´í¡£"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ûÓÐÕÒµ½ËùÐèµÄ ODBC ½øÈëµã¡£È·±£ ODBC °²×°ÕýÈ·¡£"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "¸üлòɾ³ý²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "¡°ODBCÇý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬Ö¸Õë¡£¡±"
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "¡°ÎÞ·¨¶ÔDAO/Jet dbÒýÇæ½øÐгõʼ»¯¡£¡±"
+ AFX_IDP_DAO_DFX_BIND
+ "¡°´íµÄDFXÖµ²ÎÊý¡£¡±"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "¡°DAO TableDef»òQueryDefûÓдò¿ª¡£¡±"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "¡°GetRows ʧ°Ü¡£·ÖÅä¸øÐеÄÄÚ´æ²»¹»¡£¡±"
+ AFX_IDP_DAO_BADBINDINFO
+ "¡°GetRows ¸³Öµ´íÎ󡣿ÉÄÜÊÇÊý¾ÝÀàÐͲ»Æ¥ÅäÔì³ÉµÄ¡£¡±"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "¡°GetRows ʧ°Ü¡£ËùÇëÇóµÄÁв»ÊǸüǼֵµÄÒ»¸ö³É·Ö¡£¡±"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxolecl.rc b/public/sdk/inc/mfc42/l.chs/afxolecl.rc
new file mode 100644
index 000000000..30dd9b7dc
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "ÎÞ·¨¼¤»îÒ»¸ö¾²Ì¬ OLE ¶ÔÏó¡£"
+ AFX_IDP_FAILED_TO_CONNECT "Á¬½Óʧ°Ü¡£\nÁ´½Ó¿ÉÄÜÒѾ­¶ÏÁË¡£"
+ AFX_IDP_SERVER_BUSY "ÎÞ·¨´¦ÀíÃüÁ·þÎñÆ÷³ÌÐòÕýæ¡£"
+ AFX_IDP_BAD_VERB "Ö´ÐзþÎñÆ÷³ÌÐò²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_FAILED_TO_LAUNCH "Æô¶¯·þÎñÆ÷Ó¦ÓóÌÐòʧ°Ü¡£"
+ AFX_IDS_UPDATING_ITEMS "¸üРOLE ¶ÔÏó"
+ AFX_IDP_FAILED_TO_CONVERT "ת»» OLE ¶ÔÏóʧ°Ü¡£"
+ AFX_IDP_ASK_TO_DISCARD "ÔÚÍ˳ö Windows ʱÎÞ·¨±£´æ OLE ¶ÔÏó£¡\n·ÅÆúËùÓжÔ%1µÄ¸Ä¶¯£¿"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "ͼƬ(ÔªÎļþ)\nÒ»·ùͼƬ"
+ AFX_IDS_DIB_FORMAT "É豸¶ÀÁ¢Î»Í¼\nÒ»·ùÉ豸¶ÀÁ¢Î»Í¼"
+ AFX_IDS_BITMAP_FORMAT "λͼ\nÒ»·ùλͼ"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Ç¿»¯Îı¾(RTF)\n×ÖÌåºÍ¶ÎÂä¸ñʽ»¯µÄÎı¾"
+ AFX_IDS_TEXT_FORMAT "δ¸ñʽ»¯Îı¾\nδ¾­¹ýÈκθñʽ»¯µÄÎı¾"
+
+ AFX_IDS_INVALID_CURRENCY "ÎÞЧµÄ»õ±Ò¡£"
+ AFX_IDS_INVALID_DATETIME "ÎÞЧµÄÈÕÆÚʱ¼ä¡£"
+ AFX_IDS_INVALID_DATETIMESPAN "ÎÞЧµÄÈÕÆÚʱ¼ä¿ç¶È¡£"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxolesv.rc b/public/sdk/inc/mfc42/l.chs/afxolesv.rc
new file mode 100644
index 000000000..b7bc22506
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÔÚ¼ÌÐøÔËÐÐÇ°¶Ô %1 ½øÐиüУ¿"
+ AFX_IDP_FAILED_TO_UPDATE, "²»Äܸüпͻ§¡£"
+
+ AFX_IDP_FAILED_TO_REGISTER, "×¢²áʧ°Ü¡£OLE ¹¦ÄÜ¿ÉÄܹ¤×÷²»Õý³£¡£"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¸üÐÂϵͳע²á¼Ç¼ʧ°Ü¡£\nÇëÊÔÓà REGEDIT¡£"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 ÔÚ %2 ÖÐ"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Í˳ö²¢»Øµ½ %1(&X)"
+ AFX_IDS_UPDATE_MENU, "¸üР%1(&U)"
+ AFX_IDS_SAVEFILECOPY, "±£´æ¸±±¾Îª"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxprint.rc b/public/sdk/inc/mfc42/l.chs/afxprint.rc
new file mode 100644
index 000000000..939fe8af1
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "´òÓ¡",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "ÔÚ...ÉÏ",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,45,40,15
+ CTEXT "°´ Cmd-. °´Å¥ÒÔÈ¡Ïû¡£",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Ç°Ò»(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Èë(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "³ö(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "ÓÚ %1" // for print output
+ AFX_IDS_ONEPAGE, "Ò»Ò³(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "Á½Ò³(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "µÚ %u Ò³" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "µÚ %u Ò³ \nµÚ %u Ò³-µÚ %u Ò³ \n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "´òÓ¡»úÎļþ (*.prn)|*.prn|ËùÓÐÎļþ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Ó¡³öµ½Îļþ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "µ½ %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxres.rc b/public/sdk/inc/mfc42/l.chs/afxres.rc
new file mode 100644
index 000000000..aecc232bd
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "´ò¿ª"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "±£´æΪ"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ (*.*)"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+#else
+ AFX_IDS_SAVEFILE, "±£´æÎĵµÎª:"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+ AFX_IDS_ABOUT, "¡°¹ØÓÚ%1\205¡±"
+#endif
+ AFX_IDS_HIDE, "Òþ²Ø(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÄÚ´æ²»×ã¡£"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"ÊÔͼִÐÐϵͳ²»Ö§³ÖµÄ²Ù×÷¡£"
+ AFX_IDS_RESOURCE_EXCEPTION, "±ØÐèµÄ×ÊÔ´ÎÞ·¨µÃµ½¡£"
+ AFX_IDS_USER_EXCEPTION, "³öÏÖÁËδ֪µÄ´íÎó"
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "ÎÞЧµÄÎļþÃû¡£"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "´ò¿ªÎĵµÊ§°Ü¡£"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "±£´æÎĵµÊ§°Ü¡£"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1£¿"
+#else
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1 Îĵµ\042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "½¨Á¢¿ÕÎĵµÊ§°Ü¡£"
+ AFX_IDP_FILE_TOO_LARGE, "¸ÃÎļþÌ«´ó£¬ÎÞ·¨´ò¿ª¡£"
+ AFX_IDP_FAILED_TO_START_PRINT, "ÎÞ·¨Æô¶¯´òÓ¡×÷Òµ¡£"
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Æô¶¯°ïÖúʧ°Ü¡£"
+ AFX_IDP_INTERNAL_FAILURE, "ÄÚ²¿Ó¦ÓóÌÐò³ö´í¡£"
+ AFX_IDP_COMMAND_FAILURE, "ÃüÁîʧ°Ü¡£"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ûÓÐ×ã¹»µÄÄÚ´æÖ´ÐвÙ×÷¡£"
+ AFX_IDP_GET_NOT_SUPPORTED, "ÎÞ·¨¶ÁֻдÌØÐÔ¡£"
+ AFX_IDP_SET_NOT_SUPPORTED, "ÎÞ·¨Ð´Ö»¶ÁÌØÐÔ¡£"
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "·ÇÔ¤ÆÚµÄÎļþ¸ñʽ¡£"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½¸ÃÎļþ¡£\nÇëÑéÖ¤¸ø³öµÄ·¾¶ºÍÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÇý¶¯Æ÷ÒÑÂú¡£"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½\042%1Îļþ¡£\042ÇëÑéÖ¤¸ø³öµÄÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÒÑÂú¡£"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "ÎÞ·¨¶Ô %1 ½øÐжÁ²Ù×÷£¬ËüÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_ACCESS_WRITE "ÎÞ·¨¶Ô %1 ½øÐÐд²Ù×÷£¬ÒòΪËüÊÇÖ»¶ÁÎļþ»òÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_IO_ERROR_READ "ÔÚ¶Ô %1 ½øÐжÁ²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "ÔÚ¶Ô %1 ½øÐÐд²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Çë¼üÈëÒ»¸öÕûÊý¡£"
+ AFX_IDP_PARSE_REAL, "Çë¼üÈëÒ»¸öÊý¡£"
+ AFX_IDP_PARSE_INT_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_REAL_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÊý×Ö¡£¡±"
+ AFX_IDP_PARSE_STRING_SIZE, "¡°ÇëÌîÈë²»¶àÓÚ%1¸öµÄ×Ö·û¡£¡±"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÇëÑ¡ÔñÒ»¸ö°´Å¥¡£"
+ AFX_IDP_PARSE_BYTE, "¡°ÇëÌîÈëÒ»¸öÔÚ0ºÍ255Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_UINT, "¡°ÇëÌîÈëÒ»¸öÕýÕûÊý¡£¡±"
+ AFX_IDP_PARSE_DATETIME, "¡°ÇëÌîÈëÒ»¸öÈÕÆÚºÍ/»òʱ¼äÖµ¡£¡±"
+ AFX_IDP_PARSE_CURRENCY, "¡°ÇëÌîÈëÒ»¸ö»õ±ÒÖµ¡£¡±"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Á´½ÓµÄ %s"
+ AFX_IDS_UNKNOWNTYPE "δ֪ÀàÐÍ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÎÞ·¨×¢²áÎĵµ¡£\n´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÎÞ·¨×¢²áÎĵµ\042%1¡£\42´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "µÃ²»µ½³ö´íÐÅÏ¢¡£"
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_FILE_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_FILE_NOT_FOUND "ûÓÐÕÒµ½ %1¡£"
+ AFX_IDP_FILE_BAD_PATH "%1 Öаüº¬ÎÞЧµÄ·¾¶¡£"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ÎÞ·¨´ò¿ª %1 ÒòΪ̫¶àÎļþÒѱ»´ò¿ª¡£"
+ AFX_IDP_FILE_ACCESS_DENIED "¶Ô %1 µÄ´æÈ¡±»¾Ü¾ø¡£"
+ AFX_IDP_FILE_INVALID_FILE "Ò»¸öÎÞЧµÄÎļþ±úÓë %1 Ïà¹ØÁª¡£"
+ AFX_IDP_FILE_REMOVE_CURRENT "ÎÞ·¨É¾³ý %1 ÒòΪËüÊǵ±Ç°Ä¿Â¼¡£"
+ AFX_IDP_FILE_DIR_FULL "¸ÃĿ¼ÒÑÂú£¬ÎÞ·¨´´½¨ %1¡£"
+ AFX_IDP_FILE_BAD_SEEK "¶Ô %1 ½øÐвéÕÒʧ°Ü¡£"
+ AFX_IDP_FILE_HARD_IO "ÔÚ´æÈ¡ %1 ʱһ¸öÓ²¼þÊäÈë/Êä³ö´íÎó±»±¨¸æ¡£"
+ AFX_IDP_FILE_SHARING "ÔÚ´æÈ¡ %1 ʱ·¢Éú¹²ÏíÎ¥Àý¡£"
+ AFX_IDP_FILE_LOCKING "ÔÚ´æÈ¡ %1 ʱ·¢ÉúËøÎ¥Àý¡£"
+ AFX_IDP_FILE_DISKFULL "ÔÚ´æÈ¡ %1 ʱ´ÅÅÌÒÑÂú¡£"
+ AFX_IDP_FILE_EOF "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+ AFX_IDS_UNNAMED_FILE "һδÃüÃûÎļþ"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_ARCH_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_ARCH_READONLY "ÊÔͼÔÚ¶Ô %1 ½øÐжÁ²Ù×÷µÄͬʱ¶ÔÆä½øÐÐд²Ù×÷¡£"
+ AFX_IDP_ARCH_ENDOFFILE "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+ AFX_IDP_ARCH_WRITEONLY "ÊÔͼÔÚ¶Ô %1 ½øÐÐд²Ù×÷µÄͬʱ¶ÔÆä½øÐжÁ²Ù×÷¡£"
+ AFX_IDP_ARCH_BADINDEX "%1 ¸ñʽ´í¡£"
+ AFX_IDP_ARCH_BADCLASS "%1 º¬ÓзÇÔ¤ÆڵĶÔÏó¡£"
+ AFX_IDP_ARCH_BADSCHEMA "%1 °üº¬´íÎóµÄģʽ¡£"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "ÎÞ·¨×°ÈëÓʼþϵͳ֧Ԯ¡£"
+ AFX_IDP_INVALID_MAPI_DLL "Óʼþϵͳ DLL ÎÞЧ¡£"
+ AFX_IDP_FAILED_MAPI_SEND "´«µÝÓʼþδÄÜ´«µÝÐÅÏ¢¡£"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "ÏóËØ"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "н¨"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "н¨(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È·¶¨",IDOK,137,6,40,14
+ PUSHBUTTON "È¡Ïû",IDCANCEL,137,23,40,14
+ PUSHBUTTON "°ïÖú(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.cht/afxctl.rc b/public/sdk/inc/mfc42/l.cht/afxctl.rc
new file mode 100644
index 000000000..ea73dab14
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "¦r«¬(&F):",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "¦r«¬¼Ë¦¡(&y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¤j¤p(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "®ÄªG",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "¨ú®ø½u(&k)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "©³½u(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "½d¨Ò",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¨t²ÎÃC¦â(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ÂsÄý(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "²M°£(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "¹wÄý:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(¥¼ª¾)"
+ AFX_IDS_COLOR_DESKTOP "®à­±"
+ AFX_IDS_COLOR_APPWORKSPACE "À³¥Îµ{¦¡¤u§@°Ï"
+ AFX_IDS_COLOR_WNDBACKGND "µøµ¡­I´º"
+ AFX_IDS_COLOR_WNDTEXT "µøµ¡¤å¦r"
+ AFX_IDS_COLOR_MENUBAR "¥\¯àªí¦C"
+ AFX_IDS_COLOR_MENUTEXT "¥\¯àªí¤å¦r"
+ AFX_IDS_COLOR_ACTIVEBAR "²{¥Î¼ÐÃD¦C"
+ AFX_IDS_COLOR_INACTIVEBAR "«D²{¥Î¼ÐÃD¦C"
+ AFX_IDS_COLOR_ACTIVETEXT "²{¥Î¼ÐÃD¦C¤å¦r"
+ AFX_IDS_COLOR_INACTIVETEXT "²{¥Î¼ÐÃD¦C¤å¦r"
+ AFX_IDS_COLOR_ACTIVEBORDER "²{¥ÎÃä¬É"
+ AFX_IDS_COLOR_INACTIVEBORDER "«D²{¥ÎÃä¬É"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "µøµ¡Ãä®Ø"
+ AFX_IDS_COLOR_SCROLLBARS "±²¶b"
+ AFX_IDS_COLOR_BTNFACE "«ö¶sªí­±"
+ AFX_IDS_COLOR_BTNSHADOW "«ö¶s³±¼v"
+ AFX_IDS_COLOR_BTNTEXT "«ö¶s¤å¦r"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "«ö¶s±j½Õ"
+ AFX_IDS_COLOR_DISABLEDTEXT "¥¢®Ä¤å¦r"
+ AFX_IDS_COLOR_HIGHLIGHT "±j½Õ"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "±j½Õ¤å¦r"
+ AFX_IDS_REGULAR "¤@¯ë"
+ AFX_IDS_BOLD "²ÊÅé"
+ AFX_IDS_ITALIC "±×Åé"
+ AFX_IDS_BOLDITALIC "²Ê±×Åé"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(¦r«¬)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(ÃC¦â)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(¹Ï¤ù - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "¥¼ª¾"
+ AFX_IDS_PICTYPE_NONE "None"
+ AFX_IDS_PICTYPE_BITMAP "ÂI°}¹Ï§Î"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "¹Ï¥Ü"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "±m¦âÄÝ©Ê­¶"
+ AFX_IDS_COLOR_PPG_CAPTION "±m¦â"
+ AFX_IDS_FONT_PPG "¦r«¬ÄÝ©Ê­¶"
+ AFX_IDS_FONT_PPG_CAPTION "¦r«¬"
+ AFX_IDS_PICTURE_PPG "¹Ï¤ùÄÝ©Ê­¶"
+ AFX_IDS_PICTURE_PPG_CAPTION "¹Ï¤ù"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "½s¿è(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÄÝ©Ê(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. Àɮפ]³\©Î¤£¦s¦b, ©ÎµLªkŪ¨ú."
+ AFX_IDP_PICTURECANTLOAD "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. Àɮ׮榡¿ù»~."
+ AFX_IDP_PICTURETOOLARGE "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. ÀɮפӤj°O¾ÐÅ餣°÷."
+ AFX_IDP_PICTUREREADFAILED
+ "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. µLªk¸ÑÄÀªºÅª¨ú¥¢±Ñ."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "ÂsÄý¹Ï¤ù"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "¤£¦Xªk¤§¥\¯à©I¥s"
+ AFX_IDP_E_OVERFLOW "·¸¥X(Overflow)"
+ AFX_IDP_E_OUTOFMEMORY "°O¾ÐÅé¥Î§¹"
+ AFX_IDP_E_DIVISIONBYZERO "°£¹s"
+ AFX_IDP_E_OUTOFSTRINGSPACE "¦r¦êªÅ¶¡¤wº¡"
+ AFX_IDP_E_OUTOFSTACKSPACE "°ïÅ|¤wº¡"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ÃaªºÀɮצWºÙ©Î½s¸¹"
+ AFX_IDP_E_FILENOTFOUND "§ä¤£¨ìÀÉ®×"
+ AFX_IDP_E_BADFILEMODE "ÃaªºÀÉ®×¼ÒºA"
+ AFX_IDP_E_FILEALREADYOPEN "Àɮפw¶}±Ò"
+ AFX_IDP_E_DEVICEIOERROR "³]³Æ¿é¥X¤J¿ù»~"
+ AFX_IDP_E_FILEALREADYEXISTS "Àɮפw¦s¦b"
+ AFX_IDP_E_BADRECORDLENGTH "Ãaªº¬ö¿ýªø«×"
+ AFX_IDP_E_DISKFULL "ºÏºÐªÅ¶¡¤wº¡"
+ AFX_IDP_E_BADRECORDNUMBER "Ãaªº¬ö¿ý½s¸¹"
+ AFX_IDP_E_BADFILENAME "ÃaªºÀɮצWºÙ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "¤Ó¦hÀÉ®×"
+ AFX_IDP_E_DEVICEUNAVAILABLE "³]³ÆµLªk¨Ï¥Î"
+ AFX_IDP_E_PERMISSIONDENIED "¤¹³\©Úµ´"
+ AFX_IDP_E_DISKNOTREADY "ºÏºÐ¾÷¥¼³Æ§´"
+ AFX_IDP_E_PATHFILEACCESSERROR "¸ô®|/Àɮצs¨ú¿ù»~"
+ AFX_IDP_E_PATHNOTFOUND "§ä¤£¨ì¸ô®|"
+ AFX_IDP_E_INVALIDPATTERNSTRING "¤£¦Xªkªº¼Ë¦¡¦r¦ê"
+ AFX_IDP_E_INVALIDUSEOFNULL "¤£¦Xªk¨Ï¥ÎªÅ­È(null)"
+ AFX_IDP_E_INVALIDFILEFORMAT "¤£¦XªkªºÀɮ׮榡"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "¤£¦XªkªºÄÝ©Ê­È"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "¤£¦Xªkªº¯Á¤Þ"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "µLªk¦b°õ¦æ®É³]©wÄÝ©Ê"
+ AFX_IDP_E_SETNOTSUPPORTED "°ßŪÄÝ©Ê"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "·í¨Ï¥ÎÄÝ©Ê°}¦C®É¥²¶·»¡©ú°}¦C¯Á¤Þ"
+ AFX_IDP_E_SETNOTPERMITTED "³o­Ó±±¨î¶µ¤§ÄݩʵLªk³]©w"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "µLªk¦b°õ¦æ®ÉŪ¨úÄÝ©Ê"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "°ß¼gÄÝ©Ê"
+ AFX_IDP_E_PROPERTYNOTFOUND "§ä¤£¨ìÄÝ©Ê"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "¤£¦Xªk¤§°Å¶Kï®æ¦¡"
+ AFX_IDP_E_INVALIDPICTURE "¤£¦Xªk¹Ï¤ù"
+ AFX_IDP_E_PRINTERERROR "¦Lªí¾÷¿ù»~"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "µLªk²£¥Í¥²¶·Àx¦s¤§¼È®ÉÀÉ®×"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "µLªk§ä¨ì·Q·j´M¤§¤å¦r"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "¨ú¥N¤å¦r¹Lªø"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxdb.rc b/public/sdk/inc/mfc42/l.cht/afxdb.rc
new file mode 100644
index 000000000..efff95274
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "¹Á¸Õ³sµ²¸ê®Æ¨Ó·½¥¢±Ñ"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "¸ê®Æ¶°¥u¤ä´©¦V«e²¾°Ê."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "¹Á¸Õ¶}±Òªí®æ¥¢±Ñ - µL¥ô¦ó¦s¨ú¸ê®ÆÄ满©ú."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¬d¸ß¶Ç¦^«D¹w´Á¸ê®ÆÄ櫬ºA."
+ AFX_IDP_SQL_ILLEGAL_MODE "­×§ï©Î§R°£¹Á¸Õ¥¢±Ñ."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¦h­Ó¸ê®Æ¦C³Q­×§ï."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "§@·~¥¢±Ñ, µL²{¦æ¸ê®Æ¬ö¿ý."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "µL¥ô¦ó¸ê®Æ¦C¨ü­×§ï©Î§R°£§@·~¼vÅT."
+ AFX_IDP_SQL_RECORDSET_READONLY "¸ê®Æ¶°¬O°ßŪ"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBCÅX°Êµ{¦¡¤£¤ä´©MFCªø¤G¶i¦ì(LongBinary)¸ê®Æ¼Ò¦¡."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "¹Á¸Õ¸ü¤J¥²­n¤¸¥ó ODBC32.DLL ¥¢±Ñ."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¤£¤ä´© Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBCÀRºA´å¼Ð»Ý­nsnapshot¤ä´©."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBCÅX°Êµ{¦¡»PMFC ¸ê®Æ®wÃþ§O¤£¬Û®e(API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBCÅX°Êµ{¦¡»PMFC¸ê®Æ®wÃþ§O¤£¬Û®e (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "¹Á¸Õ¨Ï¥Î±²¶b±²°Ê¸ê®Æ¦C¶W¹L²Ä¤@µ§¸ê®Æ."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¤£¤ä´© Dynasets."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "¶·­nODBC¼h¦¸2¶¶À³ÅX°Êµ{¦¡(Level 2 compliant driver)."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ODBCÅX°Êµ{¦¡¤£¤ä´©©w¦ì­×§ï(Positioned updates)."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "¤£¤ä´©½Ð¨DÂê©w¼ÒºA(Requested lock mode)."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "¸ê®ÆºI¨ú."
+ AFX_IDP_SQL_ROW_FETCH
+ "¿ù»~¦^´_¸ê®Æ¿ý."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "¤@­Ó¥²¶·ªºODBC¶i¤JÂI¨S§ä¨ì. ½T©wODBC³Q¥¿½Tªº¦w¸Ë."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "­×§ï©Î§R°£¥¢±Ñ."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¨S¦³¤ä´©°ÊºA´å¼Ð."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "µLªk¶i¦æDAO/Jet¸ê®Æ®w¤ÞÀº(db engin)ªì©l¤Æ."
+ AFX_IDP_DAO_DFX_BIND
+ "ÃaªºDFX°Ñ¼Æ­È."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAOªºTableDefª«¥ó©ÎQueryDefª«¥ó¥¼¶}±Ò."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows¥¢±Ñ. ¨S¦³¨¬°÷°O¾ÐÅé°t¸mµ¹¸ê®Æ¦C."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows³sµ²¥¢±Ñ. ¤]³\¬O¦]¸ê®Æ«¬ºA¤£¦X©Ò­P."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows¥¢±Ñ. ©Ò­n¨Dªº¸ê®ÆÄ椣¦b¸ê®Æ¶°(Recordset)¤¤."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxolecl.rc b/public/sdk/inc/mfc42/l.cht/afxolecl.rc
new file mode 100644
index 000000000..995480e98
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "µLªk¨ÏÀRºAOLEª«¥ó¦¨¬°²{¥Îª«¥ó."
+ AFX_IDP_FAILED_TO_CONNECT "³sµ²¥¢±Ñ.\n³sµ²¥i¯à³Q¯}Ãa."
+ AFX_IDP_SERVER_BUSY "µLªk³B²z«ü¥O, ¦øªA¾¹¦£¸L¤¤."
+ AFX_IDP_BAD_VERB "¦øªA¾¹§@·~°õ¦æ¥¢±Ñ."
+ AFX_IDP_FAILED_TO_LAUNCH "µLªk±Ò°Ê¦øªA¾¹À³¥Îµ{¦¡."
+ AFX_IDS_UPDATING_ITEMS "­×§ïOLEª«¥ó"
+ AFX_IDP_FAILED_TO_CONVERT "OLEª«¥óÂà´«¥¢±Ñ."
+ AFX_IDP_ASK_TO_DISCARD "·íÂ÷¶}µøµ¡®ÉµLªkÀx¦sOLEª«¥ó!\n©ñ±ó¹ï1%ªº©Ò¦³­×§ï?"
+ AFX_IDP_FAILED_TO_CREATE "²£¥Íª«¥ó¥¢±Ñ. ½T©wÀ³¥Îµ{¦¡¤wµn¿ý¦b¨t²Îµn¿ý¾¹¤¤(system registry)."
+
+ AFX_IDS_METAFILE_FORMAT "¹Ï¤ù(Metafile)\na ¹Ï¤ù"
+ AFX_IDS_DIB_FORMAT "³]³Æ¿W¥ßÂI°}¹Ï(Device Independent Bitmap)\na ³]³Æ¿W¥ßÂI°}¹Ï(device independent bitmap)"
+ AFX_IDS_BITMAP_FORMAT "ÂI°}¹Ï\na ÂI°}¹Ï"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\nµL¦r«¬©M¬q¸¨®æ¦¡ªº¤å¦r"
+ AFX_IDS_TEXT_FORMAT "¥¼®æ¦¡¤Æ¤å¦r\n¤å¦r¨S¦³¥ô¦ó®æ¦¡"
+
+ AFX_IDS_INVALID_CURRENCY "¤£¦Xªkªº³f¹ô­È(Currency)."
+ AFX_IDS_INVALID_DATETIME "¤£¦Xªkªº¤é´Á®É¶¡(DateTime)."
+ AFX_IDS_INVALID_DATETIMESPAN "¤£¦XªkªºDateTimeSpan."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxolesv.rc b/public/sdk/inc/mfc42/l.cht/afxolesv.rc
new file mode 100644
index 000000000..481249b10
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "¦b¶i¦æ«e­×§ï %1?"
+ AFX_IDP_FAILED_TO_UPDATE, "µLªk­×§ï«È¤á(client)."
+
+ AFX_IDP_FAILED_TO_REGISTER, "µn¿ý¥¢±Ñ. OLE¥\¯à¥i¯àµLªk¥¿±`¤u§@."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "­×§ï¨t²Îµn¿ý¾¹(system registry)¥¢±Ñ.\n½Ð¹Á¸Õ¨Ï¥ÎREGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Â÷¶}(&x) && ¸õ¦^¨ì%1"
+ AFX_IDS_UPDATE_MENU, "­×§ï(&U)%1"
+ AFX_IDS_SAVEFILECOPY, "¥t¦s½Æ»s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxprint.rc b/public/sdk/inc/mfc42/l.cht/afxprint.rc
new file mode 100644
index 000000000..87356548d
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"<µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ CTEXT "¦C¦L",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "¥¿¦b",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "¨ú®ø",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "¨ú®ø",IDCANCEL,46,45,40,15
+ CTEXT "«ö¤U Cmd-. ¨ú®ø.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "¤U¤@­¶(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "«e¤@­¶(&v)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "©Ôªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "©Ô»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "¤U¤@­¶(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "«e¤@­¶(&v)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "©Ôªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "©Ô»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "¤U¤@­Ó(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "«e¤@­Ó(&v)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "ªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "¦b %1" // for print output
+ AFX_IDS_ONEPAGE, "¤@­¶(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "¨â­¶(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "­¶ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "­¶ %u\n­¶ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "¦Lªí¾÷ÀÉ®×(*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "¦C¦L¨ìÀÉ®×" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "¨ì %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxres.rc b/public/sdk/inc/mfc42/l.cht/afxres.rc
new file mode 100644
index 000000000..a03837b43
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "¶}±ÒÂÂÀÉ"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "¥t¦s·sÀÉ"
+ AFX_IDS_ALLFILTER, "©Ò¦³¤å¥ó (*.*)"
+ AFX_IDS_UNTITLED, "¥¼©R¦W¼ÐÃD"
+#else
+ AFX_IDS_SAVEFILE, "¥t¦s¤å¥ó:"
+ AFX_IDS_ALLFILTER, "©Ò¦³¤å¥ó"
+ AFX_IDS_UNTITLED, "¥¼©R¦W¼ÐÃD"
+ AFX_IDS_ABOUT, "Ãö©ó %1\205"
+#endif
+ AFX_IDS_HIDE, "ÁôÂÃ(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "°O¾ÐÅ餣¨¬."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"¸Õ¹Ï°õ¦æ¥¼¤ä´©ªº§@·~."
+ AFX_IDS_RESOURCE_EXCEPTION, "¦³¤@¶µ¥²­nªº¸ê·½µLªk¨Ï¥Î."
+ AFX_IDS_USER_EXCEPTION, "²£¥Í¤@¥¼ª¾ªº¿ù»~."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "¤£¦Xªk¤§ÀɮצWºÙ."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "¶}±Ò¤å¥ó¥¢±Ñ."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Àx¦s¤å¥ó¥¢±Ñ."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Àx¦s­×§ï¨ì %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Àx¦s­×§ï¨ì %1 ¤å¥ó \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "²£¥ÍªÅ¥Õ¤å¥ó¥¢±Ñ."
+ AFX_IDP_FILE_TOO_LARGE, "ÀɮפӤjµLªk¶}±Ò."
+ AFX_IDP_FAILED_TO_START_PRINT, "¦C¦L¤u§@µLªk±Ò©l."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "»¡©ú¶}±Ò¥¢±Ñ."
+ AFX_IDP_INTERNAL_FAILURE, "¤º³¡À³¥Îµ{¦¡¿ù»~."
+ AFX_IDP_COMMAND_FAILURE, "©R¥O¥¢±Ñ."
+ AFX_IDP_FAILED_MEMORY_ALLOC "°O¾ÐÅ餣°÷µLªk°õ¦æ§@·~."
+ AFX_IDP_GET_NOT_SUPPORTED, "µLªkŪ¨ú°ß¼gÄÝ©Ê."
+ AFX_IDP_SET_NOT_SUPPORTED, "µLªk¼g¤J°ßŪÄÝ©Ê."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Àɮ׮榡¿ù»~."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n¨S¦³§ä¨ì³o­ÓÀÉ®×.\n½Ð½T»{¥¿½Tªº¸ô®|©MÀɮצWºÙ."
+ AFX_IDP_FAILED_DISK_FULL "¥Ø¼ÐºÏºÐ¾÷ªÅ¶¡¤wº¡."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "µLªk§ä¨ìÀÉ®× \042%1.\042 ½Ð½T»{¥¿½TªºÀɮצWºÙ."
+ AFX_IDP_FAILED_DISK_FULL "¥Ø¼ÐºÏºÐ¾÷ªÅ¶¡¤wº¡."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "µLªkŪ¨ú %1, ¥¦¤w¸g³Q¬Y¤H¶}±Ò."
+ AFX_IDP_FAILED_ACCESS_WRITE "µLªk¼g¤J %1, ¥¦¬O°ßŪÀɩγQ¬Y¤H¶}±Ò."
+ AFX_IDP_FAILED_IO_ERROR_READ "·íŪ¨ú 1% ®É²£¥Í«D¹w´Á¿ù»~."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "·í¼g¤J 1% ²£¥Í«D¹w´Á¿ù»~."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "½Ð¿é¤J¤@¾ã¼Æ."
+ AFX_IDP_PARSE_REAL, "½Ð¿é¤J¤@¼Æ­È."
+ AFX_IDP_PARSE_INT_RANGE, "½Ð¿é¤J¤@­Ó¦b 1% ¨ì 2% ¤§¶¡ªº¾ã¼Æ."
+ AFX_IDP_PARSE_REAL_RANGE, "½Ð¿é¤J¤@­Ó¦b 1% ¨ì 2% ¤§¶¡ªº¼Æ­È."
+ AFX_IDP_PARSE_STRING_SIZE, "½Ð¿é¤J¤Ö©ó %1­Ó¤å¦r."
+ AFX_IDP_PARSE_RADIO_BUTTON, "½Ð¿ï¾Ü¤@«ö¶s."
+ AFX_IDP_PARSE_BYTE, "½Ð¿é¤J¤@­Ó¦b 0 ¨ì 225 ¤§¶¡ªº¾ã¼Æ."
+ AFX_IDP_PARSE_UINT, "½Ð¿é¤J¤@¥¿¾ã¼Æ."
+ AFX_IDP_PARSE_DATETIME, "½Ð¿é¤J¤@¤é´Á ©M/©Î ®É¶¡."
+ AFX_IDP_PARSE_CURRENCY, "½Ð¿é¤J¤@³f¹ô­È."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "³sµ² %s"
+ AFX_IDS_UNKNOWNTYPE "¥¼ª¾«¬ºA"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nµLªkµn¿ý¤å¥ó.\n³o­Ó¤å¥ó¤w³Q¶}±Ò."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "µLªkµn¿ý¤å¥ó \042%1.\042 T³o­Ó¤å¥ó¤w³Q¶}±Ò."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "µL¥i¥Îªº¿ù»~°T®§."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "µL¿ù»~²£¥Í."
+ AFX_IDP_FILE_GENERIC "·í¦s¨ú %1 ®Éµo¥Í¤£¥iª¾ªº¿ù»~."
+ AFX_IDP_FILE_NOT_FOUND "¨S¦³§ä¨ì %1 ."
+ AFX_IDP_FILE_BAD_PATH "%1 ¥]§t«D¦Xªk¸ô®|."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 µLªk¶}±Ò,¦]¬°¤w¶}±Ò¤Ó¦hÀÉ®×."
+ AFX_IDP_FILE_ACCESS_DENIED "¦s¨ú %1 ¾D¨ü©Úµ´."
+ AFX_IDP_FILE_INVALID_FILE "¤@¤£¦XªkÀÉ®×¥N½X»P %1 ¦³ÃöÁp."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1 µLªk³Q²¾°£¦]¬°¥¦¬O¨Ï¥Î¤¤¥Ø¿ý."
+ AFX_IDP_FILE_DIR_FULL "%1 µLªk²£¥Í¦]¬°¥Ø¿ýªÅ¶¡¤wº¡."
+ AFX_IDP_FILE_BAD_SEEK " 1% ·j´M¥¢±Ñ"
+ AFX_IDP_FILE_HARD_IO "·í¦s¨ú 1% ®É²£¥ÍµwÅé¿é¥X¤J¿ù»~."
+ AFX_IDP_FILE_SHARING "·í¦s¨ú 1% ®Éµo¥Í¤À¨É¹H¤Ï(Sharing Violation)."
+ AFX_IDP_FILE_LOCKING "·í¦s¨ú 1% ®É¦³²£¥ÍÂê©w¹H¤Ï(Locking Violation)."
+ AFX_IDP_FILE_DISKFULL "·í¦s¨ú 1% ®ÉºÏºÐªÅ¶¡¤wº¡."
+ AFX_IDP_FILE_EOF "¸Õ¹Ï¦s¨ú¶W¹L %1 ¤§ÀɧÀ."
+ AFX_IDS_UNNAMED_FILE "¥¼©R¦WÀÉ®×"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "µL¿ù»~²£¥Í."
+ AFX_IDP_ARCH_GENERIC "·í¦s¨ú %1 ®Éµo¥Í¤£¥iª¾ªº¿ù»~."
+ AFX_IDP_ARCH_READONLY "¸Õ¹Ï¼g¤J¥¿¦bŪ¨ú¤¤ªº %1."
+ AFX_IDP_ARCH_ENDOFFILE "¸Õ¹Ï¦s¨ú¶W¹L %1 ¤§ÀɧÀ."
+ AFX_IDP_ARCH_WRITEONLY "¸Õ¹ÏŪ¨ú¥¿¦b¼g¤J¤¤ªº %1."
+ AFX_IDP_ARCH_BADINDEX "%1 ¦³¤@Ãaªº®æ¦¡."
+ AFX_IDP_ARCH_BADCLASS "%1 ¥]§t¤@«D´Á±æª«¥ó."
+ AFX_IDP_ARCH_BADSCHEMA "%1 ¥]§t¤@¤£¥¿½TªºÆ[ÂI."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "µLªk¸ü¤J¹q¤l¶l¥ó¤ä´©."
+ AFX_IDP_INVALID_MAPI_DLL "¹q¤l¶l¥ó¨t²Î¤§DLL¬OµL®Äªº."
+ AFX_IDP_FAILED_MAPI_SEND "¹q¤l¶l¥ó¶Ç°eµLªk¶Ç°e°T®§."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "¹³¯À"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "¶}±Ò·sÀÉ"
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "¶}±Ò·sÀÉ(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "½T©w",IDOK,137,6,40,14
+ PUSHBUTTON "¨ú®ø",IDCANCEL,137,23,40,14
+ PUSHBUTTON "»¡©ú(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.deu/afxctl.rc b/public/sdk/inc/mfc42/l.deu/afxctl.rc
new file mode 100644
index 000000000..fd262ed33
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Schriftart:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Schriftst&il:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Größe:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effekte",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Durchgestrichen",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Unterstrichen",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Beispiel",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System&farbe:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Durchsuchen...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Löschen",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Vorschau:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unbekannt)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Anwendungsarbeitsbereich"
+ AFX_IDS_COLOR_WNDBACKGND "Fensterhintergrund"
+ AFX_IDS_COLOR_WNDTEXT "Fenstertext"
+ AFX_IDS_COLOR_MENUBAR "Menüleiste"
+ AFX_IDS_COLOR_MENUTEXT "Menütext"
+ AFX_IDS_COLOR_ACTIVEBAR "Aktive Titelleiste"
+ AFX_IDS_COLOR_INACTIVEBAR "Inaktive Titelleiste"
+ AFX_IDS_COLOR_ACTIVETEXT "Aktiver Titelleistentext"
+ AFX_IDS_COLOR_INACTIVETEXT "Inaktiver Titelleistentext"
+ AFX_IDS_COLOR_ACTIVEBORDER "Aktiver Rahmen"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inaktiver Rahmen"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Fensterrahmen"
+ AFX_IDS_COLOR_SCROLLBARS "Bildlaufleisten"
+ AFX_IDS_COLOR_BTNFACE "Schaltfläche"
+ AFX_IDS_COLOR_BTNSHADOW "Schaltflächenschatten"
+ AFX_IDS_COLOR_BTNTEXT "Schaltflächentext"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Schaltflächenhervorhebung"
+ AFX_IDS_COLOR_DISABLEDTEXT "Deaktivierter Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Markierung"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Markierter Text"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Fett"
+ AFX_IDS_ITALIC "Kursiv"
+ AFX_IDS_BOLDITALIC "Fett-kursiv"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Schriftart)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Farbe)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Bild - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unbekannt"
+ AFX_IDS_PICTYPE_NONE "Kein"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metadatei"
+ AFX_IDS_PICTYPE_ICON "Symbol"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Farbeigenschaften"
+ AFX_IDS_COLOR_PPG_CAPTION "Farben"
+ AFX_IDS_FONT_PPG "Schrifteigenschaften"
+ AFX_IDS_FONT_PPG_CAPTION "Schriftarten"
+ AFX_IDS_PICTURE_PPG "Bildeigenschaften"
+ AFX_IDS_PICTURE_PPG_CAPTION "Bilder"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Keiner"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fester einzelner"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Bearbeiten"
+ AFX_IDS_VERB_PROPERTIES "&Eigenschaften..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Bilddatei %1 konnte nicht geöffnet werden. Die Datei existiert möglicherweise nicht oder ist nicht lesbar."
+ AFX_IDP_PICTURECANTLOAD "Bilddatei %1 konnte nicht geladen werden. Die Datei hat möglicherweise ein ungültiges Format."
+ AFX_IDP_PICTURETOOLARGE "Bilddatei %1 konnte nicht geladen werden, da sie nicht in den Speicher paßt."
+ AFX_IDP_PICTUREREADFAILED
+ "Bilddatei %1 konnte nicht geladen werden, da ein unbekannter Lesefehler auftrat."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Bilder durchsuchen"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Ungültiger Funktionsaufruf"
+ AFX_IDP_E_OVERFLOW "Überlauf"
+ AFX_IDP_E_OUTOFMEMORY "Nicht genügend Speicher"
+ AFX_IDP_E_DIVISIONBYZERO "Division durch Null"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Nicht genügend Zeichenfolgenspeicher"
+ AFX_IDP_E_OUTOFSTACKSPACE "Nicht genügend Stack-Speicher"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Ungültiger Dateiname oder -nummer"
+ AFX_IDP_E_FILENOTFOUND "Datei nicht gefunden"
+ AFX_IDP_E_BADFILEMODE "Falscher Dateimodus"
+ AFX_IDP_E_FILEALREADYOPEN "Datei bereits geöffnet"
+ AFX_IDP_E_DEVICEIOERROR "Geräte-E/A-Fehler"
+ AFX_IDP_E_FILEALREADYEXISTS "Datei besteht bereits"
+ AFX_IDP_E_BADRECORDLENGTH "Ungültige Datensatzlänge"
+ AFX_IDP_E_DISKFULL "Datenträger voll"
+ AFX_IDP_E_BADRECORDNUMBER "Ungültige Datensatznummer"
+ AFX_IDP_E_BADFILENAME "Ungültiger Dateiname"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Zu viele Dateien"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Gerät nicht verfügbar"
+ AFX_IDP_E_PERMISSIONDENIED "Zugriff verweigert"
+ AFX_IDP_E_DISKNOTREADY "Laufwerk nicht bereit"
+ AFX_IDP_E_PATHFILEACCESSERROR "Pfad-/Dateizugriffsfehler"
+ AFX_IDP_E_PATHNOTFOUND "Pfad nicht gefunden"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Ungültige Musterzeichenfolge"
+ AFX_IDP_E_INVALIDUSEOFNULL "Ungültige Verwendung von Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Ungültiges Dateiformat"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Ungültiger Eigenschaftswert"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Ungültiger Feldindex"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gesetzt werden"
+ AFX_IDP_E_SETNOTSUPPORTED "Eigenschaft ist schreibgeschützt"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ein Feldindex muß angegeben sein, wenn ein Eigenschaftsfeld verwendet wird"
+ AFX_IDP_E_SETNOTPERMITTED "Eigenschaft kann für dieses Steuerelement nicht gesetzt werden"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gelesen werden"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Eigenschaft ist lesegeschützt"
+ AFX_IDP_E_PROPERTYNOTFOUND "Eigenschaft nicht gefunden"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Ungültiges Zwischenablageformat"
+ AFX_IDP_E_INVALIDPICTURE "Ungültiges Bild"
+ AFX_IDP_E_PRINTERERROR "Druckerfehler"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Zum Speichern notwendige temporäre Datei kann nicht erstellt werden"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Suchtext nicht gefunden"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Ersetzungstext zu lang"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxdb.rc b/public/sdk/inc/mfc42/l.deu/afxdb.rc
new file mode 100644
index 000000000..f3d555795
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Der Verbindungsversuch zur Datenquelle ist gescheitert."
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Datensatzgruppe unterstützt nur Vorwärtsbewegung."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Der Versuch, eine Tabelle zu öffnen, ist fehlgeschlagen, da am angegebenen Ort keine Spalten abgerufen werden konnten."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Von einer Abfrage wurden unerwartete Spaltendatentypen zurückgegeben."
+ AFX_IDP_SQL_ILLEGAL_MODE "Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Es wurden mehrere Zeilen aktualisiert."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation ist fehlgeschlagen; es gibt keinen aktuellen Datensatz."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Es waren keine Zeilen von der Aktualisierungs- oder Löschoperation betroffen."
+ AFX_IDP_SQL_RECORDSET_READONLY "Datensatzgruppe kann nur gelesen werden."
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Der ODBC-Treiber unterstützt das MFC-LongBinary-Datenmodell nicht."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Der Versuch, die benötigte Komponente ODBC32.DLL zu laden, ist fehlgeschlagen."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Der ODBC-Treiber unterstützt keine Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Statische ODBC-Cursor werden zur Unterstützung von Snapshots benötigt."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (API_CONFORMANCE >= SQL_OAC_LEVEL1 wird benötigt)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (SQL_CONFORMANCE >= SQL_OSC_MINIMUM wird benötigt)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Es wurde versucht, hinter das Ende oder vor den Anfang der Daten zu gelangen."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Treiber gemäß ODBC Level 2 wird benötigt."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positionierte Aktualisierungen werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Der angeforderte Sperrmodus wird nicht unterstützt."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Daten abgeschnitten."
+ AFX_IDP_SQL_ROW_FETCH
+ "Fehler beim Abruf eines Datensatzes."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Ein benötigter ODBC-Einsprungspunkt konnte nicht gefunden werden. Überprüfen Sie, ob OBDC korrekt installiert ist."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Fehler bei der Aktualisierungs- oder Löschoperation."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamische Cursor werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Initialisierung des DAO/Jet-Datenbankmoduls nicht möglich."
+ AFX_IDP_DAO_DFX_BIND
+ "Ungültiger DFX-Werteparameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO-TableDef oder DAO-QueryDef nicht offen."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Fehler bei GetRows-Operation. Für die Zeile ist nicht genügend Speicher reserviert."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows-Bindungsfehler. Nicht übereinstimmende Datentypen sind wahrscheinlich die Ursache."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Fehler bei GetRows-Operation. Die angeforderte Spalte ist kein Element der Datensatzgruppe."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxolecl.rc b/public/sdk/inc/mfc42/l.deu/afxolecl.rc
new file mode 100644
index 000000000..ad4df58c8
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Ein statisches OLE-Objekt kann nicht aktiviert werden."
+ AFX_IDP_FAILED_TO_CONNECT "Fehler beim Verbindungsversuch.\nDie Verbindung ist vielleicht unterbrochen."
+ AFX_IDP_SERVER_BUSY "Der Befehl kann nicht verarbeitet werden, weil der Server beschäftigt ist."
+ AFX_IDP_BAD_VERB "Fehler beim Ausführen der Server-Operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Die Server-Anwendung konnte nicht gestartet werden."
+ AFX_IDS_UPDATING_ITEMS "Aktualisiere OLE-Objekte."
+ AFX_IDP_FAILED_TO_CONVERT "Das OLE-Objekt konnte nicht umgewandelt werden."
+ AFX_IDP_ASK_TO_DISCARD "OLE-Objekte können nicht beim Beenden von Windows gespeichert werden!\nSollen alle Änderungen an %1 verworfen werden?"
+ AFX_IDP_FAILED_TO_CREATE "Fehler beim Erzeugen des Objekts. Stellen Sie sicher, daß das Objekt in der Systemregistrierung eingetragen ist."
+
+ AFX_IDS_METAFILE_FORMAT "Bild (Metadatei)\nein Bild"
+ AFX_IDS_DIB_FORMAT "Geräteunabhängiges Bitmap\nein geräteunabhängiges Bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\nein Bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\nText mit Schrift- und Absatzformatierung"
+ AFX_IDS_TEXT_FORMAT "Unformatierter Text\nText ohne Formatierung"
+
+ AFX_IDS_INVALID_CURRENCY "Ungültige Währung."
+ AFX_IDS_INVALID_DATETIME "Ungültiges Datum oder ungültige Zeit."
+ AFX_IDS_INVALID_DATETIMESPAN "Ungültige Datums- oder Zeitspanne."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxolesv.rc b/public/sdk/inc/mfc42/l.deu/afxolesv.rc
new file mode 100644
index 000000000..323fc96a1
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "%1 vor dem Fortfahren aktualisieren?"
+ AFX_IDP_FAILED_TO_UPDATE, "Client konnte nicht aktualisiert werden."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Fehler bei der Registrierung. Die OLE-Funktionen arbeiten eventuell nicht richtig."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Fehler bei der Aktualisierung der Systemregistrierung.\nVersuchen Sie REGEDIT zu benutzen."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Beenden und zu %1 zurückkehren"
+ AFX_IDS_UPDATE_MENU, "&Aktualisiere %1"
+ AFX_IDS_SAVEFILECOPY, "Kopie speichern unter"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxprint.rc b/public/sdk/inc/mfc42/l.deu/afxprint.rc
new file mode 100644
index 000000000..a3cc74f3f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Drucke",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "auf",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,45,40,15
+ CTEXT "Drücken Sie Cmd-., um abzubrechen.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Vorh.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Größer",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Kleiner",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "auf %1" // for print output
+ AFX_IDS_ONEPAGE, "&Eine Seite" // for preview button
+ AFX_IDS_TWOPAGE, "&Zwei Seiten" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Seite %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Seite %u\nSeiten %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Ausgabe.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Drucker-Dateien (*.prn)|*.prn|Alle Dateien (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "In Datei drucken" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "in %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxres.rc b/public/sdk/inc/mfc42/l.deu/afxres.rc
new file mode 100644
index 000000000..d01a25668
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Öffnen"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Speichern unter"
+ AFX_IDS_ALLFILTER, "Alle Dateien (*.*)"
+ AFX_IDS_UNTITLED, "Unbenannt"
+#else
+ AFX_IDS_SAVEFILE, "Dokument speichern unter:"
+ AFX_IDS_ALLFILTER, "Alle Dateien"
+ AFX_IDS_UNTITLED, "unbenannt"
+ AFX_IDS_ABOUT, "Info über %1\205"
+#endif
+ AFX_IDS_HIDE, "&Verbergen"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Nicht genügend Speicher."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Es wurde versucht, eine nicht unterstützte Operation auszuführen."
+ AFX_IDS_RESOURCE_EXCEPTION, "Eine benötigte Ressource ist nicht verfügbar."
+ AFX_IDS_USER_EXCEPTION, "Ein unerwarteter Fehler ist aufgetreten."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Ungültiger Dateiname."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Fehler beim Öffnen des Dokuments."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Fehler beim Speichern des Dokuments."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Änderungen in %1 speichern?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Änderungen im %1-Dokument \042%2\042 speichern?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Fehler beim Erzeugen eines leeren Dokuments."
+ AFX_IDP_FILE_TOO_LARGE, "Die Datei ist zu groß zum Öffnen."
+ AFX_IDP_FAILED_TO_START_PRINT, "Der Druckauftrag konnte nicht gestartet werden."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Die Hilfe konnte nicht aufgerufen werden."
+ AFX_IDP_INTERNAL_FAILURE, "Interner Anwendungsfehler."
+ AFX_IDP_COMMAND_FAILURE, "Befehl fehlgeschlagen."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Nicht genügend Speicher vorhanden, um Operation auszuführen."
+ AFX_IDP_GET_NOT_SUPPORTED, "Lesen ist wegen der Eigenschaft Nur-Schreiben nicht möglich."
+ AFX_IDP_SET_NOT_SUPPORTED, "Schreiben ist wegen der Eigenschaft Nur-Lesen nicht möglich."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Unerwartetes Dateiformat."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nDiese Datei konnte nicht gefunden werden.\nÜberprüfen Sie, ob der korrekte Pfad und Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziellaufwerk ist voll."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Die Datei \042%1\042 konnte nicht gefunden werden. Überprüfen Sie, ob der korrekte Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziel-Volume ist voll."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Lesen von %1 ist nicht möglich, da von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_ACCESS_WRITE "Schreiben auf %1 ist nicht möglich, da schreibgeschützt oder von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_IO_ERROR_READ "Beim Lesen von %1 ist ein unerwarteter Fehler aufgetreten."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Beim Schreiben von %1 ist ein unerwarteter Fehler aufgetreten."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Geben Sie bitte eine ganze Zahl ein."
+ AFX_IDP_PARSE_REAL, "Geben Sie bitte eine Zahl ein."
+ AFX_IDP_PARSE_INT_RANGE, "Geben Sie bitte eine ganze Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_REAL_RANGE, "Geben Sie bitte eine Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_STRING_SIZE, "Geben Sie bitte nicht mehr als %1 Zeichen ein."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Wählen Sie bitte eine Schaltfläche."
+ AFX_IDP_PARSE_BYTE, "Geben Sie bitte eine ganze Zahl zwischen 0 und 255 ein."
+ AFX_IDP_PARSE_UINT, "Geben Sie bitte eine positive ganze Zahl ein."
+ AFX_IDP_PARSE_DATETIME, "Geben Sie bitte ein Datum und/oder eine Zeit ein."
+ AFX_IDP_PARSE_CURRENCY, "Geben Sie bitte eine Währung ein."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Verknüpft: %s"
+ AFX_IDS_UNKNOWNTYPE "Unbekannter Typ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nRegistrierung des Dokuments nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Registrierung des Dokuments \042%1\042 nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Keine Fehlermeldung verfügbar."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_FILE_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_FILE_NOT_FOUND "%1 wurde nicht gefunden."
+ AFX_IDP_FILE_BAD_PATH "%1 enthält eine ungültige Pfadangabe."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 konnte nicht geöffnet werden, da zu viele Dateien geöffnet sind."
+ AFX_IDP_FILE_ACCESS_DENIED "Zugriff auf %1 wurde verwehrt."
+ AFX_IDP_FILE_INVALID_FILE "Eine ungültige Dateikennung war mit %1 verbunden."
+ AFX_IDP_FILE_REMOVE_CURRENT "Das Verzeichnis %1 konnte nicht entfernt werden, da es das aktuelle Verzeichnis ist. "
+ AFX_IDP_FILE_DIR_FULL "%1 konnte nicht erstellt werden, da das Verzeichnis voll ist."
+ AFX_IDP_FILE_BAD_SEEK "Positionierungsfehler auf %1."
+ AFX_IDP_FILE_HARD_IO "Ein Hardware-E/A-Fehler wurde während des Zugriffs auf %1 gemeldet."
+ AFX_IDP_FILE_SHARING "Eine Zugriffsverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_LOCKING "Eine Sperrverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_DISKFULL "Beim Zugriff auf %1 wurde ein voller Datenträger gemeldet."
+ AFX_IDP_FILE_EOF "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+ AFX_IDS_UNNAMED_FILE "eine unbenannte Datei"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_ARCH_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_ARCH_READONLY "%1 ist nur lesbar. Es wurde versucht, darauf zu schreiben."
+ AFX_IDP_ARCH_ENDOFFILE "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+ AFX_IDP_ARCH_WRITEONLY "%1 ist lesegeschützt. Es wurde versucht, davon zu lesen."
+ AFX_IDP_ARCH_BADINDEX "%1 besitzt ein falsches Format."
+ AFX_IDP_ARCH_BADCLASS "%1 enthielt ein unerwartetes Objekt."
+ AFX_IDP_ARCH_BADSCHEMA "%1 enthält ein falsches Schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Systemunterstützung für elektronische Post kann nicht geladen werden."
+ AFX_IDP_INVALID_MAPI_DLL "Die System-DLL für elektronische Post ist ungültig."
+ AFX_IDP_FAILED_MAPI_SEND "\042Nachricht senden\042 scheiterte beim Senden der Nachricht."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Neu"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Neu",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Abbrechen",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Hilfe",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.esp/afxctl.rc b/public/sdk/inc/mfc42/l.esp/afxctl.rc
new file mode 100644
index 000000000..2992e8e96
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ¡No se pueden cambiar recursos MFC estándar! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Fuente:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Estilo de &fuente:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tamaño:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Efectos",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ta&chado",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "S&ubrayado",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Ejemplo",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Color del sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Examinar...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Borrar",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Presentación preliminar:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Desconocido)"
+ AFX_IDS_COLOR_DESKTOP "Escritorio"
+ AFX_IDS_COLOR_APPWORKSPACE "Area de trabajo de la aplicación"
+ AFX_IDS_COLOR_WNDBACKGND "Fondo de la ventana"
+ AFX_IDS_COLOR_WNDTEXT "Texto de la ventana"
+ AFX_IDS_COLOR_MENUBAR "Barra del menú"
+ AFX_IDS_COLOR_MENUTEXT "Texto del menú"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Texto de barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVETEXT "Texto de barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Borde activo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Borde inactivo"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Marco de la ventana"
+ AFX_IDS_COLOR_SCROLLBARS "Barras de desplazamiento"
+ AFX_IDS_COLOR_BTNFACE "Aspecto del botón"
+ AFX_IDS_COLOR_BTNSHADOW "Sombra del botón"
+ AFX_IDS_COLOR_BTNTEXT "Texto del botón"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Resalte de botón"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texto deshabilitado"
+ AFX_IDS_COLOR_HIGHLIGHT "Resaltar"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texto resaltado"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Negrita"
+ AFX_IDS_ITALIC "Cursiva"
+ AFX_IDS_BOLDITALIC "Negrita cursiva"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Fuente)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Imagen - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Desconocido"
+ AFX_IDS_PICTYPE_NONE "Ninguno"
+ AFX_IDS_PICTYPE_BITMAP "Mapa de bits"
+ AFX_IDS_PICTYPE_METAFILE "Metaarchivo"
+ AFX_IDS_PICTYPE_ICON "Icono"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Página de propiedades de colores"
+ AFX_IDS_COLOR_PPG_CAPTION "Colores"
+ AFX_IDS_FONT_PPG "Página de propiedades de fuentes"
+ AFX_IDS_FONT_PPG_CAPTION "Fuentes"
+ AFX_IDS_PICTURE_PPG "Página de propiedades de imágenes"
+ AFX_IDS_PICTURE_PPG_CAPTION "Imágenes"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Ninguno"
+ AFX_IDS_BORDERSTYLE_1 "1 - Simple fijo "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Editar"
+ AFX_IDS_VERB_PROPERTIES "&Propiedades..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Imposible abrir el archivo de imágenes %1. Puede que el archivo no exista o no se pueda leer."
+ AFX_IDP_PICTURECANTLOAD "Imposible cargar el archivo de imágenes %1. Puede que el archivo tenga un formato no válido."
+ AFX_IDP_PICTURETOOLARGE "Imposible cargar el archivo de imágenes %1. El archivo es demasiado grande para caber en la memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Imposible cargar el archivo de imágenes %1. Error de lectura desconocido."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Examinar imágenes"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Llamada no válida a función"
+ AFX_IDP_E_OVERFLOW "Desbordamiento"
+ AFX_IDP_E_OUTOFMEMORY "No hay suficiente memoria"
+ AFX_IDP_E_DIVISIONBYZERO "División por cero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "No hay suficiente espacio para cadenas"
+ AFX_IDP_E_OUTOFSTACKSPACE "No hay suficiente espacio de pila"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nombre o número de archivo incorrecto"
+ AFX_IDP_E_FILENOTFOUND "No se ha encontrado el archivo"
+ AFX_IDP_E_BADFILEMODE "Modo de archivo incorrecto"
+ AFX_IDP_E_FILEALREADYOPEN "El archivo ya está abierto"
+ AFX_IDP_E_DEVICEIOERROR "Error de E/S de dispositivo"
+ AFX_IDP_E_FILEALREADYEXISTS "El archivo ya existe"
+ AFX_IDP_E_BADRECORDLENGTH "La longitud de registro es incorrecta"
+ AFX_IDP_E_DISKFULL "El disco está lleno"
+ AFX_IDP_E_BADRECORDNUMBER "El número de registro es incorrecto"
+ AFX_IDP_E_BADFILENAME "Nombre de archivo incorrecto"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Demasiados archivos"
+ AFX_IDP_E_DEVICEUNAVAILABLE "El dispositivo no está disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permiso denegado"
+ AFX_IDP_E_DISKNOTREADY "El disco no está listo"
+ AFX_IDP_E_PATHFILEACCESSERROR "Error de acceso a la ruta o el archivo"
+ AFX_IDP_E_PATHNOTFOUND "No se ha encontrado la ruta de acceso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "La cadena modelo no es válida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Uso no válido de Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato de archivo no válido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "El valor de la propiedad no es válido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Índice de matriz no válido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "No se puede establecer la propiedad en tiempo de ejecución"
+ AFX_IDP_E_SETNOTSUPPORTED "La propiedad es de sólo lectura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Se debe especificar el índice de matriz cuando se usa una matriz de propiedades"
+ AFX_IDP_E_SETNOTPERMITTED "No se puede establecer la propiedad en este control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "No se puede leer la propiedad en tiempo de ejecución"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La propiedad es de sólo escritura"
+ AFX_IDP_E_PROPERTYNOTFOUND "No se ha encontrado la propiedad"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "El formato del portapapeles no es válido"
+ AFX_IDP_E_INVALIDPICTURE "La imagen no es válida"
+ AFX_IDP_E_PRINTERERROR "Error de la impresora"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "No se puede crear el archivo temporal necesario para guardar"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "No se encontró el texto de búsqueda"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "El texto de reemplazo es demasiado largo"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxdb.rc b/public/sdk/inc/mfc42/l.esp/afxdb.rc
new file mode 100644
index 000000000..833c375eb
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Imposible conectarse al origen de datos"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset sólo admite movimiento hacia adelante."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Imposible abrir tabla, no hay columnas en la posición especificada."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Se obtuvieron tipos de datos inesperados de la consulta."
+ AFX_IDP_SQL_ILLEGAL_MODE "Imposible Actualizar o Eliminar."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Filas actualizadas."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "La operación ha fallado, no hay registro actual."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "La operación de actualización o de eliminación no afectó a ninguna fila."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset es de sólo lectura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "El controlador ODBC no admite el modelo de datos MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Imposible cargar ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Se requieren cursores estáticos ODBC para compatibilidad con snapshot."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Se intentó desplazarse más allá del fin o antes del inicio de los datos."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Se requiere un controlador ODBC que cumpla con el Nivel 2."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "El controlador ODBC no admite actualizaciones posicionadas."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "No se admite el modo de bloqueo solicitado."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Datos truncados."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error al recuperar registro."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "No se encontró un punto de entrada ODBC requerido. Compruebe que ODBC esté instalado correctamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Falló actualización o eliminación."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "El controlador ODBC no admite cursores dinámicos."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Imposible inicializar motor de base de datos DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Parámetro de valor DFX incorrecto."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef o QueryDef no está abierto."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Falló GetRows. No hay suficiente memoria asignada a la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Error de enlace de GetRows; es posible que algún tipo de datos no coincida."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Falló GetRows. La solicitud de columna no es miembro de este recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxolecl.rc b/public/sdk/inc/mfc42/l.esp/afxolecl.rc
new file mode 100644
index 000000000..78589cf24
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Imposible cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Imposible activar un objeto OLE estático."
+ AFX_IDP_FAILED_TO_CONNECT "Imposible conectar.\nVínculo puede estar roto."
+ AFX_IDP_SERVER_BUSY "Imposible procesar el comando, servidor ocupado."
+ AFX_IDP_BAD_VERB "Imposible efectuar operación del servidor."
+ AFX_IDP_FAILED_TO_LAUNCH "Imposible ejecutar la aplicación del servidor."
+ AFX_IDS_UPDATING_ITEMS "Actualizando objetos OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Imposible convertir objeto OLE."
+ AFX_IDP_ASK_TO_DISCARD "¡Imposible guardar objetos OLE al salir de Windows!\n¿Descartar todos los cambios a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Imagen (Metarchivo)\nuna imagen"
+ AFX_IDS_DIB_FORMAT "Mapa de bits independiente de dispositivos\nun mapa de bits independiente de dispositivos"
+ AFX_IDS_BITMAP_FORMAT "Mapa de bits\nun mapa de bits"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato de texto enriquecido (RTF)\ntexto con formato de fuentes y párrafos"
+ AFX_IDS_TEXT_FORMAT "Texto sin formato\ntexto sin ningún tipo de formato"
+
+ AFX_IDS_INVALID_CURRENCY "Moneda no válida."
+ AFX_IDS_INVALID_DATETIME "DateTime no válido."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan no válido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxolesv.rc b/public/sdk/inc/mfc42/l.esp/afxolesv.rc
new file mode 100644
index 000000000..cf80c0958
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "¿Actualizar %1 antes de continuar?"
+ AFX_IDP_FAILED_TO_UPDATE, "Imposible actualizar el cliente."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Imposible registrar. Puede que las funciones OLE no funcionen debidamente."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Imposible actualizar el registro del sistema.\nIntente con REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 en %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Salir y volvera %1"
+ AFX_IDS_UPDATE_MENU, "&Actualizar %1"
+ AFX_IDS_SAVEFILECOPY, "Guardar copia como"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxprint.rc b/public/sdk/inc/mfc42/l.esp/afxprint.rc
new file mode 100644
index 000000000..52d914857
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Imprimiendo",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "en la",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,45,40,15
+ CTEXT "Presione Cmd-. para cancelar.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Sig.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Ant.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "en %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una página" // for preview button
+ AFX_IDS_TWOPAGE, "&Dos páginas" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Página %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Página %u\nPáginas %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Archivos de impresora (*.prn)|*.prn|Todos los archivos (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprimir a archivo" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "a %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxres.rc b/public/sdk/inc/mfc42/l.esp/afxres.rc
new file mode 100644
index 000000000..613c833ed
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Abrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Guardar como"
+ AFX_IDS_ALLFILTER, "Todos los archivos (*.*)"
+ AFX_IDS_UNTITLED, "Sin título"
+#else
+ AFX_IDS_SAVEFILE, "Guardar documento como:"
+ AFX_IDS_ALLFILTER, "Todos los archivos"
+ AFX_IDS_UNTITLED, "sin título"
+ AFX_IDS_ABOUT, "Acerca de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Ocultar"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "No hay suficiente memoria."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Se intentó una operación no permitida."
+ AFX_IDS_RESOURCE_EXCEPTION, "Rcurso necesario no disponible."
+ AFX_IDS_USER_EXCEPTION, "Se encontr¢ un error desconocido."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nombre de archivo no válido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Imposible abrir documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Imposible guardar documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Imposible crear el documento vacío."
+ AFX_IDP_FILE_TOO_LARGE, "Archivo demasiado grande."
+ AFX_IDP_FAILED_TO_START_PRINT, "Imposible iniciar impresión."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Imposible ejecutar la ayuda."
+ AFX_IDP_INTERNAL_FAILURE, "Error interno de la aplicación."
+ AFX_IDP_COMMAND_FAILURE, "Falló el comando."
+ AFX_IDP_FAILED_MEMORY_ALLOC "No hay suficiente memoria para efectuar la operación."
+ AFX_IDP_GET_NOT_SUPPORTED, "Imposible leer una propiedad de sólo escritura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Imposible escribir en una propiedad de sólo lectura."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato de archivo no esperado."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImposible encontrar este archivo.\nCompruebe que la ruta y el nombre de archivo son correctos"
+ AFX_IDP_FAILED_DISK_FULL "La unidad de disco de destino está llena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Imposible encontrar el archivo \042%1.\042 Compruebe que el nombre de archivo es correcto."
+ AFX_IDP_FAILED_DISK_FULL "El disco de destino está lleno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Imposible leer de %1, alguien más lo ha abierto."
+ AFX_IDP_FAILED_ACCESS_WRITE "Imposible escribir en %1, es de sólo lectura o alguien más lo ha abierto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Error inesperado al leer %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Error inesperado al escribir en %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Introduzca un número entero."
+ AFX_IDP_PARSE_REAL, "Introduzca un número."
+ AFX_IDP_PARSE_INT_RANGE, "Introduzca un número entero entre %1 y %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Introduzca un número entre %1 y %2."
+ AFX_IDP_PARSE_STRING_SIZE, "No introduzca más de %1 caracteres."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Seleccione un botón."
+ AFX_IDP_PARSE_BYTE, "Introduzca un número entero entre 0 y 255."
+ AFX_IDP_PARSE_UINT, "Introduzca un número entero positivo."
+ AFX_IDP_PARSE_DATETIME, "Introduzca una fecha y/o una hora."
+ AFX_IDP_PARSE_CURRENCY, "Introduzca una moneda."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s vinculado"
+ AFX_IDS_UNKNOWNTYPE "Tipo desconocido"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImposible registrar el documento.\nPuede que el documento ya esté abierto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Imposible registrar el documento. \042%1.\042 Puede que el documento ya esté abierto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No hay ningún mensaje de error disponible."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "No ha ocurrido ningún error."
+ AFX_IDP_FILE_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_FILE_NOT_FOUND "No se encontró %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene una ruta no válida."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Imposible abrir %1, hay demasiados archivos abiertos."
+ AFX_IDP_FILE_ACCESS_DENIED "Acceso denegado a %1."
+ AFX_IDP_FILE_INVALID_FILE "Controlador no válido asociado a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Imposible eliminar %1 porque es el directorio actual."
+ AFX_IDP_FILE_DIR_FULL "Imposible crear %1 porque el directorio está lleno."
+ AFX_IDP_FILE_BAD_SEEK "Fin de búsqueda en %1 "
+ AFX_IDP_FILE_HARD_IO "Error de E/S de hardware al acceder a %1."
+ AFX_IDP_FILE_SHARING "Violación de acceso compartido al acceder a %1."
+ AFX_IDP_FILE_LOCKING "Violación de bloqueo al acceder %1. "
+ AFX_IDP_FILE_DISKFULL "Disco lleno al acceder a %1."
+ AFX_IDP_FILE_EOF "Se intentó acceder a %1 más allá del final."
+ AFX_IDS_UNNAMED_FILE "un archivo sin nombre"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "No ha ocurrido ningún error."
+ AFX_IDP_ARCH_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_ARCH_READONLY "Se intentó escribir en %1 mientras se lo estaba leyendo."
+ AFX_IDP_ARCH_ENDOFFILE "Se intentó acceder a %1 más allá del final."
+ AFX_IDP_ARCH_WRITEONLY "Se intentó leer de %1 mientras estaba escribiendo."
+ AFX_IDP_ARCH_BADINDEX "%1 tiene un formato incorrecto."
+ AFX_IDP_ARCH_BADCLASS "%1 contiene un objeto inesperado."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene un esquema incorrecto."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Imposible cargar el soporte del sistema de correo."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema de correo no es válida."
+ AFX_IDP_FAILED_MAPI_SEND "Enviar correo no envió el mensaje."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "píxeles"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuevo"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nuevo ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Aceptar",IDOK,137,6,40,14
+ PUSHBUTTON "Cancelar",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Ayuda",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.fra/afxctl.rc b/public/sdk/inc/mfc42/l.fra/afxctl.rc
new file mode 100644
index 000000000..8d7cc8996
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Po&lice:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&yle de police:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Taille:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effets",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Barré",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Souligné",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Exemple",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Couleur système:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "Pa&rcourir...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Effacer",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Aperçu:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Inconnu)"
+ AFX_IDS_COLOR_DESKTOP "Bureau"
+ AFX_IDS_COLOR_APPWORKSPACE "Espace de travail de l'application"
+ AFX_IDS_COLOR_WNDBACKGND "Arrière-plan de la fenêtre"
+ AFX_IDS_COLOR_WNDTEXT "Texte de la fenêtre"
+ AFX_IDS_COLOR_MENUBAR "Barre de menu"
+ AFX_IDS_COLOR_MENUTEXT "Texte de menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barre de titre active"
+ AFX_IDS_COLOR_INACTIVEBAR "Barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVETEXT "Texte de la barre de titre active"
+ AFX_IDS_COLOR_INACTIVETEXT "Texte de la barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordure active"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordure inactive"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Cadre de la fenêtre"
+ AFX_IDS_COLOR_SCROLLBARS "Barres de défilement"
+ AFX_IDS_COLOR_BTNFACE "Face du bouton"
+ AFX_IDS_COLOR_BTNSHADOW "Ombre du bouton"
+ AFX_IDS_COLOR_BTNTEXT "Texte du bouton"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Surbrillance du bouton"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texte désactivé"
+ AFX_IDS_COLOR_HIGHLIGHT "Surbrillance"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texte en surbrillance"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Gras"
+ AFX_IDS_ITALIC "Italique"
+ AFX_IDS_BOLDITALIC "Italique gras"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Police)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Couleur)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Image - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Inconnu"
+ AFX_IDS_PICTYPE_NONE "Aucun"
+ AFX_IDS_PICTYPE_BITMAP "Image en mode point"
+ AFX_IDS_PICTYPE_METAFILE "Métafichier"
+ AFX_IDS_PICTYPE_ICON "Icône"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Page de propriété de couleur"
+ AFX_IDS_COLOR_PPG_CAPTION "Couleurs"
+ AFX_IDS_FONT_PPG "Page de propriété de police"
+ AFX_IDS_FONT_PPG_CAPTION "Polices"
+ AFX_IDS_PICTURE_PPG "Page de propriété d'image"
+ AFX_IDS_PICTURE_PPG_CAPTION "Images"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Aucun"
+ AFX_IDS_BORDERSTYLE_1 "1 - Trait simple"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifier"
+ AFX_IDS_VERB_PROPERTIES "&Propriétés..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossible d'ouvrir le fichier image %1. Le fichier peut ne pas exister, ou peut ne pas être lisible."
+ AFX_IDP_PICTURECANTLOAD "Impossible de charger le fichier image %1. Le fichier peut avoir un format incorrect."
+ AFX_IDP_PICTURETOOLARGE "Impossible de charger le fichier image %1. Le fichier est trop grand pour tenir en mémoire."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossible de charger le fichier image %1. Echec à la lecture."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Parcourir les images"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Appel de fonction incorrect"
+ AFX_IDP_E_OVERFLOW "Dépassement de capacité"
+ AFX_IDP_E_OUTOFMEMORY "Mémoire épuisée"
+ AFX_IDP_E_DIVISIONBYZERO "Division par zéro"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Espace de chaîne insuffisant"
+ AFX_IDP_E_OUTOFSTACKSPACE "Espace pile insuffisant"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nom ou numéro de fichier incorrect"
+ AFX_IDP_E_FILENOTFOUND "Fichier introuvable"
+ AFX_IDP_E_BADFILEMODE "Mode d'accès au fichier incorrect"
+ AFX_IDP_E_FILEALREADYOPEN "Fichier déjà ouvert"
+ AFX_IDP_E_DEVICEIOERROR "Erreur d'entrée/sortie de périphérique"
+ AFX_IDP_E_FILEALREADYEXISTS "Ce fichier existe déjà"
+ AFX_IDP_E_BADRECORDLENGTH "Longueur d'enregistrement incorrecte"
+ AFX_IDP_E_DISKFULL "Disque plein"
+ AFX_IDP_E_BADRECORDNUMBER "Numéro d'enregistrement incorrect"
+ AFX_IDP_E_BADFILENAME "Nom de fichier incorrect"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Trop de fichiers"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Périphérique non disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permission refusée"
+ AFX_IDP_E_DISKNOTREADY "Disque non prêt"
+ AFX_IDP_E_PATHFILEACCESSERROR "Erreur dans le chemin d'accès"
+ AFX_IDP_E_PATHNOTFOUND "Chemin d'accès introuvable"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Chaîne de motif incorrecte"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilisation incorrecte de NULL"
+ AFX_IDP_E_INVALIDFILEFORMAT "Format de fichier incorrect"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valeur de propriété incorrecte"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Index de tableau incorrect"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être définie au moment de l'exécution"
+ AFX_IDP_E_SETNOTSUPPORTED "Propriété en lecture seule"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Vous devez spécifier un index de tableau lorsque vous utilisez un tableau de propriété"
+ AFX_IDP_E_SETNOTPERMITTED "Cette propriété ne peut pas être définie pour ce contrôle"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être lue au moment de l'exécution"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Propriété en écriture seule"
+ AFX_IDP_E_PROPERTYNOTFOUND "Propriété introuvable"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Format de Presse-papiers incorrect"
+ AFX_IDP_E_INVALIDPICTURE "Image incorrecte"
+ AFX_IDP_E_PRINTERERROR "Erreur d'imprimante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossible de créer le fichier temporaire nécessaire pour l'enregistrement"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Texte recherché introuvable"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Texte de remplacement trop long"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxdb.rc b/public/sdk/inc/mfc42/l.fra/afxdb.rc
new file mode 100644
index 000000000..ac937e9a5
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentative infructueuse de connexion à la source de données"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Le jeu d'enregistrements n'accepte que les déplacements vers l'avant."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentative infructueuse d'ouverture de table - colonnes à extraire introuvables à l'endroit spécifié."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La requête a renvoyé des types de données de colonnes inattendus."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentative infructueuse de Mise à jour ou de Suppression."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Plusieurs lignes ont été mises à jour."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "L'opération a échoué, pas d'enregistrement en cours"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Aucune ligne n'a été affectée par l'opération de mise à jour ou de suppression."
+ AFX_IDP_SQL_RECORDSET_READONLY "Le jeu d'enregistrements est en lecture seule"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Le pilote ODBC ne prend pas en charge le modèle de données LongBinary MFC."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentative infructueuse de chargement de l'élément ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Le gestionnaire ODBC ne prend pas en charge les feuilles de réponses dynamiques."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Curseurs ODBC statiques requis pour la prise en charge des instantanés."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (API_CONFORMANCE >= SQL_OAC_LEVEL1 requis)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (SQL_CONFORMANCE >= SQL_OSC_MINIMUM requis)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentative de défilement après la fin ou avant le début des données."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Feuilles de réponses dynamiques non prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Gestionnaire ODBC conforme Niveau 2 (Level 2) requis."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Les mises à jour programmées ne sont pas prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Le mode de verrouillage requis n'est pas accepté."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Données tronquées."
+ AFX_IDP_SQL_ROW_FETCH
+ "Erreur de récupération de l'enregistrement."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Un point d'entrée ODBC requis est introuvable. Vérifiez qu'ODBC est correctement installé."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Echec de la mise à jour ou de la suppression."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Curseurs dynamiques non pris en charge par le pilote ODBC."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Impossible d'initialiser le moteur de base de données DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Valeur du paramètre DFX incorrecte."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ou QueryDef non ouverts."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Echec de GetRows. Mémoire allouée insuffisante pour la ligne."
+ AFX_IDP_DAO_BADBINDINFO
+ "Erreur de liens GetRows. Ceci est probablement du à une mauvaise correspondance de types de données."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Echec de GetRows. La colonne demandée n'est pas un membre de ce jeu d'enregistrements."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxolecl.rc b/public/sdk/inc/mfc42/l.fra/afxolecl.rc
new file mode 100644
index 000000000..99d33dac0
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossible d'activer un objet OLE statique."
+ AFX_IDP_FAILED_TO_CONNECT "La connexion a échoué. \nLa liaison est peut être rompue."
+ AFX_IDP_SERVER_BUSY "Impossible d'exécuter la commande, le serveur est occupé."
+ AFX_IDP_BAD_VERB "Erreur lors de l'exécution de l'opération par l'application serveur."
+ AFX_IDP_FAILED_TO_LAUNCH "Erreur lors du démarrage d'une application serveur."
+ AFX_IDS_UPDATING_ITEMS "Mise à jour des objets OLE"
+ AFX_IDP_FAILED_TO_CONVERT "La conversion de l'objet OLE a échoué."
+ AFX_IDP_ASK_TO_DISCARD "Impossible d'enregistrer des objets OLE lorsque vous quittez Windows!\nSupprimer toutes les modifications apportées à %1?"
+ AFX_IDP_FAILED_TO_CREATE "Echec de création de l'objet. Vérifiez que l'application est entrée dans le registre du système."
+
+ AFX_IDS_METAFILE_FORMAT "Image (métafichier)\na image"
+ AFX_IDS_DIB_FORMAT "Image en mode point indépendante du périphérique\na image en mode point indépendante du périphérique"
+ AFX_IDS_BITMAP_FORMAT "Image en mode point\na image en mode point"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntexte avec du formatage de police et de paragraphe"
+ AFX_IDS_TEXT_FORMAT "Texte non formaté\ntexte sans aucun formatage"
+
+ AFX_IDS_INVALID_CURRENCY "Monnaie non valide."
+ AFX_IDS_INVALID_DATETIME "DateTime non valide."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan non valide."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxolesv.rc b/public/sdk/inc/mfc42/l.fra/afxolesv.rc
new file mode 100644
index 000000000..8d29df2b7
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Mettre à jour %1 avant de continuer?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossible de mettre à jour le client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "L'enregistrement a échoué. Il se peut que les fonctions OLE ne fonctionnent pas correctement."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "La mise à jour du registre du système a échoué. \nEssayez d'utiliser REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 dans %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Quitter et retourner à %1"
+ AFX_IDS_UPDATE_MENU, "Mise à jo&ur de %1"
+ AFX_IDS_SAVEFILECOPY, "Enregistrer la copie sous"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxprint.rc b/public/sdk/inc/mfc42/l.fra/afxprint.rc
new file mode 100644
index 000000000..d8572b05c
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Impression",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sur",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,45,40,15
+ CTEXT "Appuyer sur Cmd-. pour annuler l'impression.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivant",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Précédent",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Avant",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&rrière",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "sur %1" // for print output
+ AFX_IDS_ONEPAGE, "&Une page" // for preview button
+ AFX_IDS_TWOPAGE, "&Deux pages" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Fichiers imprimante (*.prn)|*.prn|Tous (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprime vers un fichier" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "vers %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxres.rc b/public/sdk/inc/mfc42/l.fra/afxres.rc
new file mode 100644
index 000000000..46400816b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Ouvrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Enregistrer sous"
+ AFX_IDS_ALLFILTER, "Tous les fichiers (*.*)"
+ AFX_IDS_UNTITLED, "sans nom"
+#else
+ AFX_IDS_SAVEFILE, "Enregistrer le document sous :"
+ AFX_IDS_ALLFILTER, "Tous les fichiers"
+ AFX_IDS_UNTITLED, "sans nom"
+ AFX_IDS_ABOUT, "A propos de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Masquer"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Mémoire insuffisante."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Une opération non prise en charge a été tentée."
+ AFX_IDS_RESOURCE_EXCEPTION, "Une ressource requise était non disponible."
+ AFX_IDS_USER_EXCEPTION, "Une erreur inconnue s'est produite."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nom de fichier non valide."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "L'ouverture du document a échoué."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "L'enregistrement du document a échoué."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées à %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées au document %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "La création d'un document vide a échoué."
+ AFX_IDP_FILE_TOO_LARGE, "Le fichier est trop volumineux pour être ouvert."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossible de lancer l'impression."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Le démarrage de l'aide a échoué."
+ AFX_IDP_INTERNAL_FAILURE, "Erreur d'application interne."
+ AFX_IDP_COMMAND_FAILURE, "La commande a échoué."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Mémoire insuffisante pour exécuter l'opération."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossible de lire une propriété en écriture seule."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossible d'écrire une propriété en lecture seule."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Format de fichier inattendu."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossible de trouver ce fichier. Vérifiez que le chemin et le nom du fichier sont corrects."
+ AFX_IDP_FAILED_DISK_FULL "Le lecteur de disque de destination est plein."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossible de trouver le fichier \042%1.\042. Vérifiez que le nom du fichier est correct."
+ AFX_IDP_FAILED_DISK_FULL "Le disque de destination est plein."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossible de lire à partir de %1, il est en cours d'utilisation."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossible d'écrire sur %1, il est en lecture seule ou en cours d'utilisation."
+ AFX_IDP_FAILED_IO_ERROR_READ "Une erreur inattendue s'est produite lors de la lecture de %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Une erreur inattendue s'est produite lors de l'écriture de %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Tapez un nombre entier."
+ AFX_IDP_PARSE_REAL, "Tapez un nombre."
+ AFX_IDP_PARSE_INT_RANGE, "Tapez un nombre entier compris entre %1 et %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Tapez un nombre compris entre %1 et %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Tapez %1 caractères au maximum."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Choisissez un bouton."
+ AFX_IDP_PARSE_BYTE, "Veuillez entrer un entier compris entre 0 et 255."
+ AFX_IDP_PARSE_UINT, "Veuillez entrer un entier positif."
+ AFX_IDP_PARSE_DATETIME, "Veuillez entrer une date et/ou une heure."
+ AFX_IDP_PARSE_CURRENCY, "Veuillez entrer une monnaie."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s lié(e)"
+ AFX_IDS_UNKNOWNTYPE "Type inconnu"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossible d'enregistrer le document. \nLe document est peut-être déjà ouvert."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossible d'enregistrer le document \042%1.\042. Le document est peut-être déjà ouvert."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Aucun message d'erreur n'est disponible."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_FILE_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_NOT_FOUND "Impossible de trouver %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contient un chemin non valide."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Impossible d'ouvrir %1 car il y a trop de fichiers ouverts."
+ AFX_IDP_FILE_ACCESS_DENIED "L'accès à %1 a été refusé."
+ AFX_IDP_FILE_INVALID_FILE "Un descripteur de fichier non valide a été associé à %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossible d'enlever %1 car c'est le répertoire courant."
+ AFX_IDP_FILE_DIR_FULL "Impossible de créer %1 car le répertoire est plein."
+ AFX_IDP_FILE_BAD_SEEK "Echec de la recherche sur %1"
+ AFX_IDP_FILE_HARD_IO "Une erreur d'E/S matérielle a été reportée lors de l'accès à %1."
+ AFX_IDP_FILE_SHARING "Une violation de partage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_LOCKING "Une violation de verrouillage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_DISKFULL "Disque plein lors de l'accès à %1."
+ AFX_IDP_FILE_EOF "Tentative d'accès à %1 après sa fin."
+ AFX_IDS_UNNAMED_FILE "un fichier non nommé"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_ARCH_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_ARCH_READONLY "Tentative d'écriture de %1 ouvert pour la lecture."
+ AFX_IDP_ARCH_ENDOFFILE "Tentative d'accès à %1 après sa fin."
+ AFX_IDP_ARCH_WRITEONLY "Tentative de lecture de %1 ouvert pour l'écriture."
+ AFX_IDP_ARCH_BADINDEX "%1 a un mauvais format."
+ AFX_IDP_ARCH_BADCLASS "%1 contient un objet inattendu."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contient un schéma incorrect."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossible de charger la prise en charge du système de messagerie électronique."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL système de la messagerie n'est pas valide."
+ AFX_IDP_FAILED_MAPI_SEND "La messagerie électronique n'a pas pu envoyer le message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nouveau"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nouveau",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annuler",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Aide",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.ita/afxctl.rc b/public/sdk/inc/mfc42/l.ita/afxctl.rc
new file mode 100644
index 000000000..4d3dd63ef
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tipo di carattere:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&ile:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Dimensione:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effetti",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Bar&rato",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Sottolineato",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Esempio",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Colore di sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Sfoglia...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Cancella",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Anteprima:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Sconosciuto)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Area di lavoro dell'applicazione"
+ AFX_IDS_COLOR_WNDBACKGND "Sfondo della finestra"
+ AFX_IDS_COLOR_WNDTEXT "Testo della finestra"
+ AFX_IDS_COLOR_MENUBAR "Barra dei menu"
+ AFX_IDS_COLOR_MENUTEXT "Testo dei menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Testo della barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVETEXT "Testo della barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordo attivo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordo inattivo"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Cornice della finestra"
+ AFX_IDS_COLOR_SCROLLBARS "Barre di scorrimento"
+ AFX_IDS_COLOR_BTNFACE "Aspetto pulsante"
+ AFX_IDS_COLOR_BTNSHADOW "Ombreggiatura pulsante"
+ AFX_IDS_COLOR_BTNTEXT "Testo del pulsante"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Evidenziazione del pulsante"
+ AFX_IDS_COLOR_DISABLEDTEXT "Testo disattivato"
+ AFX_IDS_COLOR_HIGHLIGHT "Evidenziazione"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Testo evidenziato"
+ AFX_IDS_REGULAR "Normale"
+ AFX_IDS_BOLD "Grassetto"
+ AFX_IDS_ITALIC "Corsivo"
+ AFX_IDS_BOLDITALIC "Grassetto corsivo"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Tipo di carattere)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Colore)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Immagine - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Sconosciuto"
+ AFX_IDS_PICTYPE_NONE "Nessuno"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icona"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Scheda delle proprietà del colore"
+ AFX_IDS_COLOR_PPG_CAPTION "Colori"
+ AFX_IDS_FONT_PPG "Scheda delle proprietà dei caratteri"
+ AFX_IDS_FONT_PPG_CAPTION "Caratteri"
+ AFX_IDS_PICTURE_PPG "Scheda delle proprietà delle immagini"
+ AFX_IDS_PICTURE_PPG_CAPTION "Immagini"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifica"
+ AFX_IDS_VERB_PROPERTIES "&Proprietà..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossibile aprire il file immagine %1. Il file non esiste o è illeggibile."
+ AFX_IDP_PICTURECANTLOAD "Impossibile caricare il file immagine %1. È possibile che il formato del file non sia valido."
+ AFX_IDP_PICTURETOOLARGE "Impossibile caricare l'immagine %1. Il file è troppo grande per essere contenuto in memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossibile caricare l'immagine %1. Errore di lettura non definito. "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Sfoglia immagini"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Chiamata di funzione non valida"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Memoria esaurita"
+ AFX_IDP_E_DIVISIONBYZERO "Divisione per zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Spazio della stringa esaurito"
+ AFX_IDP_E_OUTOFSTACKSPACE "Spazio dello stack esaurito"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nome o numero di file non valido"
+ AFX_IDP_E_FILENOTFOUND "Impossibile trovare il file"
+ AFX_IDP_E_BADFILEMODE "Modalità file non valida"
+ AFX_IDP_E_FILEALREADYOPEN "File già aperto"
+ AFX_IDP_E_DEVICEIOERROR "Errore di I/O sulla periferica"
+ AFX_IDP_E_FILEALREADYEXISTS "File già esistente"
+ AFX_IDP_E_BADRECORDLENGTH "Lunghezza record non valida"
+ AFX_IDP_E_DISKFULL "Disco pieno"
+ AFX_IDP_E_BADRECORDNUMBER "Numero record non valido"
+ AFX_IDP_E_BADFILENAME "Nome file non valido"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Troppi file"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Periferica non disponibile"
+ AFX_IDP_E_PERMISSIONDENIED "Permesso negato"
+ AFX_IDP_E_DISKNOTREADY "Disco non pronto"
+ AFX_IDP_E_PATHFILEACCESSERROR "Errore di accesso al percorso o al file"
+ AFX_IDP_E_PATHNOTFOUND "Impossibile trovare il percorso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Stringa di ricerca non valida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilizzo di Null non valido"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato file non valido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valore della proprietà non valido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Indice della matrice non valido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Impossibile impostare la proprietà in fase di esecuzione"
+ AFX_IDP_E_SETNOTSUPPORTED "La proprietà è di sola lettura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "È necessario specificare un indice di matrice quando si utilizza una matrice di proprietà"
+ AFX_IDP_E_SETNOTPERMITTED "Impossibile impostare la proprietà per questo controllo"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Impossibile leggere la proprietà in fase di esecuzione"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La proprietà è di sola scrittura"
+ AFX_IDP_E_PROPERTYNOTFOUND "Impossibile trovare la proprietà"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Formato Appunti non valido"
+ AFX_IDP_E_INVALIDPICTURE "Immagine non valida"
+ AFX_IDP_E_PRINTERERROR "Errore della stampante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossibile creare un file temporaneo necessario per il salvataggio"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Testo della ricerca non trovato"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Testo sostitutivo troppo lungo"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxdb.rc b/public/sdk/inc/mfc42/l.ita/afxdb.rc
new file mode 100644
index 000000000..c0689bbed
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentativo di connessione alla fonte dati esterna non riuscito"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Il set di record supporta solo il movimento in avanti."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentativo di aprire una tabella non riuscito. Non c'erano colonne da recuperare dove specificato. "
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La ricerca ha fornito tipi di dati inattesi per le colonne."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentativo di aggiornamento o di cancellazione non riuscito."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Sono state aggiornate righe multiple."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operazione non riuscita, nessun record corrente."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Nessuna riga è stata influenzata dall'operazione di aggiornamento o di cancellazione."
+ AFX_IDP_SQL_RECORDSET_READONLY "Il set di record è di sola lettura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Il driver ODBC non supporta il modello dati MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentativo di caricare la componente richiesta ODBC32.DLL non riuscito."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Puntatori statici ODBC richiesti per il supporto dell'anteprima."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare API_CONFORMANCE >= SQL_OAC_LEVEL1)"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare SQL_CONFORMANCE >= SQL_OSC_MINIMUM)"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentativo di scorrere i dati oltre la fine o prima dell'inizio."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "È richiesto un driver conforme al livello 2 di ODBC."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Il driver ODBC non supporta gli aggiornamenti dipendenti dalla posizione."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "La modalità blocco richiesta non è supportata."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Dati troncati."
+ AFX_IDP_SQL_ROW_FETCH
+ "Errore nel recupero di record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Non è stato trovato un punto di ingresso ODBC richiesto. Assicurarsi che ODBC sia installato correttamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Aggiornamento o cancellazione non riusciti."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Cursore dinamico non supportato dal driver ODBC."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Non è possibile inizializzare il motore del db DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Il valore del parametro DFX non è valido."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "Il DAO TableDef o QueryDef non sono aperti."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Errore GetRows. Memoria insufficiente per la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Errore GetRows di collegamento. Probabilmente causato da un tipo di dati non corrispondente."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Errore GetRows. La colonna richiesta non fa parte di questo set di record."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxolecl.rc b/public/sdk/inc/mfc42/l.ita/afxolecl.rc
new file mode 100644
index 000000000..3ed4cf990
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossibile attivare un oggetto statico OLE."
+ AFX_IDP_FAILED_TO_CONNECT "Connessione non riuscita.\nIl collegamento potrebbe essere interrotto."
+ AFX_IDP_SERVER_BUSY "Impossibile elaborare il comando, il server è impegnato."
+ AFX_IDP_BAD_VERB "Impossibile eseguire l'operazione sul server."
+ AFX_IDP_FAILED_TO_LAUNCH "Impossibile avviare l'applicazione sul server."
+ AFX_IDS_UPDATING_ITEMS "Aggiornamento di oggetti OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Impossibile convertire l'oggetto OLE."
+ AFX_IDP_ASK_TO_DISCARD "Non è possibile salvare gli oggetti OLE durante l'uscita da Windows.\nScartare tutte le modifiche a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Errore nel creare l'oggetto. Assicurarsi che l'applicazione sia inclusa nel registro del sistema."
+
+ AFX_IDS_METAFILE_FORMAT "Illustrazione (Metafile)\na illustrazione "
+ AFX_IDS_DIB_FORMAT "Device Indipendent Bitmap\na bitmap indipendente dalla periferica"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato RTF\ntesto con formattazione di carattere e di paragrafo"
+ AFX_IDS_TEXT_FORMAT "Testo non formattato\ntesto senza alcuna formattazione"
+
+ AFX_IDS_INVALID_CURRENCY "Formato valuta non valido."
+ AFX_IDS_INVALID_DATETIME "Formato data/ora non valido."
+ AFX_IDS_INVALID_DATETIMESPAN "Periodo di tempo non valido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxolesv.rc b/public/sdk/inc/mfc42/l.ita/afxolesv.rc
new file mode 100644
index 000000000..975217b5f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Aggiornare %1 prima di procedere?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossibile aggiornare il client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Impossibile registrare. Le caratteristiche OLE potrebbero non funzionare in modo corretto."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Impossibile aggiornare il registro di sistema.\nProvare utilizzando REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Esci && ritorna a %1"
+ AFX_IDS_UPDATE_MENU, "&Aggiorna %1"
+ AFX_IDS_SAVEFILECOPY, "Salva copia con nome"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxprint.rc b/public/sdk/inc/mfc42/l.ita/afxprint.rc
new file mode 100644
index 000000000..9c5ff8173
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Stampa in corso",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sul",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,45,40,15
+ CTEXT "Premere Cmd-. per annullare.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Succes.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "P&reced.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Ingresso",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Uscita",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "su %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una pagina" // for preview button
+ AFX_IDS_TWOPAGE, "&Due pagine" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Pagina %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Pagina %u\nPagine %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "File della stampante (*.prn)|*.prn|Tutti i file (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Stampa su file" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "su %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxres.rc b/public/sdk/inc/mfc42/l.ita/afxres.rc
new file mode 100644
index 000000000..58ab45d2a
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse MFC standard >\0 "
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Apri"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Salva con nome"
+ AFX_IDS_ALLFILTER, "Tutti i file (*.*)"
+ AFX_IDS_UNTITLED, "Senza titolo"
+#else
+ AFX_IDS_SAVEFILE, "Salva documento con nome:"
+ AFX_IDS_ALLFILTER, "Tutti i file"
+ AFX_IDS_UNTITLED, "senza titolo"
+ AFX_IDS_ABOUT, "Informazioni su %1\205"
+#endif
+ AFX_IDS_HIDE, "&Nascondi"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Memoria insufficiente."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"È stata tentata un'operazione non supportata."
+ AFX_IDS_RESOURCE_EXCEPTION, "Una risorsa richiesta non era disponibile."
+ AFX_IDS_USER_EXCEPTION, "Si Š verificato un errore sconosciuto."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nome file non valido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Impossibile aprire il documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Impossibile salvare il documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Impossibile creare un documento vuoto."
+ AFX_IDP_FILE_TOO_LARGE, "Il file è troppo grande per essere aperto."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossibile avviare il lavoro di stampa."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Impossibile avviare la Guida."
+ AFX_IDP_INTERNAL_FAILURE, "Errore interno dell'applicazione."
+ AFX_IDP_COMMAND_FAILURE, "Comando non riuscito."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Memoria insufficiente per eseguire l'operazione."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossibile leggere la proprietà in sola scrittura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossibile scrivere la proprietà in sola lettura."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato file inatteso."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossibile trovare questo file.\nVerificare che siano stati forniti il percorso e il nome del file corretti."
+ AFX_IDP_FAILED_DISK_FULL "L'unità disco di destinazione è piena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossibile trovare il file \042%1.\042. Verificare che il nome del file sia corretto."
+ AFX_IDP_FAILED_DISK_FULL "Il disco di destinazione è pieno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossibile leggere da %1, è già aperto da un altro utente."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossibile scrivere su %1, è di sola lettura o già aperto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Errore inatteso durante la lettura di %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Errore inatteso durante la scrittura di %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Digitare un numero intero."
+ AFX_IDP_PARSE_REAL, "Digitare un numero."
+ AFX_IDP_PARSE_INT_RANGE, "Digitare un numero intero compreso tra %1 e %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Digitare un numero compreso tra %1 e %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Non digitare più di %1 caratteri."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Selezionare un pulsante."
+ AFX_IDP_PARSE_BYTE, "Digitare un intero compreso tra 0 e 255."
+ AFX_IDP_PARSE_UINT, "Digitare un numero intero positivo."
+ AFX_IDP_PARSE_DATETIME, "Digitare una data e/o un'ora."
+ AFX_IDP_PARSE_CURRENCY, "Digitare un tipo di valuta."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Collegato %s"
+ AFX_IDS_UNKNOWNTYPE "Tipo sconosciuto"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossibile registrare il documento.\nIl documento potrebbe essere già aperto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossibile registrare il documento \042%1.\042. Il documento potrebbe essere già aperto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Nessun messaggio di errore è disponibile."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Non si è verificato alcun errore."
+ AFX_IDP_FILE_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 non trovato."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene un percorso non valido."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Non è stato possibile aprire %1 poiché vi sono troppi file aperti."
+ AFX_IDP_FILE_ACCESS_DENIED "Accesso a %1 negato."
+ AFX_IDP_FILE_INVALID_FILE "Un gestore di file non valido è stato associato a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossibile rimuovere %1 poiché è la directory corrente."
+ AFX_IDP_FILE_DIR_FULL "Impossibile creare %1 poiché la directory è piena."
+ AFX_IDP_FILE_BAD_SEEK "Ricerca fallita su %1"
+ AFX_IDP_FILE_HARD_IO "Nell'accesso a %1 è stato registrato un errore hardware di I/O. "
+ AFX_IDP_FILE_SHARING "Durante l'accesso a %1 si è verificata una violazione di condivisione."
+ AFX_IDP_FILE_LOCKING "Durante l'accesso a %1 si è verificata una violazione di blocco."
+ AFX_IDP_FILE_DISKFULL "Disco pieno durante l'accesso a %1."
+ AFX_IDP_FILE_EOF "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+ AFX_IDS_UNNAMED_FILE "un file senza nome"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Non si è verificato alcun errore."
+ AFX_IDP_ARCH_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_ARCH_READONLY "Si è tentato di scrivere sulla lettura %1."
+ AFX_IDP_ARCH_ENDOFFILE "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+ AFX_IDP_ARCH_WRITEONLY "Si è tentato di leggere dalla scrittura di %1."
+ AFX_IDP_ARCH_BADINDEX "Formato di %1 non valido."
+ AFX_IDP_ARCH_BADCLASS "%1 conteneva un oggetto inatteso."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene uno schema errato."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossibile caricare il supporto di sistema per la posta elettronica."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema di posta elettronica non è valida."
+ AFX_IDP_FAILED_MAPI_SEND "Impossibile inviare un messaggio con il comando di invio."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuovo"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nuovo",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annulla",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&?",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.jpn/afxctl.rc b/public/sdk/inc/mfc42/l.jpn/afxctl.rc
new file mode 100644
index 000000000..083d5852f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Ì«ÝÄ–¼(&F):",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "½À²Ù(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "»²½Þ(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "•¶Žšü‚è",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Žæ‚èÁ‚µü(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "伟(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "»ÝÌßÙ",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¼½ÃÑ ¶×°(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ŽQÆ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "¸Ø±(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "ÌßÚËÞ­°:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "ÃÞ½¸Ä¯Ìß"
+ AFX_IDS_COLOR_APPWORKSPACE "ì‹Æ‚·‚é—̈æ"
+ AFX_IDS_COLOR_WNDBACKGND "³¨ÝÄÞ³‚Ì”wŒi"
+ AFX_IDS_COLOR_WNDTEXT "³¨ÝÄÞ³“à‚Ì•¶Žš"
+ AFX_IDS_COLOR_MENUBAR "ÒÆ­° ÊÞ°"
+ AFX_IDS_COLOR_MENUTEXT "ÒÆ­°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBAR "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_INACTIVEBAR "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_ACTIVETEXT "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_INACTIVETEXT "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBORDER "±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+ AFX_IDS_COLOR_INACTIVEBORDER "”ñ±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "³¨ÝÄÞ³‚̘g"
+ AFX_IDS_COLOR_SCROLLBARS "½¸Û°Ù ÊÞ°"
+ AFX_IDS_COLOR_BTNFACE "ÎÞÀÝ‚Ì•\–Ê"
+ AFX_IDS_COLOR_BTNSHADOW "ÎÞÀ݂̉e"
+ AFX_IDS_COLOR_BTNTEXT "ÎÞÀÝ‚Ì•¶Žš"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "”½“]•\Ž¦‚ÌÎÞÀÝ"
+ AFX_IDS_COLOR_DISABLEDTEXT "’WF•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_COLOR_HIGHLIGHT "”½“]•\Ž¦"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "”½“]•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_REGULAR "•W€"
+ AFX_IDS_BOLD "‘¾Žš"
+ AFX_IDS_ITALIC "ŽÎ‘Ì"
+ AFX_IDS_BOLDITALIC "‘¾ŽšŽÎ‘Ì"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Ì«ÝÄ)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(F)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Ë߸Á¬ - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "‚È‚µ"
+ AFX_IDS_PICTYPE_BITMAP "ËÞ¯ÄϯÌß"
+ AFX_IDS_PICTYPE_METAFILE "ÒÀ̧²Ù"
+ AFX_IDS_PICTYPE_ICON "±²ºÝ"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "¶×° ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_COLOR_PPG_CAPTION "¶×°"
+ AFX_IDS_FONT_PPG "Ì«ÝÄ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_FONT_PPG_CAPTION "Ì«ÝÄ"
+ AFX_IDS_PICTURE_PPG "Ë߸Á¬ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_PICTURE_PPG_CAPTION "Ë߸Á¬"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ‚È‚µ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ŒÅ’è(ŽÀü)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "•ÒW(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌßÛÊßè(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB̧²Ù‚ª‘¶Ý‚µ‚È‚¢‚©A“Ç‚Ýž‚ß‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURECANTLOAD "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²ÙŒ`Ž®‚ª³‚µ‚­‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURETOOLARGE "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²Ù‚ª‘å‚«‚·‚¬‚Ü‚·B"
+ AFX_IDP_PICTUREREADFAILED
+ "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB “Ç‚Ýž‚Ý‚Å´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Ë߸Á¬ ‚ÌŽQÆ"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "ŠÖ”ŒÄ‚Ño‚µ‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_OVERFLOW "µ°ÊÞ°ÌÛ°‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFMEMORY "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DIVISIONBYZERO "¾ÞÛ‚ÅœŽZ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFSTRINGSPACE "•¶Žš—ñ—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_OUTOFSTACKSPACE "½À¯¸—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADFILENAMEORNUMBER "̧²Ù–¼‚Ü‚½‚͔Ԇ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILENOTFOUND "̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_BADFILEMODE "̧²Ù Ó°ÄÞ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILEALREADYOPEN "̧²Ù‚ÍŠù‚ÉŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DEVICEIOERROR "ÃÞÊÞ²½ I/O ´×°‚Å‚·B"
+ AFX_IDP_E_FILEALREADYEXISTS "Šù‚É“¯–¼‚Ì̧²Ù‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDLENGTH "Úº°ÄÞ’·‚ªˆê’v‚µ‚Ü‚¹‚ñB"
+ AFX_IDP_E_DISKFULL "ÃÞ¨½¸‚Ì‹ó‚«—e—Ê‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDNUMBER "Úº°ÄÞ”Ô†‚ª•s³‚Å‚·B"
+ AFX_IDP_E_BADFILENAME "̧²Ù–¼‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "̧²Ù‚ª‘½‚·‚¬‚Ü‚·B"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÃÞÊÞ²½‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PERMISSIONDENIED "±¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_E_DISKNOTREADY "ÃÞ¨½¸‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PATHFILEACCESSERROR "Êß½–¼‚ª–³Œø‚Å‚·B"
+ AFX_IDP_E_PATHNOTFOUND "Êß½‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÊßÀ°Ý•¶Žš—ñ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDUSEOFNULL "null •¶Žš‚ÌŽg‚¢•û‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDFILEFORMAT "̧²ÙŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÌßÛÊßè‚Ì’l‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "”z—ñ‚Ì“Y‚¦Žš‚ª•s³‚Å‚·B"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚É‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚Í’l‚̎擾‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ÌßÛÊßè”z—ñ‚ɂͲÝÃÞ¯¸½‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_E_SETNOTPERMITTED "‚±‚̺ÝÄÛ°Ù‚ÌÌßÛÊßè‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚ɂ͎擾‚Å‚«‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚ÍÝ’è‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_PROPERTYNOTFOUND "ÌßÛÊß肪Œ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "¸Ø¯ÌßÎÞ°ÄÞ‚ÌÃÞ°ÀŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPICTURE "Ë߸Á¬‚ª•s³‚Å‚·B"
+ AFX_IDP_E_PRINTERERROR "ÌßØÝÀ‚Ì´×°‚Å‚·B"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "•Û‘¶‚É•K—v‚ÈÃÝÎß×Ø Ì§²Ù‚ð쬂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ŒŸõ•¶Žš—ñ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "’uŠ·•¶Žš—ñ‚ª’·‚·‚¬‚Ü‚·B"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxdb.rc b/public/sdk/inc/mfc42/l.jpn/afxdb.rc
new file mode 100644
index 000000000..b8e350c34
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÃÞ°À¿°½‚Ö‚ÌÚ‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Úº°ÄÞ¾¯Ä‚ł̈ړ®‚͇•ûŒü‚Ì‚Ý»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ŒŸõ‚·‚é—ñ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚½‚ßAðÌÞÙ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¸´Ø°‚Å—\Šú‚¹‚Ê—ñ‚ÌÃÞ°À À²Ìß‚ª•Ô‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ILLEGAL_MODE "XV‚Ü‚½‚Í휂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "•¡”‚Ìs‚ªXV‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "¶ÚÝÄ Úº°ÄÞ‚ª‚È‚¢‚½‚ßA‘€ì‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "XV‚Ü‚½‚Í휑€ì‚ÌŒ‹‰ÊA•ÏX‚ð‚¤‚¯‚½s‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_RECORDSET_READONLY "Úº°ÄÞ¾¯Ä‚Íã‘‚«‹ÖŽ~‚Å‚·B"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC ÄÞײÊÞ‚Í MFC LongBinary ÃÞ°À ÓÃÞÙ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "ODBC32.DLL ‚ÌÛ°ÄÞ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC ÄÞײÊÞ‚Í dynasets ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC ½À诸 ¶°¿Ù‚ɂͽůÌß¼®¯Ä‚Ì»Îß°Ä‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (API_CONFORMANCE >= SQL_OAC_LEVEL1 ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (SQL_CONFORMANCE >= SQL_OSC_MINIMUM ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÃÞ°À‚ÌI’[‚Ü‚½‚Í擪‚ð’´‚¦‚Ľ¸Û°Ù‚µ‚悤‚Æ‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets ‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 ‚É€‹’‚µ‚½ÄÞײÊÞ‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "“Á’è‚̈ʒu‚ÌXV‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "—v‹‚µ‚½Û¯¸ Ó°ÄÞ‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "ÃÞ°À‚ÍØ‚èŽÌ‚Ä‚ç‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ROW_FETCH
+ "Úº°ÄÞ‚ÌŒŸõ´×°B"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "—v‹‚µ‚½ ODBC ´ÝÄØ° Îß²ÝÄ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñBODBC ÄÞײÊÞ‚ª³‚µ‚­²Ý½Ä°Ù‚³‚ꂽ‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "XV–”‚Í휑€ì‚ÍŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "ÀÞ²ÅЯ¸ ¶°¿Ù‚Í ODBC ÄÞײÊÞ‚Å‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ´Ý¼ÞÝ‚ð‰Šú‰»‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_DFX_BIND
+ "DFX ‚ÌÊß×Ò°À’l‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ‚Ü‚½‚Í QueryDef ‚ªŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½Bs‚ÉŠ„‚è“–‚Ä‚é\•ª‚ÈÒÓØ‚ª‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ÊÞ²ÝÃÞ¨Ý¸Þ ´×°B datatype ‚ª‡‚Á‚Ä‚¢‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B —v‹‚³‚ꂽ—ñ‚Í‚±‚ÌÚº°ÄÞ¾¯Ä‚ÌÒÝÊÞ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxolecl.rc b/public/sdk/inc/mfc42/l.jpn/afxolecl.rc
new file mode 100644
index 000000000..893cc93f9
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Œx —\Šú‚µ‚È‚¢½À诸 µÌÞ¼Þª¸Ä‚Å‚·B"
+ AFX_IDP_FAILED_TO_CONNECT "Ú‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nØݸ‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_SERVER_BUSY "ºÏÝÄÞ‚ðŽÀs‚Å‚«‚Ü‚¹‚ñB»°ÊÞ°‚ªËÞ¼Þ°‚Å‚·B"
+ AFX_IDP_BAD_VERB "»°ÊÞ°‚Ì‘€ì‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH "»°ÊÞ° ±Ìßع°¼®Ý‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDS_UPDATING_ITEMS "OLE µÌÞ¼Þª¸Ä‚ðXV‚µ‚Ä‚¢‚Ü‚·"
+ AFX_IDP_FAILED_TO_CONVERT "OLE µÌÞ¼Þª¸Ä‚Ì•ÏŠ·‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ASK_TO_DISCARD "Windows ‚ÌI—¹Žž‚É OLE µÌÞ¼Þª¸Ä‚ð•Û‘¶‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB\n%1 ‚Ö‚Ì‚·‚ׂĂ̕ÏX‚ð”pŠü‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_CREATE "µÌÞ¼Þª¸Ä‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B¼½ÃÑ Ú¼Þ½Ä؂ɱÌßع°¼®Ý‚ª“o˜^‚³‚ê‚Ä‚¢‚é‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢"
+
+ AFX_IDS_METAFILE_FORMAT "Ë߸Á¬ (ÒÀ̧²Ù)\nË߸Á¬"
+ AFX_IDS_DIB_FORMAT "ÃÞÊÞ²½‚Ɉˑ¶‚µ‚È‚¢ËÞ¯ÄϯÌß\nÃÞÊÞ²½”ñˆË‘¶ËÞ¯ÄϯÌß"
+ AFX_IDS_BITMAP_FORMAT "ËÞ¯ÄϯÌß\nËÞ¯ÄϯÌß"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "‘Ž®•t‚«Ã·½Ä (RTF)\nدÁ ÷½Ä"
+ AFX_IDS_TEXT_FORMAT "‘Ž®‚È‚µÃ·½Ä\n÷½Ä"
+
+ AFX_IDS_INVALID_CURRENCY "–³Œø‚Ȓʉ݌^‚Å‚·B"
+ AFX_IDS_INVALID_DATETIME "–³Œø‚È“ú•t‚ÆŽžŠÔ‚Å‚·B"
+ AFX_IDS_INVALID_DATETIMESPAN "–³Œø‚ÈŠúŠÔ‚Å‚·B"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxolesv.rc b/public/sdk/inc/mfc42/l.jpn/afxolesv.rc
new file mode 100644
index 000000000..5ca7083bc
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "æ‚É %1 ‚ðXV‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_UPDATE, "¸×²±ÝÄ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+
+ AFX_IDP_FAILED_TO_REGISTER, "“o˜^‚ÉŽ¸”s‚µ‚Ü‚µ‚½BOLE ‚Ì‹@”\‚ͳí‚É“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¼½ÃÑ Ú¼Þ½ÄØ‚ÌXV‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nREGEDIT ‚ðŽg—p‚µ‚ÄXV‚µ‚Ä‚­‚¾‚³‚¢B"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 “à‚Ì %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "I—¹‚µ‚Ä %1 ‚É–ß‚é(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 ‚ðXV(&U)"
+ AFX_IDS_SAVEFILECOPY, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxprint.rc b/public/sdk/inc/mfc42/l.jpn/afxprint.rc
new file mode 100644
index 000000000..e1864d2ef
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "ˆóü’†",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "‚ð",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,45,40,15
+ CTEXT "<Cmd>-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·B",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸ(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "‘O(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1 ‚Öo—Í’†" // for print output
+ AFX_IDS_ONEPAGE, "1 Íß°¼Þ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "2 Íß°¼Þ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Íß°¼Þ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Íß°¼Þ %u\nÍß°¼Þ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÌßØÝÀ ̧²Ù (*.prn)|*.prn|‚·‚ׂĂÌ̧²Ù (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "̧²Ù‚Öo—Í" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ‚Ö" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxres.rc b/public/sdk/inc/mfc42/l.jpn/afxres.rc
new file mode 100644
index 000000000..b30d86d38
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "ŠJ‚­"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "ÄÞ·­ÒÝÄ‚É–¼‘O‚ð•t‚¯‚Ä•Û‘¶:"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "ÊÞ°¼Þ®Ýî•ñ %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"»Îß°Ä‚³‚ê‚Ä‚¢‚È‚¢‘€ì‚ðŽÀs‚µ‚Ü‚µ‚½B"
+ AFX_IDS_RESOURCE_EXCEPTION, "—v‹‚³‚ꂽؿ°½‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "–³Œø‚Ȩ̀²Ù–¼‚Å‚·B"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "ÄÞ·­ÒÝĂ̵°ÌßÝ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "ÄÞ·­ÒÝÄ‚Ì•Û‘¶‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "%1 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#else
+ AFX_IDP_ASK_TO_SAVE, "%1 ÄÞ·­ÒÝÄ \042%2\042 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "‹ó‚ÌÄÞ·­ÒÝÄ‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_TOO_LARGE, "̧²Ù‚ª‘å‚«‚·‚¬‚ÄŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_FAILED_TO_START_PRINT, "ˆóü‚ðŠJŽn‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "ÍÙÌß‚Ì‹N“®‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_INTERNAL_FAILURE, "±Ìßع°¼®Ý‚Ì“à•”´×°‚Å‚·B"
+ AFX_IDP_COMMAND_FAILURE, "ºÏÝÄÞ‚ÌŽÀs‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ŽÀs‚·‚邽‚ß‚ÌÒÓØ‚ª‘«‚è‚Ü‚¹‚ñB"
+ AFX_IDP_GET_NOT_SUPPORTED, "‘‚«ž‚Ýê—p‚ÌÌßÛÊßè‚©‚ç“Ç‚Ýo‚µ‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SET_NOT_SUPPORTED, "“Ç‚Ýo‚µê—p‚ÌÌßÛÊßè‚É‘‚«ž‚Ý‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "—\Šú‚µ‚È‚¢Ì§²ÙŒ`Ž®‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n‚±‚Ì̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢ÃÞ¨Ú¸ÄØ‚Æ̧²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸ ÄÞײÌÞ‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "̧²Ù \042%1.\042 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢Ì§²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1 ‚©‚ç“Ç‚Ýž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_ACCESS_WRITE "%1 ‚Ö‘‚«ž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_IO_ERROR_READ "%1 ‚Ì“Ç‚Ýž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1 ‚Ì‘‚«ž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL, "”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_INT_RANGE, "%1 ‚©‚ç %2 –˜‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL_RANGE, "%1 ‚©‚ç %2 –˜‚Ì”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_STRING_SIZE, "%1 •¶ŽšˆÈ“à‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÎÞÀÝ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_BYTE, "0 ‚©‚ç 255 ‚Ü‚Å‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_UINT, "³‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_DATETIME, "“ú•t/ŽžŠÔ‚È‚Ç‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_CURRENCY, "’ʉ݌^‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s ‚ðØݸ‚µ‚Ü‚µ‚½B"
+ AFX_IDS_UNKNOWNTYPE "•s–¾‚ÈŒ^‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÄÞ·­ÒÝÄ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÄÞ·­ÒÝÄ \042%1.\042 ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "´×° Ò¯¾°¼Þ‚Í‚ ‚è‚Ü‚¹‚ñB"
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_NOT_FOUND "%1 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_BAD_PATH "%1 ‚Í–³Œø‚ÈÊß½‚Å‚·B"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ŠJ‚¢‚Ä‚¢‚ȩ́²Ù‚ª‘½‚·‚¬‚邽‚ß %1 ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FILE_ACCESS_DENIED "%1 ‚ւ̱¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_INVALID_FILE "%1 ‚Ö–³Œø‚Ȩ̀²Ù ÊÝÄÞÙ‚ªŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FILE_REMOVE_CURRENT "¶ÚÝÄ ÃÞ¨Ú¸ÄØ %1 ‚Í휂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_DIR_FULL "%1 ‚ð쬂ł«‚Ü‚¹‚ñB‚»‚ÌÃÞ¨Ú¸ÄØ‚Í‚¢‚Á‚Ï‚¢‚Å‚·B "
+ AFX_IDP_FILE_BAD_SEEK "%1 ‚̼°¸‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
+ AFX_IDP_FILE_HARD_IO "%1 ‚ւ̱¸¾½’†‚ÉÊ°ÄÞ³ª± I/O ´×°‚ª•ñ‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_SHARING "%1 ‚ւ̱¸¾½’†‚É‹¤—Lˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_LOCKING "%1 ‚ւ̱¸¾½’†‚ÉÛ¯·Ý¸Þˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_DISKFULL "%1 ‚ւ̱¸¾½’†‚ÉÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚É‚È‚è‚Ü‚µ‚½B"
+ AFX_IDP_FILE_EOF "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+ AFX_IDS_UNNAMED_FILE "–³‘è‚Ì̧²Ù"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_READONLY "%1 ‚ð“Ç‚Ýž‚Ý’†‚É‘‚«ž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_ENDOFFILE "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+ AFX_IDP_ARCH_WRITEONLY "%1 ‚Ö‘‚«ž‚Ý’†‚É“Ç‚Ýž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_BADINDEX "%1 ‚Ì̧²ÙŒ`Ž®‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_BADCLASS "%1 ‚Í—\Šú‚µ‚È‚¢µÌÞ¼Þª¸Ä‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+ AFX_IDP_ARCH_BADSCHEMA "%1 ‚Í•s³‚Ƚ·°Ï‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Ò°Ù ¼½ÃÑ‚ÌÛ°ÄÞ‚ª‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_INVALID_MAPI_DLL "Ò°Ù ¼½ÃÑ DLL‚ª•s³‚Å‚·B"
+ AFX_IDP_FAILED_MAPI_SEND "Ò°Ù‚Ì‘—M‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Ë߸¾Ù"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "V‹K"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "V‹K(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,137,23,40,14
+ PUSHBUTTON "ÍÙÌß(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.kor/afxctl.rc b/public/sdk/inc/mfc42/l.kor/afxctl.rc
new file mode 100644
index 000000000..8c2466d7b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "±Û²Ã(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "±Û²Ã À¯Çü(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Å©±â(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "È¿°ú",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ãë¼Ò¼±(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "¹ØÁÙ(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "º¸±â",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "½Ã½ºÅÛ »ö(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ã¾Æº¸±â(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Áö¿ì±â(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "¹Ì¸®º¸±â:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(¹ÌÁöÀÇ)"
+ AFX_IDS_COLOR_DESKTOP "µ¥½ºÅ©Åé"
+ AFX_IDS_COLOR_APPWORKSPACE "ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¾÷°ø°£"
+ AFX_IDS_COLOR_WNDBACKGND "À©µµ¿ì ¹è°æ"
+ AFX_IDS_COLOR_WNDTEXT "À©µµ¿ì ÅؽºÆ®"
+ AFX_IDS_COLOR_MENUBAR "¸Þ´ºÇ¥½ÃÁÙ"
+ AFX_IDS_COLOR_MENUTEXT "¸Þ´º ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBAR "È°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_INACTIVEBAR "ºñÈ°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_ACTIVETEXT "È°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_INACTIVETEXT "ºñÈ°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBORDER "È°¼º °æ°è¼±"
+ AFX_IDS_COLOR_INACTIVEBORDER "ºñÈ°¼º °æ°è¼±"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "À©µµ¿ì ÇÁ·¹ÀÓ"
+ AFX_IDS_COLOR_SCROLLBARS "À̵¿ÁÙ"
+ AFX_IDS_COLOR_BTNFACE "¹öÆ° Á¤¸é"
+ AFX_IDS_COLOR_BTNSHADOW "¹öÆ° ±×¸²ÀÚ"
+ AFX_IDS_COLOR_BTNTEXT "¹öÆ° ÅؽºÆ®"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "¹öÆ° ¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_DISABLEDTEXT "»ç¿ë ºÒ°¡ ÅؽºÆ®"
+ AFX_IDS_COLOR_HIGHLIGHT "¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "¹ÝÀüÇ¥½ÃµÈ ÅؽºÆ®"
+ AFX_IDS_REGULAR "º¸Åë"
+ AFX_IDS_BOLD "±½°Ô"
+ AFX_IDS_ITALIC "±â¿ïÀÓ²Ã"
+ AFX_IDS_BOLDITALIC "±½Àº ±â¿ïÀÓ²Ã"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(±Û²Ã)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(»ö)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(±×¸² - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "¹ÌÁöÀÇ"
+ AFX_IDS_PICTYPE_NONE "¾øÀ½"
+ AFX_IDS_PICTYPE_BITMAP "ºñÆ®¸Ê"
+ AFX_IDS_PICTYPE_METAFILE "¸ÞŸÆÄÀÏ"
+ AFX_IDS_PICTYPE_ICON "¾ÆÀÌÄÜ"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "»ö Ư¼º ÆäÀÌÁö"
+ AFX_IDS_COLOR_PPG_CAPTION "»ö"
+ AFX_IDS_FONT_PPG "±Û²Ã Ư¼º ÆäÀÌÁö"
+ AFX_IDS_FONT_PPG_CAPTION "±Û²Ã"
+ AFX_IDS_PICTURE_PPG "±×¸² Ư¼º ÆäÀÌÁö"
+ AFX_IDS_PICTURE_PPG_CAPTION "±×¸²"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ¾øÀ½"
+ AFX_IDS_BORDERSTYLE_1 "1 - °íÁ¤ ´ÜÀÏ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "ÆíÁý(&E)"
+ AFX_IDS_VERB_PROPERTIES "Ư¼º(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "±×¸² ÆÄÀÏ %1À»(¸¦) ¿­ ¼ö ¾øÀ½. ÀÌ ÆÄÀÏÀÌ ¾ø°Å³ª ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_PICTURECANTLOAD "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. À߸øµÈ Æ÷¸ËÀ» °¡Áø ÆÄÀÏÀÓ."
+ AFX_IDP_PICTURETOOLARGE "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¸Þ¸ð¸®¿¡ ¼ö¿ëÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_PICTUREREADFAILED
+ "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ¼³¸íÀÌ ¾ø´Â Àб⠽ÇÆÐ."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "±×¸² ã¾Æº¸±â"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "À߸øµÈ ±â´É È£Ãâ"
+ AFX_IDP_E_OVERFLOW "¼ýÀÚ°¡ ³Ê¹«Å­"
+ AFX_IDP_E_OUTOFMEMORY "¸Þ¸ð¸® ºÎÁ·"
+ AFX_IDP_E_DIVISIONBYZERO "0À¸·Î ³ª´©±â"
+ AFX_IDP_E_OUTOFSTRINGSPACE "¹®ÀÚ¿­ °ø°£ ºÎÁ·"
+ AFX_IDP_E_OUTOFSTACKSPACE "½ºÅà °ø°£ ºÎÁ·"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ºÒ·® ÆÄÀÏ À̸§ ¶Ç´Â ¹øÈ£"
+ AFX_IDP_E_FILENOTFOUND "ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_BADFILEMODE "ºÒ·® ÆÄÀÏ ¸ðµå"
+ AFX_IDP_E_FILEALREADYOPEN "ÆÄÀÏÀÌ ÀÌ¹Ì ¿­·Á ÀÖÀ½"
+ AFX_IDP_E_DEVICEIOERROR "ÀÔÃâ·Â ÀåÄ¡ ¿À·ù"
+ AFX_IDP_E_FILEALREADYEXISTS "ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÔ"
+ AFX_IDP_E_BADRECORDLENGTH "ºÒ·® ·¹ÄÚµå ±æÀÌ"
+ AFX_IDP_E_DISKFULL "µð½ºÅ©°¡ ²Ë Âü"
+ AFX_IDP_E_BADRECORDNUMBER "ºÒ·® ·¹ÄÚµå ¹øÈ£"
+ AFX_IDP_E_BADFILENAME "ºÒ·® ÆÄÀÏ À̸§"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÆÄÀÏÀÌ ³Ê¹« ¸¹À½"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÀåÄ¡¸¦ ÀÌ¿ëÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_PERMISSIONDENIED "Çã°¡°¡ °ÅºÎµÊ"
+ AFX_IDP_E_DISKNOTREADY "µð½ºÅ©°¡ ÁغñµÇÁö ¾ÊÀ½"
+ AFX_IDP_E_PATHFILEACCESSERROR "°æ·Î/ÆÄÀÏ ¾×¼¼½º ¿À·ù"
+ AFX_IDP_E_PATHNOTFOUND "°æ·Î¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDPATTERNSTRING "À߸øµÈ ¹«´Ì ¹®ÀÚ¿­"
+ AFX_IDP_E_INVALIDUSEOFNULL "À߸øµÈ ³Î »ç¿ë"
+ AFX_IDP_E_INVALIDFILEFORMAT "À߸øµÈ ÆÄÀÏ Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "À߸øµÈ Ư¼º °ª"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "À߸øµÈ ¹è¿­ »öÀÎ"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Ư¼ºÀº ½ÇÇà ½Ã°£¿¡ ¼³Á¤µÉ ¼ö ¾øÀ½"
+ AFX_IDP_E_SETNOTSUPPORTED "Ư¼ºÀº ÀбâÀü¿ëÀÓ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ư¼º ¹è¿­À» »ç¿ëÇÒ ¶§¿¡´Â ¹è¿­ »öÀÎÀ» ¸í½ÃÇÏ¿©¾ß ÇÔ"
+ AFX_IDP_E_SETNOTPERMITTED "ÀÌ Á¦¾î±â¿¡¼­´Â Ư¼ºÀ» ¼³Á¤ÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "½ÇÇà ½Ã°£¿¡´Â Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Ư¼ºÀº ¾²±âÀü¿ëÀÓ"
+ AFX_IDP_E_PROPERTYNOTFOUND "Ư¼ºÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "À߸øµÈ Ŭ¸³º¸µå Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPICTURE "À߸øµÈ ±×¸²"
+ AFX_IDP_E_PRINTERERROR "ÇÁ¸°ÅÍ ¿À·ù"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÀúÀåÀ» À§ÇØ ÇÊ¿äÇÑ Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "°Ë»ö ÅؽºÆ®¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "´ëü ÅؽºÆ®°¡ ³Ê¹« ±æÀ½"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxdb.rc b/public/sdk/inc/mfc42/l.kor/afxdb.rc
new file mode 100644
index 000000000..c1b67c868
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "µ¥ÀÌÅÍ¿øº»¿¡ ´ëÇÑ ¿¬°á ½Ãµµ ½ÇÆÐ"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "·¹Äڵ弼Ʈ´Â ¾ÕÀ¸·Î À̵¿Çϱ⸸À» Áö¿øÇÔ."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Ç¥ ¿­±â ½Ãµµ ½ÇÆÐ - °Ë»öÇÒ Ä®·³ÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¹®ÀǷκÎÅÍ ¿¹±âÄ¡ ¾ÊÀº Ä®·³ µ¥ÀÌÅÍ Á¾·ù°¡ µÇµ¹·Á º¸³»Á³À½."
+ AFX_IDP_SQL_ILLEGAL_MODE "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¿©·¯ ÁÙÀÌ »õ·Î °íÃÄÁ³À½."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "ÀÛµ¿ ½ÇÆÐ, ÇöÀç ·¹Äڵ尡 ¾øÀ½."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¾Æ¹« ÁÙµµ »õ·Î °íħÀ̳ª »èÁ¦ ÀÛµ¿ÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_RECORDSET_READONLY "·¹Äڵ弼Ʈ´Â ÀбâÀü¿ëÀÓ"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC µå¶óÀ̹ö´Â MFC ±ä 2Áø µ¥ÀÌÅÍ ¸ðµ¨À» Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Çʼö ±¸¼º ¿ä¼ÒÀÎ ODBC32.DLL¸¦ ÀоîµéÀÌ·Á´Â ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC µå¶óÀ̹ö´Â ´ÙÀ̳ª¼¼Æ®¸¦ Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "½º³À¼¦ Áö¿øÀ» À§Çؼ­´Â ODBC Á¤Àû Ä¿¼­ ÇÊ¿ä."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (API_CONFORMANCE >= "
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (SQL_CONFORMANCE >= "
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "µ¥ÀÌÅÍÀÇ ³¡À» Áö³ª°Å³ª ¸Ç óÀ½º¸´Ù ¾ÕÀ¸·Î °¡·Á´Â ½Ãµµ."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "´ÙÀ̳ª¼¼Æ®´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC ·¹º§ 2 ȣȯ µå¶óÀ̹ö ÇÊ¿ä."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ÁöÁ¤ »õ·Î °íħÀº ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "¿ä±¸ÇÑ Àá±Ý ¸ðµå´Â Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "µ¥ÀÌÅÍ À߸²."
+ AFX_IDP_SQL_ROW_FETCH
+ "±â·Ï Àç»ý ¿À·ù"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ÇÊ¿äÇÑ ODBC ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ãÀ» ¼ö ¾øÀ½. ODBC°¡ Á¤È®ÇÏ°Ô ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½ÇÆÐ"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "µ¿Àû Ä¿¼­´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ¿£Áø ÃʱâÈ­ ºÒ´É. "
+ AFX_IDP_DAO_DFX_BIND
+ "ºÒ·® DFX °ª ÆĶó¹ÌÅÍ."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ¶Ç´Â QueryDef°¡ ¿­¸®Áö ¾ÊÀ½."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ½ÇÆÐ. ÁÙ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ¹ÙÀεù ¿À·ù. µ¥ÀÌÅÍ Á¾·ù°¡ ¸ÂÁö ¾Ê±â ¶§¹®¿¡ ¹ß»ýµÈ °Í °°½À´Ï´Ù."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ½ÇÆÐ. ¿ä±¸ÇÑ Ä®·³Àº º» µ¥ÀÌÅÍ ¼¼Æ®ÀÇ ÇÑ ¸â¹ö°¡ ¾Æ´Õ´Ï´Ù."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxolecl.rc b/public/sdk/inc/mfc42/l.kor/afxolecl.rc
new file mode 100644
index 000000000..67923935a
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Á¤Àû OLE °³Ã¼¸¦ È°¼ºÈ­ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_CONNECT "Á¢¼Ó ½ÇÆÐ.\n ¿¬°áÀÌ ²÷¾îÁ³À» ¼ö ÀÖÀ½."
+ AFX_IDP_SERVER_BUSY "¸í·ÉÀ» ó¸®ÇÒ ¼ö ¾øÀ½, ¼­¹ö »ç¿ë Áß."
+ AFX_IDP_BAD_VERB "¼­¹ö ÀÛµ¿ ½ÇÇà ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_LAUNCH "¼­¹ö ÀÀ¿ëÇÁ·Î±×·¥ ½ÇÆÐ."
+ AFX_IDS_UPDATING_ITEMS "OLE °³Ã¼ »õ·Î °íħ"
+ AFX_IDP_FAILED_TO_CONVERT "OLE °³Ã¼ º¯È¯ ½ÇÆÐ."
+ AFX_IDP_ASK_TO_DISCARD "À©µµ¿ì Á¾·á ½Ã¿¡´Â OLE °³Ã¼°¡ ÀúÀåµÇÁö ¾ÊÀ½!\n %1¿¡ ´ëÇÑ ¸ðµç º¯°æ »çÇ×À» ¹ö¸±±î¿ä?"
+ AFX_IDP_FAILED_TO_CREATE "°³Ã¼ ¸¸µé±â ½ÇÆÐ. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½Ã½ºÅÛ µî·ÏºÎ¿¡ ÀԷµǾú´ÂÁö È®ÀÎÇϽʽÿÀ."
+
+ AFX_IDS_METAFILE_FORMAT "±×¸² (¸ÞŸÆÄÀÏ)\n ±×¸²"
+ AFX_IDS_DIB_FORMAT "ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê\n ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê"
+ AFX_IDS_BITMAP_FORMAT "ºñÆ®¸Ê\n ºñÆ®¸Ê"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich ÅؽºÆ® (RTF)\n±Û²Ã ¹× ´Ü¶ô ¼­½ÄÀÌ ÀÖ´Â ÅؽºÆ®"
+ AFX_IDS_TEXT_FORMAT "¼­½Ä ºñ¼³Á¤ ÅؽºÆ®\n¼­½ÄÀÌ ¾ø´Â ÅؽºÆ®"
+
+ AFX_IDS_INVALID_CURRENCY "À߸øµÈ ÅëÈ­."
+ AFX_IDS_INVALID_DATETIME "À߸øµÈ ÀϽÃ."
+ AFX_IDS_INVALID_DATETIMESPAN "À߸øµÈ ÀϽà ¹üÀ§."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxolesv.rc b/public/sdk/inc/mfc42/l.kor/afxolesv.rc
new file mode 100644
index 000000000..c8526f560
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÁøÇàÇϱâ Àü¿¡ %1À»(¸¦) »õ·Î °íÄ¥±î¿ä?"
+ AFX_IDP_FAILED_TO_UPDATE, "Ŭ¶óÀ̾ðÆ®¸¦ »õ·Î °íÄ¥ ¼ö ¾øÀ½."
+
+ AFX_IDP_FAILED_TO_REGISTER, "µî·Ï ½ÇÆÐ. OLE ±â´ÉÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ½."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "½Ã½ºÅÛ µî·ÏºÎ »õ·Î °íħ ½ÇÆÐ.\nREGEDIT¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 ¿¡¼­ %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Á¾·á && %1·Î(À¸·Î) º¹±Í(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 »õ·Î °íħ(&U)"
+ AFX_IDS_SAVEFILECOPY, "»çº» ´Ù¸¥ À̸§À¸·Î ÀúÀå"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxprint.rc b/public/sdk/inc/mfc42/l.kor/afxprint.rc
new file mode 100644
index 000000000..c95b289e3
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Àμâ",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "¿¡¼­",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,45,40,15
+ CTEXT "Ãë¼ÒÇÏ·Á¸é Cmd-.¸¦ ´©¸£½Ê½Ã¿À.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "ÀÌÀü(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1¿¡" // for print output
+ AFX_IDS_ONEPAGE, "ÇÑ ÂÊ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "µÎ ÂÊ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "ÆäÀÌÁö %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "ÆäÀÌÁö %u\nÆäÀÌÁö %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÇÁ¸°ÅÍ ÆÄÀÏ (*.prn)|*.prn|¸ðµç ÆÄÀÏ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "ÆÄÀÏ¿¡ Àμâ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ·Î(À¸·Î)" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxres.rc b/public/sdk/inc/mfc42/l.kor/afxres.rc
new file mode 100644
index 000000000..9062fce77
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "¿­±â"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ (*.*)"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+#else
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå:"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+ AFX_IDS_ABOUT, "%1\205 Á¤º¸"
+#endif
+ AFX_IDS_HIDE, "¼û±è(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Áö¿øµÇÁö ¾Ê´Â ÀÛµ¿ÀÌ ½ÃµµµÇ¾úÀ½."
+ AFX_IDS_RESOURCE_EXCEPTION, "ÇÊ¿äÇÑ ÀÚ¿øÀÌ ¾øÀ½."
+ AFX_IDS_USER_EXCEPTION, "¹ÌÁöÀÇ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "À߸øµÈ ÆÄÀÏ À̸§."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "¹®¼­ ¿­±â ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "¹®¼­ ÀúÀå ½ÇÆÐ."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1¿¡ ÀúÀåÇÒ±î¿ä?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1 ¹®¼­ \042%2\042¿¡ ÀúÀåÇÒ±î¿ä?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "ºó ¹®¼­ ÀÛ¼º ½ÇÆÐ."
+ AFX_IDP_FILE_TOO_LARGE, "ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_START_PRINT, "Àμâ ÀÛ¾÷À» ½ÃÀÛÇÒ ¼ö ¾øÀ½."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "µµ¿ò¸» ½ÃÀÛ ½ÇÆÐ."
+ AFX_IDP_INTERNAL_FAILURE, "³»ºÎ ÀÀ¿ëÇÁ·Î±×·¥ ¿À·ù."
+ AFX_IDP_COMMAND_FAILURE, "¸í·É ½ÇÆÐ."
+ AFX_IDP_FAILED_MEMORY_ALLOC "ÀÛµ¿À» ½ÇÇàÇϱ⿡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÔ."
+ AFX_IDP_GET_NOT_SUPPORTED, "¾²±âÀü¿ë Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_SET_NOT_SUPPORTED, "ÀбâÀü¿ë Ư¼ºÀ» ¾µ ¼ö ¾øÀ½."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "¿¹±âÄ¡ ¾ÊÀº ÆÄÀÏ Æ÷¸Ë."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nÀÌ ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½.\n°æ·Î¿Í ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ© µå¶óÀ̺갡 ²Ë áÀ½."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "\042%1.\042 ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½. ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ©°¡ ²Ë áÀ½."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1·Î(À¸·Î)ºÎÅÍ ÀÐÀ» ¼ö ¾øÀ½. ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_ACCESS_WRITE "%1¿¡ ¾µ ¼ö ¾øÀ½. ÀбâÀü¿ëÀ̰ųª ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_IO_ERROR_READ "%1À»(¸¦) Àд Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1À»(¸¦) ¾²´Â Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL, "¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_INT_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ ¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_STRING_SIZE, "1% ÀÌÇÏÀÇ ¹®ÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_RADIO_BUTTON, "¹öÆ°À» ¼±ÅÃÇϽʽÿÀ."
+ AFX_IDP_PARSE_BYTE, "0 ¿¡¼­ 255 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_UINT, "¾çÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_DATETIME, "³¯Â¥ ¹×/¶Ç´Â ½Ã°£À» ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_CURRENCY, "ÅëÈ­¸¦ ÀÔ·ÂÇϽʽÿÀ."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "¿¬°áµÈ %s"
+ AFX_IDS_UNKNOWNTYPE "¹ÌÁöÀÇ Á¾·ù"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\n¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½.\n¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "\042%1.\042 ¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½. ¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "¿À·ù ¸Þ½ÃÁö°¡ ¾øÀ½."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_FILE_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_FILE_NOT_FOUND "%1 À»(¸¦) ãÀ» ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_PATH "%1 ¿¡ À߸øµÈ °æ·Î°¡ ÀÖÀ½."
+ AFX_IDP_FILE_TOO_MANY_OPEN "¿­¸° ÆÄÀÏÀÌ ³Ê¹« ¸¹±â ¶§¹®¿¡ %1À»(¸¦) ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_ACCESS_DENIED "%1¿¡ ´ëÇÑ ¾×¼¼½º°¡ °ÅºÎµÇ¾úÀ½."
+ AFX_IDP_FILE_INVALID_FILE "À߸øµÈ ÆÄÀÏ ÇÚµéÀÌ %1¿Í(°ú) °ü·ÃµÇ¾úÀ½."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1Àº(´Â) ÇöÀç µð·ºÅ丮À̱⠶§¹®¿¡ »èÁ¦ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_DIR_FULL "µð·ºÅ丮°¡ ²Ë á±â ¶§¹®¿¡ %1À»(¸¦) ÀÛ¼ºÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_SEEK "%1¿¡¼­ Ž»ö ½ÇÆÐ"
+ AFX_IDP_FILE_HARD_IO "%1 ¾×¼¼½º Áß¿¡ Çϵå¿þ¾î ÀÔÃâ·Â ¿À·ù°¡ º¸°íµÇ¾úÀ½."
+ AFX_IDP_FILE_SHARING "%1 ¾×¼¼½º Áß¿¡ °øÀ¯ À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_LOCKING "%1 ¾×¼¼½º Áß¿¡ Àá±Ý À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_DISKFULL "%1 ¾×¼¼½º Áß¿¡ µð½ºÅ©°¡ ²Ë Âü."
+ AFX_IDP_FILE_EOF "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDS_UNNAMED_FILE "À̸§ ¾ø´Â ÆÄÀÏ"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_ARCH_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_ARCH_READONLY "%1 Àб⿡ ¾²±â¸¦ ÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_ENDOFFILE "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_WRITEONLY "%1 ¾²±â·ÎºÎÅÍ ÀÐÀ¸·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_BADINDEX "%1¿¡´Â ºÒ·® Æ÷¸ËÀÌ ÀÖÀ½."
+ AFX_IDP_ARCH_BADCLASS "%1¿¡´Â ¿¹±âÄ¡ ¸øÇÑ °³Ã¼°¡ ÀÖÀ½."
+ AFX_IDP_ARCH_BADSCHEMA "%1¿¡´Â ºÎÁ¤È®ÇÑ ½ºÅ°¸¶°¡ ÀÖÀ½."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "¿ìÆí ½Ã½ºÅÛ Áö¿øÀ» ÀоîµéÀÏ ¼ö ¾øÀ½."
+ AFX_IDP_INVALID_MAPI_DLL "¿ìÆí ½Ã½ºÅÛ DLLÀÌ À߸øµÇ¾úÀ½."
+ AFX_IDP_FAILED_MAPI_SEND "¿ìÆí º¸³»±â°¡ ¸Þ½ÃÁö ¼Û½Å¿¡ ½ÇÆÐÇßÀ½."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Çȼ¿"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "»õ·Î¿î"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "»õ·Î¿î(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È®ÀÎ",IDOK,137,6,40,14
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,137,23,40,14
+ PUSHBUTTON "µµ¿ò¸»(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/mfcsamps.mak b/public/sdk/inc/mfc42/mfcsamps.mak
new file mode 100644
index 000000000..18e946cd5
--- /dev/null
+++ b/public/sdk/inc/mfc42/mfcsamps.mak
@@ -0,0 +1,490 @@
+# This is a part of the Microsoft Foundation Classes C++ library.
+# Copyright (C) 1992-1995 Microsoft Corporation
+# All rights reserved.
+#
+# This source code is only intended as a supplement to the
+# Microsoft Foundation Classes Reference and related
+# electronic documentation provided with the library.
+# See these sources for detailed information regarding the
+# Microsoft Foundation Classes product.
+
+# Common include for building MFC Sample programs
+#
+# typical usage
+# PROJ=foo
+# OBJS=foo.obj bar.obj ...
+# !INCLUDE ..\..\SAMPLE_.MAK
+#
+# ROOT specifies the location of the msdev\samples\mfc directory,
+# relative to the project directory. Because the MFC tutorial samples
+# have an intermediate STEP<n> subdirectory, they use
+# ROOT=..\..\..
+# instead of the default
+# ROOT=..\..
+#
+# NOTE: do not include 'stdafx.obj' in the OBJS list - the correctly
+# built version will be included for you
+#
+# Options to NMAKE:
+# "PLATFORM=?"
+# This option chooses the appropriate tools and sources for the
+# different platforms support by Windows/NT. Currently INTEL,
+# MIPS, ALPHA, PPC, M68K, and MPPC are supported; more will be
+# added as they become available. The default is chosen based on
+# the host environment. This option must be set for MAC_ builds.
+# "DEBUG=0" use release (default debug)
+# "CODEVIEW=1" include codeview info (even for release builds)
+# "AFXDLL=1" to use shared DLL version of MFC
+# "USRDLL=1" to build a DLL that uses static MFC
+# "UNICODE=1" to build UNICODE enabled applications
+# (not all samples support UNICODE)
+# "NO_PCH=1" do not use precompiled headers (defaults to use pch)
+# "COFF=1" include COFF symbols
+
+!ifndef PROJ
+!ERROR You forgot to define 'PROJ' symbol!!
+!endif
+
+
+ROOT=.
+!ifndef ROOT
+!endif
+
+!ifndef OBJS
+!ERROR You forgot to define 'OBJS' symbol!!
+!endif
+
+!ifndef DEBUG
+DEBUG=1
+!endif
+
+!ifndef AFXDLL
+AFXDLL=0
+!endif
+
+!ifndef UNICODE
+UNICODE=0
+!endif
+
+!ifndef USRDLL
+USRDLL=0
+!endif
+
+!if "$(USRDLL)" != "0"
+AFXDLL=0
+!endif
+
+!ifndef PLATFORM
+!ifndef PROCESSOR_ARCHITECTURE
+PROCESSOR_ARCHITECTURE=x86
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+PLATFORM=INTEL
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
+PLATFORM=ALPHA
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
+PLATFORM=MIPS
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
+PLATFORM=PPC
+!endif
+!endif
+
+!ifndef USES_OLE
+USES_OLE=0
+!endif
+
+!ifndef USES_DB
+USES_DB=0
+!endif
+
+!ifndef CONSOLE
+CONSOLE=0
+!endif
+
+!ifndef NO_PCH
+NO_PCH=0
+!endif
+
+#
+# Set BASE=W, M, or P depending on platform
+#
+BASE=W
+!if "$(PLATFORM)" == "M68K" || "$(PLATFORM)" == "MPPC"
+MACOS=1
+!undef BASE
+!if "$(PLATFORM)" == "M68K"
+BASE=M
+!else
+BASE=P
+!endif
+!endif
+
+!if "$(UNICODE)" == "0"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=stdafx
+!else
+STDAFX=stdusr
+!endif
+!else
+STDAFX=stddll
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=uniafx
+!else
+STDAFX=uniusr
+!endif
+!else
+STDAFX=unidll
+!endif
+!endif
+
+!if "$(DEBUG)" == "1"
+STDAFX=$(STDAFX)d
+!if "$(COFF)" != "1"
+!ifndef CODEVIEW
+CODEVIEW=1
+!endif
+!endif
+!endif
+
+!if "$(CODEVIEW)" == "1"
+STDAFX=$(STDAFX)v
+!endif
+
+!if "$(DEBUG)" == "1"
+DEBUG_SUFFIX=d
+!endif
+
+!if "$(DEBUG)" != "0"
+DEBUGFLAGS=/Od
+MFCDEFS=$(MFCDEFS) /D_DEBUG
+
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/Q68m
+!endif
+
+!endif
+
+!if "$(DEBUG)" == "0"
+!if "$(PLATFORM)" == "INTEL"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MIPS"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "ALPHA"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "PPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MPPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!endif # DEBUG == 0
+
+!if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
+DEBUGFLAGS=$(DEBUGFLAGS) /Z7
+!endif
+
+!if "$(UNICODE)" == "1"
+DLL_SUFFIX=u
+!endif
+
+!if "$(AFXDLL)" == "1"
+MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
+MFCDEFS=$(MFCDEFS) /D_AFXDLL
+!endif # AFXDLL == 1
+
+!if "$(USRDLL)" == "1"
+MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
+!endif
+
+!if "$(AFXDLL)" == "0"
+!if "$(MACOS)" != "1"
+MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
+!elseif "$(PLATFORM)" != "M68K"
+MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+MFCDEFS=$(MFCDEFS) /D_UNICODE
+!else
+MFCDEFS=$(MFCDEFS) /D_MBCS
+!endif
+
+!if "$(MACOS)" == "1"
+MFCDEFS=$(MFCDEFS) /D_MAC
+!if "$(PLATFORM)" == "M68K"
+ARCHITECTURE='m68k'
+!else
+ARCHITECTURE='pwpc'
+!endif
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+MFCDEFS=$(MFCDEFS) /D_X86_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+MFCDEFS=$(MFCDEFS) /D_MIPS_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+MFCDEFS=$(MFCDEFS) /D_ALPHA_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+MFCDEFS=$(MFCDEFS) /D_PPC_
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+CPP=mcl
+!else
+CPP=cl
+!endif
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_68K_
+CPP=cl
+CFLAGS=/GX /c /W3 /AL /Gt1 /Q68s $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_MPPC_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+CPPMAIN_FLAGS=$(CFLAGS)
+
+!if "$(NO_PCH)" == "1"
+CPPFLAGS=$(CPPMAIN_FLAGS)
+!else
+PCHDIR=.
+CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
+!endif
+
+!if "$(COFF)" == "1"
+NO_PDB=1
+!if "$(CODEVIEW)" != "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:coff
+!else
+LINKDEBUG=/incremental:no /debug:full /debugtype:both
+!endif
+!endif
+
+!if "$(COFF)" != "1"
+!if "$(CODEVIEW)" == "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:cv
+!else
+LINKDEBUG=/incremental:no /debug:none
+!endif
+!endif
+
+!if "$(NO_PDB)" == "1"
+LINKDEBUG=$(LINKDEBUG) /pdb:none
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+# link flags - must be specified after $(LINKCMD)
+#
+# conflags : creating a character based console application
+# guiflags : creating a GUI based "Windows" application
+
+!if "$(MACOS)" != "1"
+CONFLAGS=/subsystem:console
+GUIFLAGS=/subsystem:windows
+!else
+!if defined(MACSIG)
+GUIFLAGS=/mac:type=APPL /mac:creator=$(MACSIG)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
+GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
+!endif
+
+!if "$(MACOS)" != "1"
+PROJRESFILE=$(PROJ).res
+!else
+PROJRESFILE=$(PROJ).rsc $(MACSIG)mac.rsc
+!if "$(AFXDLL)" != "1"
+BASERESFILE=
+!endif
+!endif
+RESFILE=$(PROJRESFILE)
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .rcm .rc
+
+.cpp.obj:
+ $(CPP) @<<
+$(CPPFLAGS) $*.cpp
+<<
+
+.c.obj:
+ $(CPP) @<<
+$(CFLAGS) $(CVARS) $*.c
+<<
+
+!if "$(MACOS)" != "1"
+.rc.res:
+ rc /r $(MFCDEFS) $<
+!else
+.rc.rsc:
+ rc /r /m $(MFCDEFS) $<
+!endif
+
+#############################################################################
+
+!if "$(NO_PCH)" == "0"
+LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
+!else
+LINK_OBJS=$(OBJS)
+!endif
+
+#
+# Build CONSOLE Win32 application
+#
+!if "$(CONSOLE)" == "1"
+
+!if "$(MACOS)" == "1"
+!error Macintosh targets do not support console applications
+!endif
+
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif # CONSOLE=1
+
+#
+# Build Win32 application
+#
+!if "$(CONSOLE)" == "0"
+
+!if "$(MACOS)" == "1"
+copy: $(PROJ).exe
+!if defined(MACNAME)
+ mfile copy $(PROJ).exe ":$(MACNAME):$(PROJ)"
+!endif
+!endif
+
+!if "$(MACOS)" == "1"
+$(MACSIG)mac.rsc: $(MACSIG)mac.r
+ mrc $(MFCDEFS) /DARCHITECTURE=$(ARCHITECTURE) /o $(MACSIG)mac.rsc $(MACSIG)mac.r
+!endif
+
+!if "$(USRDLL)" == "1"
+$(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
+/dll /def:$(PROJ).def
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" != "1"
+$(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" == "1"
+!if "$(MACOS)" == "1"
+$(PROJ).exe: $(LINK_OBJS) $(MACSIG)mac.rsc
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(MACSIG)mac.rsc $(EXTRA_LIBS)
+<<
+
+!else
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif
+!endif
+
+!if "$(NO_PCH)" == "0"
+$(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
+ echo "BUILDING SHARED PCH and PCT files"
+ $(CPP) @<<
+$(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
+<<
+
+$(OBJS): $(PCHDIR)\$(STDAFX).pch
+!endif
+
+!endif # CONSOLE=0
+
+clean::
+ if exist $(PROJ).exe erase $(PROJ).exe
+ if exist *.aps erase *.aps
+ if exist *.pch erase *.pch
+ if exist *.map erase *.map
+ if exist *.obj erase *.obj
+ if exist *.exp erase *.exp
+ if exist *.pdb erase *.pdb
+ if exist *.map erase *.map
+ if exist *.lib erase *.lib
+ if exist *.res erase *.res
+ if exist *.rsc erase *.rsc
+ if exist *.pef erase *.pef
+
+#############################################################################
diff --git a/public/sdk/inc/mfc42/mssccprj.scc b/public/sdk/inc/mfc42/mssccprj.scc
new file mode 100644
index 000000000..b03b9d539
--- /dev/null
+++ b/public/sdk/inc/mfc42/mssccprj.scc
@@ -0,0 +1,4 @@
+SCC = This is a Source Code Control file
+
+[mfcsamps.mak]
+SCC_Project_Name = "$/Sources - MFC/MFC 4.2/include", QDAAAAAA
diff --git a/public/sdk/inc/mfc42/res/3dcheck.bmp b/public/sdk/inc/mfc42/res/3dcheck.bmp
new file mode 100644
index 000000000..23d739342
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/3dcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/95check.bmp b/public/sdk/inc/mfc42/res/95check.bmp
new file mode 100644
index 000000000..3fe90db3b
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/95check.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/copy4way.cur b/public/sdk/inc/mfc42/res/copy4way.cur
new file mode 100644
index 000000000..e0f41447d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/copy4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/help.cur b/public/sdk/inc/mfc42/res/help.cur
new file mode 100644
index 000000000..217090e5b
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/help.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/help.rsc b/public/sdk/inc/mfc42/res/help.rsc
new file mode 100644
index 000000000..3e21661ee
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/help.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/magnify.cur b/public/sdk/inc/mfc42/res/magnify.cur
new file mode 100644
index 000000000..d9a7042cf
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/magnify.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/magnify.rsc b/public/sdk/inc/mfc42/res/magnify.rsc
new file mode 100644
index 000000000..5d0c3813a
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/magnify.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/minifwnd.bmp b/public/sdk/inc/mfc42/res/minifwnd.bmp
new file mode 100644
index 000000000..b5861c4f7
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/minifwnd.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/move4way.cur b/public/sdk/inc/mfc42/res/move4way.cur
new file mode 100644
index 000000000..545afa10d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/move4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/nodrop.cur b/public/sdk/inc/mfc42/res/nodrop.cur
new file mode 100644
index 000000000..9fc75a562
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/nodrop.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/ntcheck.bmp b/public/sdk/inc/mfc42/res/ntcheck.bmp
new file mode 100644
index 000000000..5ad35e43c
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/ntcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/sarrows.cur b/public/sdk/inc/mfc42/res/sarrows.cur
new file mode 100644
index 000000000..b4e601ef0
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/sarrows.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/split.rsc b/public/sdk/inc/mfc42/res/split.rsc
new file mode 100644
index 000000000..8afb35a95
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/split.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/splith.cur b/public/sdk/inc/mfc42/res/splith.cur
new file mode 100644
index 000000000..bb03d7734
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/splith.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/splitv.cur b/public/sdk/inc/mfc42/res/splitv.cur
new file mode 100644
index 000000000..1fd0d55c8
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/splitv.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trck4way.cur b/public/sdk/inc/mfc42/res/trck4way.cur
new file mode 100644
index 000000000..974d02017
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trck4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trcknesw.cur b/public/sdk/inc/mfc42/res/trcknesw.cur
new file mode 100644
index 000000000..f92de6e68
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trcknesw.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trckns.cur b/public/sdk/inc/mfc42/res/trckns.cur
new file mode 100644
index 000000000..49e558267
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trckns.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trcknwse.cur b/public/sdk/inc/mfc42/res/trcknwse.cur
new file mode 100644
index 000000000..7a7d8820d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trcknwse.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trckwe.cur b/public/sdk/inc/mfc42/res/trckwe.cur
new file mode 100644
index 000000000..a069140e7
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trckwe.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/truetype.bmp b/public/sdk/inc/mfc42/res/truetype.bmp
new file mode 100644
index 000000000..3b22b2e03
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/truetype.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/servprov.h b/public/sdk/inc/mfc42/servprov.h
new file mode 100644
index 000000000..cd50c5bcc
--- /dev/null
+++ b/public/sdk/inc/mfc42/servprov.h
@@ -0,0 +1,191 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Fri Jun 14 20:22:17 1996
+ */
+/* Compiler settings for servprov.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __servprov_h__
+#define __servprov_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IServiceProvider_FWD_DEFINED__
+#define __IServiceProvider_FWD_DEFINED__
+typedef interface IServiceProvider IServiceProvider;
+#endif /* __IServiceProvider_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: servprov.h
+//
+//--------------------------------------------------------------------------
+
+#pragma comment(lib,"uuid3.lib")
+
+#ifndef _LPSERVICEPROVIDER_DEFINED
+#define _LPSERVICEPROVIDER_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IServiceProvider_INTERFACE_DEFINED__
+#define __IServiceProvider_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServiceProvider
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][local][object] */
+
+
+typedef /* [unique] */ IServiceProvider __RPC_FAR *LPSERVICEPROVIDER;
+
+
+EXTERN_C const IID IID_IServiceProvider;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServiceProvider : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryService(
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServiceProviderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServiceProvider __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServiceProvider __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryService )(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ END_INTERFACE
+ } IServiceProviderVtbl;
+
+ interface IServiceProvider
+ {
+ CONST_VTBL struct IServiceProviderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServiceProvider_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServiceProvider_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServiceProvider_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServiceProvider_QueryService(This,rsid,iid,ppvObj) \
+ (This)->lpVtbl -> QueryService(This,rsid,iid,ppvObj)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServiceProvider_QueryService_Proxy(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IServiceProvider_QueryService_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServiceProvider_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0082
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/sql.h b/public/sdk/inc/mfc42/sql.h
new file mode 100644
index 000000000..6aa49d658
--- /dev/null
+++ b/public/sdk/inc/mfc42/sql.h
@@ -0,0 +1,1259 @@
+/*****************************************************************
+** SQL.H - This is the the main include for ODBC Core functions.
+**
+** preconditions:
+** #include "windows.h"
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 11/10/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQL
+#define __SQL
+
+/*
+* ODBCVER ODBC version number (0x0200). To exclude
+* definitions introduced in version 2.0 (or above)
+* #define ODBCVER 0x0100 before #including <sql.h>
+*/
+
+/* If ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* generally useful constants */
+#if (ODBCVER >= 0x0200)
+#define SQL_SPEC_MAJOR 2 /* Major version of specification */
+#define SQL_SPEC_MINOR 50 /* Minor version of specification */
+#define SQL_SPEC_STRING "02.50" /* String constant for version */
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_SQLSTATE_SIZE 5 /* size of SQLSTATE */
+#define SQL_MAX_MESSAGE_LENGTH 512 /* message buffer size */
+#define SQL_MAX_DSN_LENGTH 32 /* maximum data source name size*/
+
+/* RETCODEs */
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_ERROR (-1)
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_NO_DATA_FOUND 100
+
+/* Standard SQL datatypes, using ANSI type numbering */
+#define SQL_CHAR 1
+#define SQL_NUMERIC 2
+#define SQL_DECIMAL 3
+#define SQL_INTEGER 4
+#define SQL_SMALLINT 5
+#define SQL_FLOAT 6
+#define SQL_REAL 7
+#define SQL_DOUBLE 8
+#define SQL_VARCHAR 12
+
+#define SQL_TYPE_NULL 0
+#define SQL_TYPE_MIN SQL_BIT
+#define SQL_TYPE_MAX SQL_VARCHAR
+#define SQL_ALL_TYPES 0
+
+/* C datatype to SQL datatype mapping SQL types
+ ------------------- */
+#define SQL_C_CHAR SQL_CHAR /* CHAR, VARCHAR, DECIMAL, NUMERIC */
+#define SQL_C_LONG SQL_INTEGER /* INTEGER */
+#define SQL_C_SHORT SQL_SMALLINT /* SMALLINT */
+#define SQL_C_FLOAT SQL_REAL /* REAL */
+#define SQL_C_DOUBLE SQL_DOUBLE /* FLOAT, DOUBLE */
+#define SQL_C_DEFAULT 99
+
+/* NULL status constants. These are used in SQLColumns, SQLColAttributes,
+SQLDescribeCol, SQLDescribeParam, and SQLSpecialColumns to describe the
+nullablity of a column in a table. */
+#define SQL_NO_NULLS 0
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+
+/* Special length values */
+#define SQL_NULL_DATA (-1)
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_NTS (-3)
+
+/* SQLFreeStmt defines */
+#define SQL_CLOSE 0
+#define SQL_DROP 1
+#define SQL_UNBIND 2
+#define SQL_RESET_PARAMS 3
+
+/* SQLTransact defines */
+#define SQL_COMMIT 0
+#define SQL_ROLLBACK 1
+
+/* SQLColAttributes defines */
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TYPE_NAME 14
+#if (ODBCVER >= 0x0200)
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_LABEL 18
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#else
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_TYPE_NAME
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_COLUMN_DRIVER_START 1000
+
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+
+/* SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE */
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_WRITE 1
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+
+/* SQLColAttributes subdefines for SQL_COLUMN_SEARCHABLE */
+/* These are also used by SQLGetInfo */
+#define SQL_UNSEARCHABLE 0
+#define SQL_LIKE_ONLY 1
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_SEARCHABLE 3
+
+/* SQLError defines */
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HSTMT 0
+
+#include "sqltypes.h"
+
+#ifndef RC_INVOKED
+/* Core Function Prototypes */
+
+SQLRETURN SQL_API SQLAllocConnect(
+ SQLHENV henv,
+ SQLHDBC FAR *phdbc);
+
+SQLRETURN SQL_API SQLAllocEnv(
+ SQLHENV FAR *phenv);
+
+SQLRETURN SQL_API SQLAllocStmt(
+ SQLHDBC hdbc,
+ SQLHSTMT FAR *phstmt);
+
+SQLRETURN SQL_API SQLBindCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLCancel(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLColAttributes(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLUSMALLINT fDescType,
+ SQLPOINTER rgbDesc,
+ SQLSMALLINT cbDescMax,
+ SQLSMALLINT FAR *pcbDesc,
+ SQLINTEGER FAR *pfDesc);
+
+SQLRETURN SQL_API SQLConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSN,
+ SQLCHAR FAR *szUID,
+ SQLSMALLINT cbUID,
+ SQLCHAR FAR *szAuthStr,
+ SQLSMALLINT cbAuthStr);
+
+SQLRETURN SQL_API SQLDescribeCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLCHAR FAR *szColName,
+ SQLSMALLINT cbColNameMax,
+ SQLSMALLINT FAR *pcbColName,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbColDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLDisconnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLError(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlState,
+ SQLINTEGER FAR *pfNativeError,
+ SQLCHAR FAR *szErrorMsg,
+ SQLSMALLINT cbErrorMsgMax,
+ SQLSMALLINT FAR *pcbErrorMsg);
+
+SQLRETURN SQL_API SQLExecDirect(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLExecute(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFetch(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFreeConnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLFreeEnv(
+ SQLHENV henv);
+
+SQLRETURN SQL_API SQLFreeStmt(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption);
+
+SQLRETURN SQL_API SQLGetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursorMax,
+ SQLSMALLINT FAR *pcbCursor);
+
+SQLRETURN SQL_API SQLNumResultCols(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pccol);
+
+SQLRETURN SQL_API SQLPrepare(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLRowCount(
+ SQLHSTMT hstmt,
+ SQLINTEGER FAR *pcrow);
+
+SQLRETURN SQL_API SQLSetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursor);
+
+SQLRETURN SQL_API SQLTransact(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLUSMALLINT fType);
+
+#endif /* RC_INVOKED */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetParam( /* Use SQLBindParameter */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbParamDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER FAR *pcbValue);
+
+#endif /* RC_INVOKED */
+
+
+/* Defines used by both Level 1 and Level 2 functions */
+
+/* generally useful constants */
+#define SQL_MAX_OPTION_STRING_LENGTH 256
+
+/* Additional return codes */
+#define SQL_STILL_EXECUTING 2
+#define SQL_NEED_DATA 99
+
+/* SQL extended datatypes */
+#define SQL_DATE 9
+#define SQL_TIME 10
+#define SQL_TIMESTAMP 11
+#define SQL_LONGVARCHAR (-1)
+#define SQL_BINARY (-2)
+#define SQL_VARBINARY (-3)
+#define SQL_LONGVARBINARY (-4)
+#define SQL_BIGINT (-5)
+#define SQL_TINYINT (-6)
+#define SQL_BIT (-7)
+
+#define SQL_INTERVAL_YEAR (-80)
+#define SQL_INTERVAL_MONTH (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH (-82)
+#define SQL_INTERVAL_DAY (-83)
+#define SQL_INTERVAL_HOUR (-84)
+#define SQL_INTERVAL_MINUTE (-85)
+#define SQL_INTERVAL_SECOND (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (-92)
+#define SQL_UNICODE (-95)
+#define SQL_UNICODE_VARCHAR (-96)
+#define SQL_UNICODE_LONGVARCHAR (-97)
+#define SQL_UNICODE_CHAR SQL_UNICODE
+
+#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR
+
+
+#if (ODBCVER >= 0x0200)
+#define SQL_SIGNED_OFFSET (-20)
+#define SQL_UNSIGNED_OFFSET (-22)
+#endif /* ODBCVER >= 0x0200 */
+
+/* C datatype to SQL datatype mapping */
+#define SQL_C_DATE SQL_DATE
+#define SQL_C_TIME SQL_TIME
+#define SQL_C_TIMESTAMP SQL_TIMESTAMP
+#define SQL_C_BINARY SQL_BINARY
+#define SQL_C_BIT SQL_BIT
+#define SQL_C_TINYINT SQL_TINYINT
+#if (ODBCVER >= 0x0200)
+#define SQL_C_SLONG SQL_C_LONG+SQL_SIGNED_OFFSET /* SIGNED INTEGER */
+#define SQL_C_SSHORT SQL_C_SHORT+SQL_SIGNED_OFFSET /* SIGNED SMALLINT */
+#define SQL_C_STINYINT SQL_TINYINT+SQL_SIGNED_OFFSET /* SIGNED TINYINT */
+#define SQL_C_ULONG SQL_C_LONG+SQL_UNSIGNED_OFFSET /* UNSIGNED INTEGER */
+#define SQL_C_USHORT SQL_C_SHORT+SQL_UNSIGNED_OFFSET /* UNSIGNED SMALLINT*/
+#define SQL_C_UTINYINT SQL_TINYINT+SQL_UNSIGNED_OFFSET /* UNSIGNED TINYINT */
+#define SQL_C_BOOKMARK SQL_C_ULONG /* BOOKMARK */
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Level 1 Functions */
+
+/* Special return values for SQLGetData */
+#define SQL_NO_TOTAL (-4)
+
+/* Defines for SQLGetFunctions */
+#define SQL_API_SQLALLOCCONNECT 1 /* Core Functions */
+#define SQL_API_SQLALLOCENV 2
+#define SQL_API_SQLALLOCSTMT 3
+#define SQL_API_SQLBINDCOL 4
+#define SQL_API_SQLCANCEL 5
+#define SQL_API_SQLCOLATTRIBUTES 6
+#define SQL_API_SQLCONNECT 7
+#define SQL_API_SQLDESCRIBECOL 8
+#define SQL_API_SQLDISCONNECT 9
+#define SQL_API_SQLERROR 10
+#define SQL_API_SQLEXECDIRECT 11
+#define SQL_API_SQLEXECUTE 12
+#define SQL_API_SQLFETCH 13
+#define SQL_API_SQLFREECONNECT 14
+#define SQL_API_SQLFREEENV 15
+#define SQL_API_SQLFREESTMT 16
+#define SQL_API_SQLGETCURSORNAME 17
+#define SQL_API_SQLNUMRESULTCOLS 18
+#define SQL_API_SQLPREPARE 19
+#define SQL_API_SQLROWCOUNT 20
+#define SQL_API_SQLSETCURSORNAME 21
+#define SQL_API_SQLSETPARAM 22
+#define SQL_API_SQLTRANSACT 23
+
+#define SQL_NUM_FUNCTIONS 23
+
+#define SQL_EXT_API_START 40
+
+#define SQL_API_SQLCOLUMNS 40 /* Level 1 Functions */
+#define SQL_API_SQLDRIVERCONNECT 41
+#define SQL_API_SQLGETCONNECTOPTION 42
+#define SQL_API_SQLGETDATA 43
+#define SQL_API_SQLGETFUNCTIONS 44
+#define SQL_API_SQLGETINFO 45
+#define SQL_API_SQLGETSTMTOPTION 46
+#define SQL_API_SQLGETTYPEINFO 47
+#define SQL_API_SQLPARAMDATA 48
+#define SQL_API_SQLPUTDATA 49
+#define SQL_API_SQLSETCONNECTOPTION 50
+#define SQL_API_SQLSETSTMTOPTION 51
+#define SQL_API_SQLSPECIALCOLUMNS 52
+#define SQL_API_SQLSTATISTICS 53
+#define SQL_API_SQLTABLES 54
+
+#define SQL_API_SQLBROWSECONNECT 55 /* Level 2 Functions */
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDATASOURCES 57
+#define SQL_API_SQLDESCRIBEPARAM 58
+#define SQL_API_SQLEXTENDEDFETCH 59
+#define SQL_API_SQLFOREIGNKEYS 60
+#define SQL_API_SQLMORERESULTS 61
+#define SQL_API_SQLNATIVESQL 62
+#define SQL_API_SQLNUMPARAMS 63
+#define SQL_API_SQLPARAMOPTIONS 64
+#define SQL_API_SQLPRIMARYKEYS 65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES 67
+#define SQL_API_SQLSETPOS 68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES 70
+
+/* SDK 2.0 Additions */
+#if (ODBCVER >= 0x0200)
+#define SQL_API_SQLDRIVERS 71
+#define SQL_API_SQLBINDPARAMETER 72
+#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER
+#else
+#define SQL_EXT_API_LAST SQL_API_SQLTABLEPRIVILEGES
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_API_ALL_FUNCTIONS 0
+
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#if (ODBCVER >= 0x0200)
+#define SQL_API_LOADBYORDINAL 199
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLGetInfo */
+#define SQL_INFO_FIRST 0
+#define SQL_ACTIVE_CONNECTIONS 0
+#define SQL_ACTIVE_STATEMENTS 1
+#define SQL_DATA_SOURCE_NAME 2
+#define SQL_DRIVER_HDBC 3
+#define SQL_DRIVER_HENV 4
+#define SQL_DRIVER_HSTMT 5
+#define SQL_DRIVER_NAME 6
+#define SQL_DRIVER_VER 7
+#define SQL_FETCH_DIRECTION 8
+#define SQL_ODBC_API_CONFORMANCE 9
+#define SQL_ODBC_VER 10
+#define SQL_ROW_UPDATES 11
+#define SQL_ODBC_SAG_CLI_CONFORMANCE 12
+#define SQL_SERVER_NAME 13
+#define SQL_SEARCH_PATTERN_ESCAPE 14
+#define SQL_ODBC_SQL_CONFORMANCE 15
+
+#define SQL_DBMS_NAME 17
+#define SQL_DBMS_VER 18
+
+#define SQL_ACCESSIBLE_TABLES 19
+#define SQL_ACCESSIBLE_PROCEDURES 20
+#define SQL_PROCEDURES 21
+#define SQL_CONCAT_NULL_BEHAVIOR 22
+#define SQL_CURSOR_COMMIT_BEHAVIOR 23
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24
+#define SQL_DATA_SOURCE_READ_ONLY 25
+#define SQL_DEFAULT_TXN_ISOLATION 26
+#define SQL_EXPRESSIONS_IN_ORDERBY 27
+#define SQL_IDENTIFIER_CASE 28
+#define SQL_IDENTIFIER_QUOTE_CHAR 29
+#define SQL_MAX_COLUMN_NAME_LEN 30
+#define SQL_MAX_CURSOR_NAME_LEN 31
+#define SQL_MAX_OWNER_NAME_LEN 32
+#define SQL_MAX_PROCEDURE_NAME_LEN 33
+#define SQL_MAX_QUALIFIER_NAME_LEN 34
+#define SQL_MAX_TABLE_NAME_LEN 35
+#define SQL_MULT_RESULT_SETS 36
+#define SQL_MULTIPLE_ACTIVE_TXN 37
+#define SQL_OUTER_JOINS 38
+#define SQL_OWNER_TERM 39
+#define SQL_PROCEDURE_TERM 40
+#define SQL_QUALIFIER_NAME_SEPARATOR 41
+#define SQL_QUALIFIER_TERM 42
+#define SQL_SCROLL_CONCURRENCY 43
+#define SQL_SCROLL_OPTIONS 44
+#define SQL_TABLE_TERM 45
+#define SQL_TXN_CAPABLE 46
+#define SQL_USER_NAME 47
+
+#define SQL_CONVERT_FUNCTIONS 48
+#define SQL_NUMERIC_FUNCTIONS 49
+#define SQL_STRING_FUNCTIONS 50
+#define SQL_SYSTEM_FUNCTIONS 51
+#define SQL_TIMEDATE_FUNCTIONS 52
+
+#define SQL_CONVERT_BIGINT 53
+#define SQL_CONVERT_BINARY 54
+#define SQL_CONVERT_BIT 55
+#define SQL_CONVERT_CHAR 56
+#define SQL_CONVERT_DATE 57
+#define SQL_CONVERT_DECIMAL 58
+#define SQL_CONVERT_DOUBLE 59
+#define SQL_CONVERT_FLOAT 60
+#define SQL_CONVERT_INTEGER 61
+#define SQL_CONVERT_LONGVARCHAR 62
+#define SQL_CONVERT_NUMERIC 63
+#define SQL_CONVERT_REAL 64
+#define SQL_CONVERT_SMALLINT 65
+#define SQL_CONVERT_TIME 66
+#define SQL_CONVERT_TIMESTAMP 67
+#define SQL_CONVERT_TINYINT 68
+#define SQL_CONVERT_VARBINARY 69
+#define SQL_CONVERT_VARCHAR 70
+#define SQL_CONVERT_LONGVARBINARY 71
+
+#define SQL_TXN_ISOLATION_OPTION 72
+#define SQL_ODBC_SQL_OPT_IEF 73
+
+/*** ODBC SDK 1.0 Additions ***/
+#define SQL_CORRELATION_NAME 74
+#define SQL_NON_NULLABLE_COLUMNS 75
+
+/*** ODBC SDK 2.0 Additions ***/
+#if (ODBCVER >= 0x0200)
+#define SQL_DRIVER_HLIB 76
+#define SQL_DRIVER_ODBC_VER 77
+#define SQL_LOCK_TYPES 78
+#define SQL_POS_OPERATIONS 79
+#define SQL_POSITIONED_STATEMENTS 80
+#define SQL_GETDATA_EXTENSIONS 81
+#define SQL_BOOKMARK_PERSISTENCE 82
+#define SQL_STATIC_SENSITIVITY 83
+#define SQL_FILE_USAGE 84
+#define SQL_NULL_COLLATION 85
+#define SQL_ALTER_TABLE 86
+#define SQL_COLUMN_ALIAS 87
+#define SQL_GROUP_BY 88
+#define SQL_KEYWORDS 89
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
+#define SQL_OWNER_USAGE 91
+#define SQL_QUALIFIER_USAGE 92
+#define SQL_QUOTED_IDENTIFIER_CASE 93
+#define SQL_SPECIAL_CHARACTERS 94
+#define SQL_SUBQUERIES 95
+#define SQL_UNION 96
+#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
+#define SQL_MAX_COLUMNS_IN_INDEX 98
+#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
+#define SQL_MAX_COLUMNS_IN_SELECT 100
+#define SQL_MAX_COLUMNS_IN_TABLE 101
+#define SQL_MAX_INDEX_SIZE 102
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103
+#define SQL_MAX_ROW_SIZE 104
+#define SQL_MAX_STATEMENT_LEN 105
+#define SQL_MAX_TABLES_IN_SELECT 106
+#define SQL_MAX_USER_NAME_LEN 107
+#define SQL_MAX_CHAR_LITERAL_LEN 108
+#define SQL_TIMEDATE_ADD_INTERVALS 109
+#define SQL_TIMEDATE_DIFF_INTERVALS 110
+#define SQL_NEED_LONG_DATA_LEN 111
+#define SQL_MAX_BINARY_LITERAL_LEN 112
+#define SQL_LIKE_ESCAPE_CLAUSE 113
+#define SQL_QUALIFIER_LOCATION 114
+
+#if (ODBCVER >= 0x0201)
+/*** ODBC SDK 2.01 Additions ***/
+#define SQL_OJ_CAPABILITIES 65003 /* Temp value until ODBC 3.0 */
+#endif /* ODBCVER >= 0x0201 */
+
+#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
+#else
+#define SQL_INFO_LAST SQL_NON_NULLABLE_COLUMNS
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_INFO_DRIVER_START 1000
+
+/* SQL_CONVERT_* return value bitmasks */
+
+#define SQL_CVT_CHAR 0x00000001L
+#define SQL_CVT_NUMERIC 0x00000002L
+#define SQL_CVT_DECIMAL 0x00000004L
+#define SQL_CVT_INTEGER 0x00000008L
+#define SQL_CVT_SMALLINT 0x00000010L
+#define SQL_CVT_FLOAT 0x00000020L
+#define SQL_CVT_REAL 0x00000040L
+#define SQL_CVT_DOUBLE 0x00000080L
+#define SQL_CVT_VARCHAR 0x00000100L
+#define SQL_CVT_LONGVARCHAR 0x00000200L
+#define SQL_CVT_BINARY 0x00000400L
+#define SQL_CVT_VARBINARY 0x00000800L
+#define SQL_CVT_BIT 0x00001000L
+#define SQL_CVT_TINYINT 0x00002000L
+#define SQL_CVT_BIGINT 0x00004000L
+#define SQL_CVT_DATE 0x00008000L
+#define SQL_CVT_TIME 0x00010000L
+#define SQL_CVT_TIMESTAMP 0x00020000L
+#define SQL_CVT_LONGVARBINARY 0x00040000L
+
+/* SQL_CONVERT_FUNCTIONS functions */
+#define SQL_FN_CVT_CONVERT 0x00000001L
+
+/* SQL_STRING_FUNCTIONS functions */
+
+#define SQL_FN_STR_CONCAT 0x00000001L
+#define SQL_FN_STR_INSERT 0x00000002L
+#define SQL_FN_STR_LEFT 0x00000004L
+#define SQL_FN_STR_LTRIM 0x00000008L
+#define SQL_FN_STR_LENGTH 0x00000010L
+#define SQL_FN_STR_LOCATE 0x00000020L
+#define SQL_FN_STR_LCASE 0x00000040L
+#define SQL_FN_STR_REPEAT 0x00000080L
+#define SQL_FN_STR_REPLACE 0x00000100L
+#define SQL_FN_STR_RIGHT 0x00000200L
+#define SQL_FN_STR_RTRIM 0x00000400L
+#define SQL_FN_STR_SUBSTRING 0x00000800L
+#define SQL_FN_STR_UCASE 0x00001000L
+#define SQL_FN_STR_ASCII 0x00002000L
+#define SQL_FN_STR_CHAR 0x00004000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_STR_DIFFERENCE 0x00008000L
+#define SQL_FN_STR_LOCATE_2 0x00010000L
+#define SQL_FN_STR_SOUNDEX 0x00020000L
+#define SQL_FN_STR_SPACE 0x00040000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_NUMERIC_FUNCTIONS functions */
+
+#define SQL_FN_NUM_ABS 0x00000001L
+#define SQL_FN_NUM_ACOS 0x00000002L
+#define SQL_FN_NUM_ASIN 0x00000004L
+#define SQL_FN_NUM_ATAN 0x00000008L
+#define SQL_FN_NUM_ATAN2 0x00000010L
+#define SQL_FN_NUM_CEILING 0x00000020L
+#define SQL_FN_NUM_COS 0x00000040L
+#define SQL_FN_NUM_COT 0x00000080L
+#define SQL_FN_NUM_EXP 0x00000100L
+#define SQL_FN_NUM_FLOOR 0x00000200L
+#define SQL_FN_NUM_LOG 0x00000400L
+#define SQL_FN_NUM_MOD 0x00000800L
+#define SQL_FN_NUM_SIGN 0x00001000L
+#define SQL_FN_NUM_SIN 0x00002000L
+#define SQL_FN_NUM_SQRT 0x00004000L
+#define SQL_FN_NUM_TAN 0x00008000L
+#define SQL_FN_NUM_PI 0x00010000L
+#define SQL_FN_NUM_RAND 0x00020000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_NUM_DEGREES 0x00040000L
+#define SQL_FN_NUM_LOG10 0x00080000L
+#define SQL_FN_NUM_POWER 0x00100000L
+#define SQL_FN_NUM_RADIANS 0x00200000L
+#define SQL_FN_NUM_ROUND 0x00400000L
+#define SQL_FN_NUM_TRUNCATE 0x00800000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TIMEDATE_FUNCTIONS functions */
+
+#define SQL_FN_TD_NOW 0x00000001L
+#define SQL_FN_TD_CURDATE 0x00000002L
+#define SQL_FN_TD_DAYOFMONTH 0x00000004L
+#define SQL_FN_TD_DAYOFWEEK 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR 0x00000010L
+#define SQL_FN_TD_MONTH 0x00000020L
+#define SQL_FN_TD_QUARTER 0x00000040L
+#define SQL_FN_TD_WEEK 0x00000080L
+#define SQL_FN_TD_YEAR 0x00000100L
+#define SQL_FN_TD_CURTIME 0x00000200L
+#define SQL_FN_TD_HOUR 0x00000400L
+#define SQL_FN_TD_MINUTE 0x00000800L
+#define SQL_FN_TD_SECOND 0x00001000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
+#define SQL_FN_TD_DAYNAME 0x00008000L
+#define SQL_FN_TD_MONTHNAME 0x00010000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SYSTEM_FUNCTIONS functions */
+
+#define SQL_FN_SYS_USERNAME 0x00000001L
+#define SQL_FN_SYS_DBNAME 0x00000002L
+#define SQL_FN_SYS_IFNULL 0x00000004L
+
+/* SQL_TIMEDATE_ADD_INTERVALS and SQL_TIMEDATE_DIFF_INTERVALS functions */
+
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TSI_FRAC_SECOND 0x00000001L
+#define SQL_FN_TSI_SECOND 0x00000002L
+#define SQL_FN_TSI_MINUTE 0x00000004L
+#define SQL_FN_TSI_HOUR 0x00000008L
+#define SQL_FN_TSI_DAY 0x00000010L
+#define SQL_FN_TSI_WEEK 0x00000020L
+#define SQL_FN_TSI_MONTH 0x00000040L
+#define SQL_FN_TSI_QUARTER 0x00000080L
+#define SQL_FN_TSI_YEAR 0x00000100L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_ODBC_API_CONFORMANCE values */
+
+#define SQL_OAC_NONE 0x0000
+#define SQL_OAC_LEVEL1 0x0001
+#define SQL_OAC_LEVEL2 0x0002
+
+/* SQL_ODBC_SAG_CLI_CONFORMANCE values */
+
+#define SQL_OSCC_NOT_COMPLIANT 0x0000
+#define SQL_OSCC_COMPLIANT 0x0001
+
+/* SQL_ODBC_SQL_CONFORMANCE values */
+
+#define SQL_OSC_MINIMUM 0x0000
+#define SQL_OSC_CORE 0x0001
+#define SQL_OSC_EXTENDED 0x0002
+
+/* SQL_CONCAT_NULL_BEHAVIOR values */
+
+#define SQL_CB_NULL 0x0000
+#define SQL_CB_NON_NULL 0x0001
+
+/* SQL_CURSOR_COMMIT_BEHAVIOR and SQL_CURSOR_ROLLBACK_BEHAVIOR values */
+
+#define SQL_CB_DELETE 0x0000
+#define SQL_CB_CLOSE 0x0001
+#define SQL_CB_PRESERVE 0x0002
+
+/* SQL_IDENTIFIER_CASE values */
+
+#define SQL_IC_UPPER 0x0001
+#define SQL_IC_LOWER 0x0002
+#define SQL_IC_SENSITIVE 0x0003
+#define SQL_IC_MIXED 0x0004
+
+/* SQL_TXN_CAPABLE values */
+
+#define SQL_TC_NONE 0x0000
+#define SQL_TC_DML 0x0001
+#define SQL_TC_ALL 0x0002
+#if (ODBCVER >= 0x0200)
+#define SQL_TC_DDL_COMMIT 0x0003
+#define SQL_TC_DDL_IGNORE 0x0004
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_OPTIONS masks */
+
+#define SQL_SO_FORWARD_ONLY 0x00000001L
+#define SQL_SO_KEYSET_DRIVEN 0x00000002L
+#define SQL_SO_DYNAMIC 0x00000004L
+#define SQL_SO_MIXED 0x00000008L
+#if (ODBCVER >= 0x0200)
+#define SQL_SO_STATIC 0x00000010L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_CONCURRENCY masks */
+
+#define SQL_SCCO_READ_ONLY 0x00000001L
+#define SQL_SCCO_LOCK 0x00000002L
+#define SQL_SCCO_OPT_ROWVER 0x00000004L
+#define SQL_SCCO_OPT_VALUES 0x00000008L
+
+/* SQL_FETCH_DIRECTION masks */
+
+#define SQL_FD_FETCH_NEXT 0x00000001L
+#define SQL_FD_FETCH_FIRST 0x00000002L
+#define SQL_FD_FETCH_LAST 0x00000004L
+#define SQL_FD_FETCH_PRIOR 0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE 0x00000010L
+#define SQL_FD_FETCH_RELATIVE 0x00000020L
+#define SQL_FD_FETCH_RESUME 0x00000040L
+#if (ODBCVER >= 0x0200)
+#define SQL_FD_FETCH_BOOKMARK 0x00000080L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TXN_ISOLATION_OPTION masks */
+
+#define SQL_TXN_READ_UNCOMMITTED 0x00000001L
+#define SQL_TXN_READ_COMMITTED 0x00000002L
+#define SQL_TXN_REPEATABLE_READ 0x00000004L
+#define SQL_TXN_SERIALIZABLE 0x00000008L
+#define SQL_TXN_VERSIONING 0x00000010L
+
+/* SQL_CORRELATION_NAME values */
+
+#define SQL_CN_NONE 0x0000
+#define SQL_CN_DIFFERENT 0x0001
+#define SQL_CN_ANY 0x0002
+
+/* SQL_NON_NULLABLE_COLUMNS values */
+
+#define SQL_NNC_NULL 0x0000
+#define SQL_NNC_NON_NULL 0x0001
+
+#if (ODBCVER >= 0x0200)
+/* SQL_NULL_COLLATION values */
+
+#define SQL_NC_HIGH 0x0000
+#define SQL_NC_LOW 0x0001
+#define SQL_NC_START 0x0002
+#define SQL_NC_END 0x0004
+
+/* SQL_FILE_USAGE values */
+
+#define SQL_FILE_NOT_SUPPORTED 0x0000
+#define SQL_FILE_TABLE 0x0001
+#define SQL_FILE_QUALIFIER 0x0002
+
+/* SQL_GETDATA_EXTENSIONS values */
+
+#define SQL_GD_ANY_COLUMN 0x00000001L
+#define SQL_GD_ANY_ORDER 0x00000002L
+#define SQL_GD_BLOCK 0x00000004L
+#define SQL_GD_BOUND 0x00000008L
+
+/* SQL_ALTER_TABLE values */
+
+#define SQL_AT_ADD_COLUMN 0x00000001L
+#define SQL_AT_DROP_COLUMN 0x00000002L
+
+/* SQL_POSITIONED_STATEMENTS masks */
+
+#define SQL_PS_POSITIONED_DELETE 0x00000001L
+#define SQL_PS_POSITIONED_UPDATE 0x00000002L
+#define SQL_PS_SELECT_FOR_UPDATE 0x00000004L
+
+/* SQL_GROUP_BY values */
+
+#define SQL_GB_NOT_SUPPORTED 0x0000
+#define SQL_GB_GROUP_BY_EQUALS_SELECT 0x0001
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT 0x0002
+#define SQL_GB_NO_RELATION 0x0003
+
+/* SQL_OWNER_USAGE masks */
+
+#define SQL_OU_DML_STATEMENTS 0x00000001L
+#define SQL_OU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_OU_TABLE_DEFINITION 0x00000004L
+#define SQL_OU_INDEX_DEFINITION 0x00000008L
+#define SQL_OU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_QUALIFIER_USAGE masks */
+
+#define SQL_QU_DML_STATEMENTS 0x00000001L
+#define SQL_QU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_QU_TABLE_DEFINITION 0x00000004L
+#define SQL_QU_INDEX_DEFINITION 0x00000008L
+#define SQL_QU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_SUBQUERIES masks */
+
+#define SQL_SQ_COMPARISON 0x00000001L
+#define SQL_SQ_EXISTS 0x00000002L
+#define SQL_SQ_IN 0x00000004L
+#define SQL_SQ_QUANTIFIED 0x00000008L
+#define SQL_SQ_CORRELATED_SUBQUERIES 0x00000010L
+
+/* SQL_UNION masks */
+
+#define SQL_U_UNION 0x00000001L
+#define SQL_U_UNION_ALL 0x00000002L
+
+/* SQL_BOOKMARK_PERSISTENCE values */
+
+#define SQL_BP_CLOSE 0x00000001L
+#define SQL_BP_DELETE 0x00000002L
+#define SQL_BP_DROP 0x00000004L
+#define SQL_BP_TRANSACTION 0x00000008L
+#define SQL_BP_UPDATE 0x00000010L
+#define SQL_BP_OTHER_HSTMT 0x00000020L
+#define SQL_BP_SCROLL 0x00000040L
+
+/* SQL_STATIC_SENSITIVITY values */
+
+#define SQL_SS_ADDITIONS 0x00000001L
+#define SQL_SS_DELETIONS 0x00000002L
+#define SQL_SS_UPDATES 0x00000004L
+
+/* SQL_LOCK_TYPESL masks */
+
+#define SQL_LCK_NO_CHANGE 0x00000001L
+#define SQL_LCK_EXCLUSIVE 0x00000002L
+#define SQL_LCK_UNLOCK 0x00000004L
+
+/* SQL_POS_OPERATIONS masks */
+
+#define SQL_POS_POSITION 0x00000001L
+#define SQL_POS_REFRESH 0x00000002L
+#define SQL_POS_UPDATE 0x00000004L
+#define SQL_POS_DELETE 0x00000008L
+#define SQL_POS_ADD 0x00000010L
+
+/* SQL_QUALIFIER_LOCATION values */
+
+#define SQL_QL_START 0x0001L
+#define SQL_QL_END 0x0002L
+
+/* SQL_OJ_CAPABILITIES values */
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT 0x00000001L
+#define SQL_OJ_RIGHT 0x00000002L
+#define SQL_OJ_FULL 0x00000004L
+#define SQL_OJ_NESTED 0x00000008L
+#define SQL_OJ_NOT_ORDERED 0x00000010L
+#define SQL_OJ_INNER 0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
+#endif /* ODBCVER >= 0x0201 */
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLGetStmtOption/SQLSetStmtOption */
+#define SQL_QUERY_TIMEOUT 0
+#define SQL_MAX_ROWS 1
+#define SQL_NOSCAN 2
+#define SQL_MAX_LENGTH 3
+#define SQL_ASYNC_ENABLE 4
+#define SQL_BIND_TYPE 5
+#if (ODBCVER >= 0x0200)
+#define SQL_CURSOR_TYPE 6
+#define SQL_CONCURRENCY 7
+#define SQL_KEYSET_SIZE 8
+#define SQL_ROWSET_SIZE 9
+#define SQL_SIMULATE_CURSOR 10
+#define SQL_RETRIEVE_DATA 11
+#define SQL_USE_BOOKMARKS 12
+#define SQL_GET_BOOKMARK 13 /* GetStmtOption Only */
+#define SQL_ROW_NUMBER 14 /* GetStmtOption Only */
+#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER
+#else
+#define SQL_STMT_OPT_MAX SQL_BIND_TYPE
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
+
+
+/* SQL_QUERY_TIMEOUT options */
+#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
+
+/* SQL_MAX_ROWS options */
+#define SQL_MAX_ROWS_DEFAULT 0UL
+
+/* SQL_NOSCAN options */
+#define SQL_NOSCAN_OFF 0UL /* 1.0 FALSE */
+#define SQL_NOSCAN_ON 1UL /* 1.0 TRUE */
+#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
+
+/* SQL_MAX_LENGTH options */
+#define SQL_MAX_LENGTH_DEFAULT 0UL
+
+/* SQL_ASYNC_ENABLE options */
+#define SQL_ASYNC_ENABLE_OFF 0UL
+#define SQL_ASYNC_ENABLE_ON 1UL
+#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF
+
+/* SQL_BIND_TYPE options */
+#define SQL_BIND_BY_COLUMN 0UL
+#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN /* Default value */
+
+/* SQL_CONCURRENCY options */
+#define SQL_CONCUR_READ_ONLY 1
+#define SQL_CONCUR_LOCK 2
+#define SQL_CONCUR_ROWVER 3
+#define SQL_CONCUR_VALUES 4
+#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY /* Default value
+*/
+
+#if (ODBCVER >= 0x0200)
+/* SQL_CURSOR_TYPE options */
+#define SQL_CURSOR_FORWARD_ONLY 0UL
+#define SQL_CURSOR_KEYSET_DRIVEN 1UL
+#define SQL_CURSOR_DYNAMIC 2UL
+#define SQL_CURSOR_STATIC 3UL
+#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY /* Default value */
+
+/* SQL_ROWSET_SIZE options */
+#define SQL_ROWSET_SIZE_DEFAULT 1UL
+
+/* SQL_KEYSET_SIZE options */
+#define SQL_KEYSET_SIZE_DEFAULT 0UL
+
+/* SQL_SIMULATE_CURSOR options */
+#define SQL_SC_NON_UNIQUE 0UL
+#define SQL_SC_TRY_UNIQUE 1UL
+#define SQL_SC_UNIQUE 2UL
+
+/* SQL_RETRIEVE_DATA options */
+#define SQL_RD_OFF 0UL
+#define SQL_RD_ON 1UL
+#define SQL_RD_DEFAULT SQL_RD_ON
+
+/* SQL_USE_BOOKMARKS options */
+#define SQL_UB_OFF 0UL
+#define SQL_UB_ON 1UL
+#define SQL_UB_DEFAULT SQL_UB_OFF
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLSetConnectOption/SQLGetConnectOption */
+#define SQL_ACCESS_MODE 101
+#define SQL_AUTOCOMMIT 102
+#define SQL_LOGIN_TIMEOUT 103
+#define SQL_OPT_TRACE 104
+#define SQL_OPT_TRACEFILE 105
+#define SQL_TRANSLATE_DLL 106
+#define SQL_TRANSLATE_OPTION 107
+#define SQL_TXN_ISOLATION 108
+#define SQL_CURRENT_QUALIFIER 109
+#if (ODBCVER >= 0x0200)
+#define SQL_ODBC_CURSORS 110
+#define SQL_QUIET_MODE 111
+#define SQL_PACKET_SIZE 112
+#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE
+#else
+#define SQL_CONN_OPT_MAX SQL_CURRENT_QUALIFIER
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_CONNECT_OPT_DRVR_START 1000
+
+#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
+
+/* SQL_ACCESS_MODE options */
+#define SQL_MODE_READ_WRITE 0UL
+#define SQL_MODE_READ_ONLY 1UL
+#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE
+
+/* SQL_AUTOCOMMIT options */
+#define SQL_AUTOCOMMIT_OFF 0UL
+#define SQL_AUTOCOMMIT_ON 1UL
+#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
+
+/* SQL_LOGIN_TIMEOUT options */
+#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
+
+/* SQL_OPT_TRACE options */
+#define SQL_OPT_TRACE_OFF 0UL
+#define SQL_OPT_TRACE_ON 1UL
+#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG"
+
+#if (ODBCVER >= 0x0200)
+/* SQL_ODBC_CURSORS options */
+#define SQL_CUR_USE_IF_NEEDED 0UL
+#define SQL_CUR_USE_ODBC 1UL
+#define SQL_CUR_USE_DRIVER 2UL
+#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER
+#endif /* ODBCVER >= 0x0200 */
+
+/* Column types and scopes in SQLSpecialColumns. */
+#define SQL_BEST_ROWID 1
+#define SQL_ROWVER 2
+
+#define SQL_SCOPE_CURROW 0
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCOPE_SESSION 2
+
+/* Defines for SQLStatistics */
+#define SQL_INDEX_UNIQUE 0
+#define SQL_INDEX_ALL 1
+
+#define SQL_QUICK 0
+#define SQL_ENSURE 1
+
+/* Defines for SQLStatistics (returned in the result set) */
+#define SQL_TABLE_STAT 0
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED 2
+#define SQL_INDEX_OTHER 3
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLSpecialColumns (returned in the result set) */
+#define SQL_PC_UNKNOWN 0
+#define SQL_PC_NOT_PSEUDO 1
+#define SQL_PC_PSEUDO 2
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLDataSources "fDirection" values, also used on SQLExtendedFetch() */
+#define SQL_FETCH_NEXT 1
+#define SQL_FETCH_FIRST 2
+
+#ifndef RC_INVOKED
+
+#if (ODBCVER >= 0x0200)
+/* This define is too large for RC */
+#define SQL_ODBC_KEYWORDS \
+"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
+"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
+"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
+"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
+"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
+"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
+"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
+"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
+"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
+"DISTINCT,DOMAIN,DOUBLE,DROP,"\
+"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
+"EXISTS,EXTERNAL,EXTRACT,"\
+"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
+"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
+"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
+"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
+"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
+"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
+"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
+"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
+"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
+"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
+"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
+"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
+"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
+"SUBSTRING,SUM,SYSTEM_USER,"\
+"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
+"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
+"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
+"VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+SQLRETURN SQL_API SQLColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLGetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetData(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLGetFunctions(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fFunction,
+ SQLUSMALLINT FAR *pfExists);
+
+SQLRETURN SQL_API SQLGetInfo(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fInfoType,
+ SQLPOINTER rgbInfoValue,
+ SQLSMALLINT cbInfoValueMax,
+ SQLSMALLINT FAR *pcbInfoValue);
+
+SQLRETURN SQL_API SQLGetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetTypeInfo(
+ SQLHSTMT hstmt,
+ SQLSMALLINT fSqlType);
+
+SQLRETURN SQL_API SQLParamData(
+ SQLHSTMT hstmt,
+ SQLPOINTER FAR *prgbValue);
+
+SQLRETURN SQL_API SQLPutData(
+ SQLHSTMT hstmt,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValue);
+
+SQLRETURN SQL_API SQLSetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSpecialColumns(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fColType,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fScope,
+ SQLUSMALLINT fNullable);
+
+SQLRETURN SQL_API SQLStatistics(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fUnique,
+ SQLUSMALLINT fAccuracy);
+
+SQLRETURN SQL_API SQLTables(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szTableType,
+ SQLSMALLINT cbTableType);
+#endif /* RC_INVOKED */
+
+
+/* Level 2 Functions */
+
+
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDataSources(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSNMax,
+ SQLSMALLINT FAR *pcbDSN,
+ SQLCHAR FAR *szDescription,
+ SQLSMALLINT cbDescriptionMax,
+ SQLSMALLINT FAR *pcbDescription);
+
+
+#endif /* RC_INVOKED */
+
+/* Deprecated defines from prior versions of ODBC */
+#define SQL_DATABASE_NAME 16 /* Use SQLGetConnectOption/SQL_CURRENT_QUALIFIER */
+#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR
+#define SQL_FETCH_PREV SQL_FETCH_PRIOR
+#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER
+#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER
+#define SQL_CC_DELETE SQL_CB_DELETE
+#define SQL_CR_DELETE SQL_CB_DELETE
+#define SQL_CC_CLOSE SQL_CB_CLOSE
+#define SQL_CR_CLOSE SQL_CB_CLOSE
+#define SQL_CC_PRESERVE SQL_CB_PRESERVE
+#define SQL_CR_PRESERVE SQL_CB_PRESERVE
+#define SQL_FETCH_RESUME 7 /* Not supported by 2.0 drivers */
+#define SQL_SCROLL_FORWARD_ONLY 0L /*-SQL_CURSOR_FORWARD_ONLY */
+#define SQL_SCROLL_KEYSET_DRIVEN (-1L) /*-SQL_CURSOR_KEYSET_DRIVEN */
+#define SQL_SCROLL_DYNAMIC (-2L) /*-SQL_CURSOR_DYNAMIC */
+#if (ODBCVER >= 0x0200)
+#define SQL_SCROLL_STATIC (-3L) /*-SQL_CURSOR_STATIC */
+#define SQL_PC_NON_PSEUDO SQL_PC_NOT_PSEUDO
+#endif /* ODBCVER >= 0x0200 */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetScrollOptions( /* Use SQLSetStmtOptions */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fConcurrency,
+ SQLINTEGER crowKeyset,
+ SQLUSMALLINT crowRowset);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* #ifndef __SQL */
diff --git a/public/sdk/inc/mfc42/sqlext.h b/public/sdk/inc/mfc42/sqlext.h
new file mode 100644
index 000000000..ee02cafaf
--- /dev/null
+++ b/public/sdk/inc/mfc42/sqlext.h
@@ -0,0 +1,293 @@
+/*****************************************************************
+** SQLEXT.H - This is the include for applications using
+** the Microsoft SQL Extensions
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 10/27/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLEXT
+#define __SQLEXT
+
+#ifndef __SQL
+#include "sql.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* SQLBindParameter extensions */
+#if (ODBCVER >= 0x0200)
+#define SQL_DEFAULT_PARAM (-5)
+#define SQL_IGNORE (-6)
+#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Defines for SQLSetPos */
+#define SQL_ENTIRE_ROWSET 0
+
+/* Operations in SQLSetPos */
+#define SQL_POSITION 0 /* 1.0 FALSE */
+#define SQL_REFRESH 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_UPDATE 2
+#define SQL_DELETE 3
+#define SQL_ADD 4
+#endif /* ODBCVER >= 0x0200 */
+
+/* Lock options in SQLSetPos */
+#define SQL_LOCK_NO_CHANGE 0 /* 1.0 FALSE */
+#define SQL_LOCK_EXCLUSIVE 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_LOCK_UNLOCK 2
+
+/* Macros for SQLSetPos */
+#define SQL_POSITION_TO(hstmt,irow) SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
+#define SQL_REFRESH_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+
+/* Options for SQLDriverConnect */
+#define SQL_DRIVER_NOPROMPT 0
+#define SQL_DRIVER_COMPLETE 1
+#define SQL_DRIVER_PROMPT 2
+#define SQL_DRIVER_COMPLETE_REQUIRED 3
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDriverConnect(
+ SQLHDBC hdbc,
+ SQLHWND hwnd,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut,
+ SQLUSMALLINT fDriverCompletion);
+
+#endif /* RC_INVOKED */
+
+/* Level 2 Functions */
+
+/* SQLExtendedFetch "fFetchType" values */
+#ifndef SQL_FETCH_NEXT
+#define SQL_FETCH_NEXT 1
+#endif
+#ifndef SQL_FETCH_FIRST
+#define SQL_FETCH_FIRST 2
+#endif
+#define SQL_FETCH_LAST 3
+#define SQL_FETCH_PRIOR 4
+#define SQL_FETCH_ABSOLUTE 5
+#define SQL_FETCH_RELATIVE 6
+#if (ODBCVER >= 0x0200)
+#define SQL_FETCH_BOOKMARK 8
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLExtendedFetch "rgfRowStatus" element values */
+#define SQL_ROW_SUCCESS 0
+#define SQL_ROW_DELETED 1
+#define SQL_ROW_UPDATED 2
+#define SQL_ROW_NOROW 3
+#if (ODBCVER >= 0x0200)
+#define SQL_ROW_ADDED 4
+#define SQL_ROW_ERROR 5
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLForeignKeys (returned in result set) */
+#define SQL_CASCADE 0
+#define SQL_RESTRICT 1
+#define SQL_SET_NULL 2
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION 3
+#define SQL_SET_DEFAULT 4
+#endif
+
+/* Defines for SQLBindParameter and
+ SQLProcedureColumns (returned in the result set) */
+#define SQL_PARAM_TYPE_UNKNOWN 0
+#define SQL_PARAM_INPUT 1
+#define SQL_PARAM_INPUT_OUTPUT 2
+#define SQL_RESULT_COL 3
+#if (ODBCVER >= 0x0200)
+#define SQL_PARAM_OUTPUT 4
+#define SQL_RETURN_VALUE 5
+#endif /* ODBCVER >= 0x0200 */
+
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLProcedures (returned in the result set) */
+#define SQL_PT_UNKNOWN 0
+#define SQL_PT_PROCEDURE 1
+#define SQL_PT_FUNCTION 2
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines used by Driver Manager when mapping SQLSetParam to SQLBindParameter
+*/
+#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX (-1L)
+
+
+#ifndef RC_INVOKED
+
+/* Level 2 Prototypes */
+SQLRETURN SQL_API SQLBrowseConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut);
+
+SQLRETURN SQL_API SQLColumnPrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLDescribeParam(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbParamDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLExtendedFetch(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fFetchType,
+ SQLINTEGER irow,
+ SQLUINTEGER FAR *pcrow,
+ SQLUSMALLINT FAR *rgfRowStatus);
+
+SQLRETURN SQL_API SQLForeignKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szPkCatalogName,
+ SQLSMALLINT cbPkCatalogName,
+ SQLCHAR FAR *szPkSchemaName,
+ SQLSMALLINT cbPkSchemaName,
+ SQLCHAR FAR *szPkTableName,
+ SQLSMALLINT cbPkTableName,
+ SQLCHAR FAR *szFkCatalogName,
+ SQLSMALLINT cbFkCatalogName,
+ SQLCHAR FAR *szFkSchemaName,
+ SQLSMALLINT cbFkSchemaName,
+ SQLCHAR FAR *szFkTableName,
+ SQLSMALLINT cbFkTableName);
+
+SQLRETURN SQL_API SQLMoreResults(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLNativeSql(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szSqlStrIn,
+ SQLINTEGER cbSqlStrIn,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStrMax,
+ SQLINTEGER FAR *pcbSqlStr);
+
+SQLRETURN SQL_API SQLNumParams(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pcpar);
+
+SQLRETURN SQL_API SQLParamOptions(
+ SQLHSTMT hstmt,
+ SQLUINTEGER crow,
+ SQLUINTEGER FAR *pirow);
+
+SQLRETURN SQL_API SQLPrimaryKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+SQLRETURN SQL_API SQLProcedureColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLProcedures(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName);
+
+SQLRETURN SQL_API SQLSetPos(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT irow,
+ SQLUSMALLINT fOption,
+ SQLUSMALLINT fLock);
+
+SQLRETURN SQL_API SQLTablePrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+/* SDK 2.0 Additions */
+
+#if (ODBCVER >= 0x0200)
+SQLRETURN SQL_API SQLDrivers(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDriverDesc,
+ SQLSMALLINT cbDriverDescMax,
+ SQLSMALLINT FAR *pcbDriverDesc,
+ SQLCHAR FAR *szDriverAttributes,
+ SQLSMALLINT cbDrvrAttrMax,
+ SQLSMALLINT FAR *pcbDrvrAttr);
+
+SQLRETURN SQL_API SQLBindParameter(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fParamType,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbColDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+#endif /* ODBCVER >= 0x0200 */
+
+#endif /* RC_INVOKED */
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* __SQLEXT */
diff --git a/public/sdk/inc/mfc42/sqltypes.h b/public/sdk/inc/mfc42/sqltypes.h
new file mode 100644
index 000000000..ae9d39e2c
--- /dev/null
+++ b/public/sdk/inc/mfc42/sqltypes.h
@@ -0,0 +1,138 @@
+/*********************************************************************
+** SQLTYPES.H - This file defines the types used in ODBC
+**
+** (C) Copyright 1995 By Microsoft Corp.
+**
+** Created 4/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLTYPES
+#define __SQLTYPES
+
+/* if ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+/* environment specific definitions */
+#ifndef EXPORT
+#define EXPORT _export
+#endif
+
+/* define WINDOWS */
+/* _WINDOWS_ is defined in windows.h for 32 bit */
+/* _INC_WINDOWS is defined in windows.h for 16 bit */
+#if (defined(_WINDOWS_) || defined(_INC_WINDOWS)) && !defined(WINDOWS)
+#define WINDOWS
+#endif
+
+#ifdef WIN32
+#define SQL_API __stdcall
+#elif defined(WINDOWS)
+#define SQL_API EXPORT CALLBACK
+#else
+#define SQL_API
+#endif
+
+
+#ifndef RC_INVOKED
+
+#if !defined(WINDOWS) && !defined(FAR)
+#define FAR
+#endif
+
+/* SQL portable types for C */
+typedef unsigned char UCHAR;
+typedef signed char SCHAR;
+typedef long int SDWORD;
+typedef short int SWORD;
+typedef unsigned long int UDWORD;
+typedef unsigned short int UWORD;
+
+#if (ODBCVER >= 0x0200)
+typedef signed long SLONG;
+typedef signed short SSHORT;
+typedef unsigned long ULONG;
+typedef unsigned short USHORT;
+#endif /* ODBCVER >= 0x0200 */
+typedef double SDOUBLE;
+#if defined(WIN32)
+typedef double LDOUBLE; /* long double == short double in Win32 */
+#elif defined(WINDOWS)
+typedef long double LDOUBLE;
+#else
+typedef double LDOUBLE;
+#endif
+typedef float SFLOAT;
+
+typedef void FAR * PTR;
+
+typedef void FAR * HENV;
+typedef void FAR * HDBC;
+typedef void FAR * HSTMT;
+
+typedef signed short RETCODE;
+
+typedef UCHAR SQLCHAR;
+typedef SCHAR SQLSCHAR;
+typedef SDWORD SQLINTEGER;
+typedef SWORD SQLSMALLINT;
+typedef UDWORD SQLUINTEGER;
+typedef UWORD SQLUSMALLINT;
+
+typedef void FAR * SQLPOINTER;
+
+#if defined(WINDOWS) || defined(WIN32)
+typedef HENV SQLHENV;
+typedef HDBC SQLHDBC;
+typedef HSTMT SQLHSTMT;
+#else
+typedef SQLINTEGER SQLHENV;
+typedef SQLINTEGER SQLHDBC;
+typedef SQLINTEGER SQLHSTMT;
+#endif
+
+typedef SQLSMALLINT SQLRETURN;
+
+#if defined(WINDOWS) || defined(WIN32) || defined(OS2)
+typedef HWND SQLHWND;
+#elif defined (UNIX)
+typedef Widget SQLHWND;
+#else
+/* placehold for future O/S GUI window handle definition */
+typedef SQLPOINTER SQLHWND;
+#endif
+
+/* transfer types for DATE, TIME, TIMESTAMP */
+typedef struct tagDATE_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+} DATE_STRUCT;
+
+typedef struct tagTIME_STRUCT
+{
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+} TIME_STRUCT;
+
+typedef struct tagTIMESTAMP_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+ SQLUINTEGER fraction;
+} TIMESTAMP_STRUCT;
+
+#if (ODBCVER >= 0x0200)
+typedef unsigned long int BOOKMARK;
+#endif /* ODBCVER >= 0x0200 */
+
+#endif
+
+#endif /* #ifndef __SQLTYPES */
diff --git a/public/sdk/inc/mfc42/winres.h b/public/sdk/inc/mfc42/winres.h
new file mode 100644
index 000000000..910df28a9
--- /dev/null
+++ b/public/sdk/inc/mfc42/winres.h
@@ -0,0 +1,597 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// winres.h - Windows resource definitions
+// extracted from WINUSER.H and COMMCTRL.H
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#define VS_VERSION_INFO 1
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400 // default to Windows Version 4.0
+#endif
+
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+
+#if (WINVER >= 0x0400)
+#define OCR_APPSTARTING 32650
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#endif
+
+#define WS_OVERLAPPED 0x00000000L
+#define WS_POPUP 0x80000000L
+#define WS_CHILD 0x40000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define WS_CLIPCHILDREN 0x02000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_DISABLED 0x08000000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_MAXIMIZE 0x01000000L
+#define WS_CAPTION 0x00C00000L
+#define WS_BORDER 0x00800000L
+#define WS_DLGFRAME 0x00400000L
+#define WS_VSCROLL 0x00200000L
+#define WS_HSCROLL 0x00100000L
+#define WS_SYSMENU 0x00080000L
+#define WS_THICKFRAME 0x00040000L
+#define WS_MINIMIZEBOX 0x00020000L
+#define WS_MAXIMIZEBOX 0x00010000L
+#define WS_GROUP 0x00020000L
+#define WS_TABSTOP 0x00010000L
+
+// other aliases
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+
+#define WS_EX_DLGMODALFRAME 0x00000001L
+#define WS_EX_NOPARENTNOTIFY 0x00000004L
+#define WS_EX_TOPMOST 0x00000008L
+#define WS_EX_ACCEPTFILES 0x00000010L
+#define WS_EX_TRANSPARENT 0x00000020L
+#if (WINVER >= 0x0400)
+#define WS_EX_MDICHILD 0x00000040L
+#define WS_EX_TOOLWINDOW 0x00000080L
+#define WS_EX_WINDOWEDGE 0x00000100L
+#define WS_EX_CLIENTEDGE 0x00000200L
+#define WS_EX_CONTEXTHELP 0x00000400L
+
+#define WS_EX_RIGHT 0x00001000L
+#define WS_EX_LEFT 0x00000000L
+#define WS_EX_RTLREADING 0x00002000L
+#define WS_EX_LTRREADING 0x00000000L
+#define WS_EX_LEFTSCROLLBAR 0x00004000L
+#define WS_EX_RIGHTSCROLLBAR 0x00000000L
+
+#define WS_EX_CONTROLPARENT 0x00010000L
+#define WS_EX_STATICEDGE 0x00020000L
+#define WS_EX_APPWINDOW 0x00040000L
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+#endif
+
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_ESCAPE 0x1B
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+
+#if (WINVER >= 0x0400)
+#define VK_PROCESSKEY 0xE5
+#endif /* WINVER >= 0x0400 */
+
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+
+#define DS_ABSALIGN 0x01L
+#define DS_SYSMODAL 0x02L
+#define DS_LOCALEDIT 0x20L
+#define DS_SETFONT 0x40L
+#define DS_MODALFRAME 0x80L
+#define DS_NOIDLEMSG 0x100L
+#define DS_SETFOREGROUND 0x200L
+
+#ifdef _MAC
+#define DS_WINDOWSUI 0x8000L
+#endif
+
+#if (WINVER >= 0x0400)
+#define DS_3DLOOK 0x0004L
+#define DS_FIXEDSYS 0x0008L
+#define DS_NOFAILCREATE 0x0010L
+#define DS_CONTROL 0x0400L
+#define DS_CENTER 0x0800L
+#define DS_CENTERMOUSE 0x1000L
+#define DS_CONTEXTHELP 0x2000L
+#endif
+
+#define SS_LEFT 0x00000000L
+#define SS_CENTER 0x00000001L
+#define SS_RIGHT 0x00000002L
+#define SS_ICON 0x00000003L
+#define SS_BLACKRECT 0x00000004L
+#define SS_GRAYRECT 0x00000005L
+#define SS_WHITERECT 0x00000006L
+#define SS_BLACKFRAME 0x00000007L
+#define SS_GRAYFRAME 0x00000008L
+#define SS_WHITEFRAME 0x00000009L
+#define SS_SIMPLE 0x0000000BL
+#define SS_LEFTNOWORDWRAP 0x0000000CL
+#define SS_BITMAP 0x0000000EL
+
+#if (WINVER >= 0x0400)
+#define SS_OWNERDRAW 0x0000000DL
+#define SS_ENHMETAFILE 0x0000000FL
+#define SS_ETCHEDHORZ 0x00000010L
+#define SS_ETCHEDVERT 0x00000011L
+#define SS_ETCHEDFRAME 0x00000012L
+#endif
+
+#define SS_NOPREFIX 0x00000080L
+#if (WINVER >= 0x0400)
+#define SS_NOTIFY 0x00000100L
+#endif
+#define SS_CENTERIMAGE 0x00000200L
+#if (WINVER >= 0x0400)
+#define SS_RIGHTJUST 0x00000400L
+#define SS_REALSIZEIMAGE 0x00000800L
+#define SS_SUNKEN 0x00001000L
+#endif
+
+#define BS_PUSHBUTTON 0x00000000L
+#define BS_DEFPUSHBUTTON 0x00000001L
+#define BS_CHECKBOX 0x00000002L
+#define BS_AUTOCHECKBOX 0x00000003L
+#define BS_RADIOBUTTON 0x00000004L
+#define BS_3STATE 0x00000005L
+#define BS_AUTO3STATE 0x00000006L
+#define BS_GROUPBOX 0x00000007L
+#define BS_USERBUTTON 0x00000008L
+#define BS_AUTORADIOBUTTON 0x00000009L
+#define BS_OWNERDRAW 0x0000000BL
+#define BS_LEFTTEXT 0x00000020L
+#if (WINVER >= 0x0400)
+#define BS_TEXT 0x00000000L
+#define BS_ICON 0x00000040L
+#define BS_BITMAP 0x00000080L
+#define BS_LEFT 0x00000100L
+#define BS_RIGHT 0x00000200L
+#define BS_CENTER 0x00000300L
+#define BS_TOP 0x00000400L
+#define BS_BOTTOM 0x00000800L
+#define BS_VCENTER 0x00000C00L
+#define BS_PUSHLIKE 0x00001000L
+#define BS_MULTILINE 0x00002000L
+#define BS_NOTIFY 0x00004000L
+#define BS_FLAT 0x00008000L
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+#endif
+
+#define ES_LEFT 0x00000000L
+#define ES_CENTER 0x00000001L
+#define ES_RIGHT 0x00000002L
+#define ES_MULTILINE 0x00000004L
+#define ES_UPPERCASE 0x00000008L
+#define ES_LOWERCASE 0x00000010L
+#define ES_PASSWORD 0x00000020L
+#define ES_AUTOVSCROLL 0x00000040L
+#define ES_AUTOHSCROLL 0x00000080L
+#define ES_NOHIDESEL 0x00000100L
+#define ES_OEMCONVERT 0x00000400L
+#define ES_READONLY 0x00000800L
+#define ES_WANTRETURN 0x00001000L
+#if (WINVER >= 0x0400)
+#define ES_NUMBER 0x2000L
+#endif
+
+#define SBS_HORZ 0x0000L
+#define SBS_VERT 0x0001L
+#define SBS_TOPALIGN 0x0002L
+#define SBS_LEFTALIGN 0x0002L
+#define SBS_BOTTOMALIGN 0x0004L
+#define SBS_RIGHTALIGN 0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX 0x0008L
+#if (WINVER >= 0x0400)
+#define SBS_SIZEGRIP 0x0010L
+#endif
+
+#define LBS_NOTIFY 0x0001L
+#define LBS_SORT 0x0002L
+#define LBS_NOREDRAW 0x0004L
+#define LBS_MULTIPLESEL 0x0008L
+#define LBS_OWNERDRAWFIXED 0x0010L
+#define LBS_OWNERDRAWVARIABLE 0x0020L
+#define LBS_HASSTRINGS 0x0040L
+#define LBS_USETABSTOPS 0x0080L
+#define LBS_NOINTEGRALHEIGHT 0x0100L
+#define LBS_MULTICOLUMN 0x0200L
+#define LBS_WANTKEYBOARDINPUT 0x0400L
+#define LBS_EXTENDEDSEL 0x0800L
+#define LBS_DISABLENOSCROLL 0x1000L
+#if (WINVER >= 0x0400)
+#define LBS_NOSEL 0x4000L
+#endif
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+#define CBS_SIMPLE 0x0001L
+#define CBS_DROPDOWN 0x0002L
+#define CBS_DROPDOWNLIST 0x0003L
+#define CBS_OWNERDRAWFIXED 0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL 0x0040L
+#define CBS_OEMCONVERT 0x0080L
+#define CBS_SORT 0x0100L
+#define CBS_HASSTRINGS 0x0200L
+#define CBS_NOINTEGRALHEIGHT 0x0400L
+#define CBS_DISABLENOSCROLL 0x0800L
+#if (WINVER >= 0x0400)
+#define CBS_UPPERCASE 0x2000L
+#define CBS_LOWERCASE 0x4000L
+#endif
+
+// operation messages sent to DLGINIT
+#define WM_USER 0x0400
+#define LB_ADDSTRING (WM_USER+1)
+#define CB_ADDSTRING (WM_USER+3)
+
+#if (WINVER >= 0x0400)
+
+#define HDS_HORZ 0x00000000
+#define HDS_BUTTONS 0x00000002
+#define HDS_HIDDEN 0x00000008
+
+#define TTS_ALWAYSTIP 0x01
+#define TTS_NOPREFIX 0x02
+
+#define SBARS_SIZEGRIP 0x0100
+
+#define TBS_AUTOTICKS 0x0001
+#define TBS_VERT 0x0002
+#define TBS_HORZ 0x0000
+#define TBS_TOP 0x0004
+#define TBS_BOTTOM 0x0000
+#define TBS_LEFT 0x0004
+#define TBS_RIGHT 0x0000
+#define TBS_BOTH 0x0008
+#define TBS_NOTICKS 0x0010
+#define TBS_ENABLESELRANGE 0x0020
+#define TBS_FIXEDLENGTH 0x0040
+#define TBS_NOTHUMB 0x0080
+
+#define UDS_WRAP 0x0001
+#define UDS_SETBUDDYINT 0x0002
+#define UDS_ALIGNRIGHT 0x0004
+#define UDS_ALIGNLEFT 0x0008
+#define UDS_AUTOBUDDY 0x0010
+#define UDS_ARROWKEYS 0x0020
+#define UDS_HORZ 0x0040
+#define UDS_NOTHOUSANDS 0x0080
+
+#define CCS_TOP 0x00000001L
+#define CCS_NOMOVEY 0x00000002L
+#define CCS_BOTTOM 0x00000003L
+#define CCS_NORESIZE 0x00000004L
+#define CCS_NOPARENTALIGN 0x00000008L
+#define CCS_NOHILITE 0x00000010L
+#define CCS_ADJUSTABLE 0x00000020L
+#define CCS_NODIVIDER 0x00000040L
+
+#define LVS_ICON 0x0000
+#define LVS_REPORT 0x0001
+#define LVS_SMALLICON 0x0002
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LVS_SINGLESEL 0x0004
+#define LVS_SHOWSELALWAYS 0x0008
+#define LVS_SORTASCENDING 0x0010
+#define LVS_SORTDESCENDING 0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP 0x0080
+#define LVS_AUTOARRANGE 0x0100
+#define LVS_EDITLABELS 0x0200
+#define LVS_NOSCROLL 0x2000
+
+#define LVS_ALIGNTOP 0x0000
+#define LVS_ALIGNLEFT 0x0800
+#define LVS_ALIGNMASK 0x0c00
+
+#define LVS_OWNERDRAWFIXED 0x0400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+
+#define TCS_FORCEICONLEFT 0x0010
+#define TCS_FORCELABELLEFT 0x0020
+#define TCS_SHAREIMAGELISTS 0x0040
+#define TCS_TABS 0x0000
+#define TCS_BUTTONS 0x0100
+#define TCS_SINGLELINE 0x0000
+#define TCS_MULTILINE 0x0200
+#define TCS_RIGHTJUSTIFY 0x0000
+#define TCS_FIXEDWIDTH 0x0400
+#define TCS_RAGGEDRIGHT 0x0800
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+
+#define ACS_CENTER 0x0001
+#define ACS_TRANSPARENT 0x0002
+#define ACS_AUTOPLAY 0x0004
+
+#endif // (WINVER >= 0x0400)
+
+// 32-bit language/sub-language identifiers
+
+#ifndef LANG_NEUTRAL
+// Primary language IDs.
+#define LANG_NEUTRAL 0x00
+
+#define LANG_BULGARIAN 0x02
+#define LANG_CHINESE 0x04
+#define LANG_CROATIAN 0x1a
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_DUTCH 0x13
+#define LANG_ENGLISH 0x09
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_SLOVAK 0x1b
+#define LANG_SLOVENIAN 0x24
+#define LANG_SPANISH 0x0a
+#define LANG_SWEDISH 0x1d
+#define LANG_TURKISH 0x1f
+#endif //!LANG_NEUTRAL
+
+#ifndef SUBLANG_NEUTRAL
+// Sublanguage IDs.
+#define SUBLANG_NEUTRAL 0x00
+#define SUBLANG_DEFAULT 0x01
+#define SUBLANG_SYS_DEFAULT 0x02
+
+#define SUBLANG_CHINESE_TRADITIONAL 0x01
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02
+#define SUBLANG_CHINESE_HONGKONG 0x03
+#define SUBLANG_CHINESE_SINGAPORE 0x04
+#define SUBLANG_DUTCH 0x01
+#define SUBLANG_DUTCH_BELGIAN 0x02
+#define SUBLANG_ENGLISH_US 0x01
+#define SUBLANG_ENGLISH_UK 0x02
+#define SUBLANG_ENGLISH_AUS 0x03
+#define SUBLANG_ENGLISH_CAN 0x04
+#define SUBLANG_ENGLISH_NZ 0x05
+#define SUBLANG_ENGLISH_EIRE 0x06
+#define SUBLANG_FRENCH 0x01
+#define SUBLANG_FRENCH_BELGIAN 0x02
+#define SUBLANG_FRENCH_CANADIAN 0x03
+#define SUBLANG_FRENCH_SWISS 0x04
+#define SUBLANG_GERMAN 0x01
+#define SUBLANG_GERMAN_SWISS 0x02
+#define SUBLANG_GERMAN_AUSTRIAN 0x03
+#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_PORTUGUESE 0x02
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SPANISH_MEXICAN 0x02
+#define SUBLANG_SPANISH_MODERN 0x03
+#endif //!SUBLANG_NEUTRAL
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#if (WINVER >= 0x0400)
+#define IDCLOSE 8
+#define IDHELP 9
+#endif
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1)
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif