summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>1999-04-21 20:32:43 +0000
committerSteve Huston <shuston@riverace.com>1999-04-21 20:32:43 +0000
commitbc0f98c14dd7c47f4e62a88873a2be371859ecc5 (patch)
tree560faeb5617b61465156a1c31b7935f3005a55bd /tests
parent7714fc0f6f7939fdd94c9d67296597411496e6f0 (diff)
downloadATCD-bc0f98c14dd7c47f4e62a88873a2be371859ecc5.tar.gz
ACE test for MFC app to properly initialize ACE DLL
Diffstat (limited to 'tests')
-rw-r--r--tests/ACE_Init_Test.cpp105
-rw-r--r--tests/ACE_Init_Test.dsp145
-rw-r--r--tests/ACE_Init_Test.h51
-rw-r--r--tests/ACE_Init_Test.icobin0 -> 1078 bytes
-rw-r--r--tests/ACE_Init_Test.rc174
-rw-r--r--tests/ACE_Init_Test.rc213
-rw-r--r--tests/ACE_Init_Test.resbin0 -> 2122 bytes
-rw-r--r--tests/ACE_Init_TestDlg.cpp94
-rw-r--r--tests/ACE_Init_TestDlg.h49
-rw-r--r--tests/ACE_Init_Test_Resource.h19
-rw-r--r--tests/ACE_Init_Test_StdAfx.h26
11 files changed, 676 insertions, 0 deletions
diff --git a/tests/ACE_Init_Test.cpp b/tests/ACE_Init_Test.cpp
new file mode 100644
index 00000000000..c430726f91f
--- /dev/null
+++ b/tests/ACE_Init_Test.cpp
@@ -0,0 +1,105 @@
+// $Id$
+//
+// ACE_Init_Test
+//
+// This is a Win32-only test for verifying that the ACE dll initializes itself
+// without having a nonstatic object manager present by way of a console app's
+// main function. It's a MFC dialog app - it pops up a dialog and spawns a
+// thread - the thread will wait 2 seconds and programatically dismiss the
+// dialog box. The main thread waits for the other one to exit, and that's
+// the test. If the ACE DLL doesn't initialize correctly, it will go boom!
+//
+// This test program was initially generated from MSVC AppWizard, then some
+// files were renamed and moved around to fit in with the ACE test directory
+// structure.
+//
+// ACE_Init_Test.cpp : Defines the class behaviors for the application.
+//
+
+#include "ACE_Init_Test_StdAfx.h"
+#include "ACE_Init_Test.h"
+#include "ACE_Init_TestDlg.h"
+#include "ace/Thread_Manager.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+static void * wait_and_kill_dialog (void *pBox);
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestApp
+
+BEGIN_MESSAGE_MAP(CACE_Init_TestApp, CWinApp)
+ //{{AFX_MSG_MAP(CACE_Init_TestApp)
+ // NOTE - the ClassWizard will add and remove mapping macros here.
+ // DO NOT EDIT what you see in these blocks of generated code!
+ //}}AFX_MSG
+ ON_COMMAND(ID_HELP, CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestApp construction
+
+CACE_Init_TestApp::CACE_Init_TestApp()
+{
+ // TODO: add construction code here,
+ // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CACE_Init_TestApp object
+
+CACE_Init_TestApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestApp initialization
+
+BOOL CACE_Init_TestApp::InitInstance()
+{
+ // Standard initialization
+ // If you are not using these features and wish to reduce the size
+ // of your final executable, you should remove from the following
+ // the specific initialization routines you do not need.
+
+ CACE_Init_TestDlg dlg;
+ m_pMainWnd = &dlg;
+ ACE_Thread_Manager::instance()->spawn (wait_and_kill_dialog,
+ m_pMainWnd);
+ int nResponse = dlg.DoModal();
+ if (nResponse == IDOK)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with OK
+ }
+ else if (nResponse == IDCANCEL)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with Cancel
+ }
+
+ ACE_Thread_Manager::instance()->wait();
+
+ // Since the dialog has been closed, return FALSE so that we exit the
+ // application, rather than start the application's message pump.
+ return FALSE;
+}
+
+
+// This function runs in a separate thread - it will wait a couple of seconds
+// and then programatically dismiss the dialog box. If ACE is not properly
+// initialized, we will have crashed before getting here.
+static void *
+wait_and_kill_dialog (void *pBox)
+{
+
+ CACE_Init_TestDlg *pDialog = ACE_reinterpret_cast (CACE_Init_TestDlg *,
+ pBox);
+ ACE_OS::sleep(2);
+ pDialog->EndDialog (IDOK);
+ return 0;
+
+}
diff --git a/tests/ACE_Init_Test.dsp b/tests/ACE_Init_Test.dsp
new file mode 100644
index 00000000000..073174e9b3f
--- /dev/null
+++ b/tests/ACE_Init_Test.dsp
@@ -0,0 +1,145 @@
+# Microsoft Developer Studio Project File - Name="ACE_Init_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=ACE_Init_Test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ACE_Init_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ACE_Init_Test.mak" CFG="ACE_Init_Test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ACE_Init_Test - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "ACE_Init_Test - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ACE_Init_Test - Win32 Release"
+
+# PROP BASE Use_MFC 6
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 6
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
+# ADD LINK32 /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "ACE_Init_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 6
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 6
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL\Debug"
+# PROP Intermediate_Dir ".\DLL\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+# ADD RSC /l 0x409 /fo"./ACE_Init_Test.res" /d "_DEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo /o"./ACE_Init_Test.bsc"
+LINK32=link.exe
+# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib /nologo /subsystem:windows /pdb:"./ACE_Init_Test.pdb" /debug /machine:I386 /out:"./ACE_Init_Test.exe" /pdbtype:sept /libpath:"..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "ACE_Init_Test - Win32 Release"
+# Name "ACE_Init_Test - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test.rc
+
+!IF "$(CFG)" == "ACE_Init_Test - Win32 Release"
+
+!ELSEIF "$(CFG)" == "ACE_Init_Test - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_TestDlg.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test_Resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test_StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_TestDlg.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\ACE_Init_Test.rc2
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tests/ACE_Init_Test.h b/tests/ACE_Init_Test.h
new file mode 100644
index 00000000000..bfe7f784a81
--- /dev/null
+++ b/tests/ACE_Init_Test.h
@@ -0,0 +1,51 @@
+// $Id$
+//
+// ACE_Init_Test.h : main header file for the ACE_INIT_TEST application
+//
+
+#if !defined(AFX_ACE_INIT_TEST_H__64FDC9FE_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)
+#define AFX_ACE_INIT_TEST_H__64FDC9FE_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#ifndef __AFXWIN_H__
+ #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "ACE_Init_Test_Resource.h" // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestApp:
+// See ACE_Init_Test.cpp for the implementation of this class
+//
+
+class CACE_Init_TestApp : public CWinApp
+{
+public:
+ CACE_Init_TestApp();
+
+// Overrides
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CACE_Init_TestApp)
+ public:
+ virtual BOOL InitInstance();
+ //}}AFX_VIRTUAL
+
+// Implementation
+
+ //{{AFX_MSG(CACE_Init_TestApp)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ // DO NOT EDIT what you see in these blocks of generated code !
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_ACE_INIT_TEST_H__64FDC9FE_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)
diff --git a/tests/ACE_Init_Test.ico b/tests/ACE_Init_Test.ico
new file mode 100644
index 00000000000..7eef0bcbe65
--- /dev/null
+++ b/tests/ACE_Init_Test.ico
Binary files differ
diff --git a/tests/ACE_Init_Test.rc b/tests/ACE_Init_Test.rc
new file mode 100644
index 00000000000..c6ab2e54233
--- /dev/null
+++ b/tests/ACE_Init_Test.rc
@@ -0,0 +1,174 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "ACE_Init_Test_Resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+ "#define _AFX_NO_OLE_RESOURCES\r\n"
+ "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+ "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+ "\r\n"
+ "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+ "#ifdef _WIN32\r\n"
+ "LANGUAGE 9, 1\r\n"
+ "#pragma code_page(1252)\r\n"
+ "#endif\r\n"
+ "#include ""res\\ACE_Init_Test.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
+ "#include ""afxres.rc"" // Standard components\r\n"
+ "#endif\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDR_MAINFRAME ICON DISCARDABLE "ACE_Init_Test.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ACE_INIT_TEST_DIALOG DIALOGEX 0, 0, 185, 92
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "ACE_Init_Test"
+FONT 8, "MS Sans Serif"
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,128,7,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,128,23,50,14
+ LTEXT "This box will auto-dismiss.",IDC_STATIC,13,7,113,
+ 8
+END
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0"
+ BEGIN
+ VALUE "CompanyName", "\0"
+ VALUE "FileDescription", "ACE_Init_Test MFC Application\0"
+ VALUE "FileVersion", "1, 0, 0, 1\0"
+ VALUE "InternalName", "ACE_Init_Test\0"
+ VALUE "LegalCopyright", "Copyright (C) 1999\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "ACE_Init_Test.EXE\0"
+ VALUE "ProductName", "ACE_Init_Test Application\0"
+ VALUE "ProductVersion", "1, 0, 0, 1\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+#endif // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_ACE_INIT_TEST_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 178
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 85
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif
+#include "ACE_Init_Test.rc2" // non-Microsoft Visual C++ edited resources
+#include "afxres.rc" // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/tests/ACE_Init_Test.rc2 b/tests/ACE_Init_Test.rc2
new file mode 100644
index 00000000000..91f5498d5c9
--- /dev/null
+++ b/tests/ACE_Init_Test.rc2
@@ -0,0 +1,13 @@
+//
+// ACE_INIT_TEST.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+ #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/tests/ACE_Init_Test.res b/tests/ACE_Init_Test.res
new file mode 100644
index 00000000000..7bfbac8465d
--- /dev/null
+++ b/tests/ACE_Init_Test.res
Binary files differ
diff --git a/tests/ACE_Init_TestDlg.cpp b/tests/ACE_Init_TestDlg.cpp
new file mode 100644
index 00000000000..7251c5dedcc
--- /dev/null
+++ b/tests/ACE_Init_TestDlg.cpp
@@ -0,0 +1,94 @@
+// $Id$
+// ACE_Init_TestDlg.cpp : implementation file
+//
+
+#include "ACE_Init_Test_StdAfx.h"
+#include "ACE_Init_Test.h"
+#include "ACE_Init_TestDlg.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestDlg dialog
+
+CACE_Init_TestDlg::CACE_Init_TestDlg(CWnd* pParent /*=NULL*/)
+ : CDialog(CACE_Init_TestDlg::IDD, pParent)
+{
+ //{{AFX_DATA_INIT(CACE_Init_TestDlg)
+ // NOTE: the ClassWizard will add member initialization here
+ //}}AFX_DATA_INIT
+ // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+}
+
+void CACE_Init_TestDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CACE_Init_TestDlg)
+ // NOTE: the ClassWizard will add DDX and DDV calls here
+ //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CACE_Init_TestDlg, CDialog)
+ //{{AFX_MSG_MAP(CACE_Init_TestDlg)
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestDlg message handlers
+
+BOOL CACE_Init_TestDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // Set the icon for this dialog. The framework does this automatically
+ // when the application's main window is not a dialog
+ SetIcon(m_hIcon, TRUE); // Set big icon
+ SetIcon(m_hIcon, FALSE); // Set small icon
+
+ // TODO: Add extra initialization here
+
+ return TRUE; // return TRUE unless you set the focus to a control
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+// to draw the icon. For MFC applications using the document/view model,
+// this is automatically done for you by the framework.
+
+void CACE_Init_TestDlg::OnPaint()
+{
+ if (IsIconic())
+ {
+ CPaintDC dc(this); // device context for painting
+
+ SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+ // Center icon in client rectangle
+ int cxIcon = GetSystemMetrics(SM_CXICON);
+ int cyIcon = GetSystemMetrics(SM_CYICON);
+ CRect rect;
+ GetClientRect(&rect);
+ int x = (rect.Width() - cxIcon + 1) / 2;
+ int y = (rect.Height() - cyIcon + 1) / 2;
+
+ // Draw the icon
+ dc.DrawIcon(x, y, m_hIcon);
+ }
+ else
+ {
+ CDialog::OnPaint();
+ }
+}
+
+// The system calls this to obtain the cursor to display while the user drags
+// the minimized window.
+HCURSOR CACE_Init_TestDlg::OnQueryDragIcon()
+{
+ return (HCURSOR) m_hIcon;
+}
diff --git a/tests/ACE_Init_TestDlg.h b/tests/ACE_Init_TestDlg.h
new file mode 100644
index 00000000000..af5ae31319d
--- /dev/null
+++ b/tests/ACE_Init_TestDlg.h
@@ -0,0 +1,49 @@
+// $Id$
+// ACE_Init_TestDlg.h : header file
+//
+
+#if !defined(AFX_ACE_INIT_TESTDLG_H__64FDCA00_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)
+#define AFX_ACE_INIT_TESTDLG_H__64FDCA00_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+/////////////////////////////////////////////////////////////////////////////
+// CACE_Init_TestDlg dialog
+
+class CACE_Init_TestDlg : public CDialog
+{
+// Construction
+public:
+ CACE_Init_TestDlg(CWnd* pParent = NULL); // standard constructor
+
+// Dialog Data
+ //{{AFX_DATA(CACE_Init_TestDlg)
+ enum { IDD = IDD_ACE_INIT_TEST_DIALOG };
+ // NOTE: the ClassWizard will add data members here
+ //}}AFX_DATA
+
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CACE_Init_TestDlg)
+ protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+ HICON m_hIcon;
+
+ // Generated message map functions
+ //{{AFX_MSG(CACE_Init_TestDlg)
+ virtual BOOL OnInitDialog();
+ afx_msg void OnPaint();
+ afx_msg HCURSOR OnQueryDragIcon();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_ACE_INIT_TESTDLG_H__64FDCA00_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)
diff --git a/tests/ACE_Init_Test_Resource.h b/tests/ACE_Init_Test_Resource.h
new file mode 100644
index 00000000000..e32f29d5a6b
--- /dev/null
+++ b/tests/ACE_Init_Test_Resource.h
@@ -0,0 +1,19 @@
+// $Id$
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by ACE_INIT_TEST.RC
+//
+#define IDR_MAINFRAME 128
+#define IDD_ACE_INIT_TEST_DIALOG 102
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+
+#define _APS_NEXT_RESOURCE_VALUE 129
+#define _APS_NEXT_COMMAND_VALUE 32771
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/tests/ACE_Init_Test_StdAfx.h b/tests/ACE_Init_Test_StdAfx.h
new file mode 100644
index 00000000000..d11f7c7efce
--- /dev/null
+++ b/tests/ACE_Init_Test_StdAfx.h
@@ -0,0 +1,26 @@
+// $Id$
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__64FDCA02_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)
+#define AFX_STDAFX_H__64FDCA02_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h> // MFC core and standard components
+#include <afxext.h> // MFC extensions
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h> // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__64FDCA02_F7F9_11D2_89B6_00A024CC68DB__INCLUDED_)