diff options
author | crodrigu <crodrigu@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-08-02 22:19:31 +0000 |
---|---|---|
committer | crodrigu <crodrigu@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-08-02 22:19:31 +0000 |
commit | 77424fc12e82e5f0b0677f43db96baea1a9912b9 (patch) | |
tree | c72b0d5f7e0f77169dcfec3acb9bedf38f7fea1a | |
parent | be70d3db5f8fafe068c0f7c3aa4e60257d0ce01f (diff) | |
download | ATCD-77424fc12e82e5f0b0677f43db96baea1a9912b9.tar.gz |
ChangeLogTag: Fri Aug 2 22:00:26 UTC 2002 Craig Rodrigues <crodrigu@bbn.com>
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 7 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.cpp | 90 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsp | 124 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsw | 29 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.h | 57 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.rc | 207 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.cpp | 183 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.h | 53 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/MFC_Log.cpp | 34 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/MFC_Log.h | 45 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/README | 40 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/Resource.h | 21 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/StdAfx.cpp | 9 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/StdAfx.h | 26 | ||||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.ico | bin | 0 -> 1078 bytes | |||
-rw-r--r-- | examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.rc2 | 13 |
17 files changed, 945 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 21fb3c36a83..6880c5cbb6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Aug 2 22:00:26 UTC 2002 Craig Rodrigues <crodrigu@bbn.com> + + * examples/Log_Msg/Log_Msg_MFC/*: Added example to show how + to send ACE_DEBUG output to the Microsoft Visual Studio debugger console. + Thanks to Don Hinton <dhinton@ieee.org> and + Chris Hafey <chafey@stentor.com> for help with this. + Fri Aug 2 13:10:05 2002 Krishnakumar B <kitty@cs.wustl.edu> * ACEXML/examples/SAXPrint/main.cpp (ACE_TMAIN): diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 21fb3c36a83..6880c5cbb6c 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,3 +1,10 @@ +Fri Aug 2 22:00:26 UTC 2002 Craig Rodrigues <crodrigu@bbn.com> + + * examples/Log_Msg/Log_Msg_MFC/*: Added example to show how + to send ACE_DEBUG output to the Microsoft Visual Studio debugger console. + Thanks to Don Hinton <dhinton@ieee.org> and + Chris Hafey <chafey@stentor.com> for help with this. + Fri Aug 2 13:10:05 2002 Krishnakumar B <kitty@cs.wustl.edu> * ACEXML/examples/SAXPrint/main.cpp (ACE_TMAIN): diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.cpp b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.cpp new file mode 100644 index 00000000000..f25141b48a7 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.cpp @@ -0,0 +1,90 @@ +// Log_Msg_MFC.cpp : Defines the class behaviors for the application. +// $Id$ + +#include "stdafx.h" +#include "Log_Msg_MFC.h" +#include "Log_Msg_MFCDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#include <ace/ACE.h> + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCApp + +BEGIN_MESSAGE_MAP(CLog_Msg_MFCApp, CWinApp) + //{{AFX_MSG_MAP(CLog_Msg_MFCApp) + // 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() + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCApp construction + +CLog_Msg_MFCApp::CLog_Msg_MFCApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CLog_Msg_MFCApp object + +CLog_Msg_MFCApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCApp initialization + +BOOL CLog_Msg_MFCApp::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. + +#ifdef _AFXDLL + Enable3dControls(); // Call this when using MFC in a shared DLL +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + // Need to call ACE::init() before calling any functions in ACE. + // If we were writing a console based application, the ACE macros which + // re-define main() would automatically call this. However, since + // we are running inside an MFC application, we need to explicitly call this. + ACE::init(); + + // Call to set the ACE Log_Msg class here. + // From now on, whenever we use ACE_DEBUG macros, the output + // will be sent to the log() method of our MFC_Log class. + ACE_Log_Msg::instance()->msg_callback( &m_mfc_logger ); + ACE_Log_Msg::instance()->set_flags( ACE_Log_Msg::MSG_CALLBACK ); + + CLog_Msg_MFCDlg dlg; + m_pMainWnd = &dlg; + 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 + } + + // Since we called ACE::init(), we need to call ACE:fini(), otherwise + // the debugger will complain about memory leaks. + ACE::fini(); + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; +} diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsp b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsp new file mode 100644 index 00000000000..0f06851d23c --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsp @@ -0,0 +1,124 @@ +# Microsoft Developer Studio Project File - Name="Log_Msg_MFC" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=Log_Msg_MFC - 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 "Log_Msg_MFC.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 "Log_Msg_MFC.mak" CFG="Log_Msg_MFC - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Log_Msg_MFC - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+# 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 "Debug"
+# PROP Intermediate_Dir "Debug"
+# 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" /D "_MBCS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 acemfcd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace"
+
+
+# Begin Target
+
+# Name "Log_Msg_MFC - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Log_Msg_MFC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Log_Msg_MFC.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\Log_Msg_MFCDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\MFC_Log.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Log_Msg_MFC.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Log_Msg_MFCDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\MFC_Log.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\res\Log_Msg_MFC.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\Log_Msg_MFC.rc2
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsw b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsw new file mode 100644 index 00000000000..d7193327e8a --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Log_Msg_MFC"=.\Log_Msg_MFC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.h b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.h new file mode 100644 index 00000000000..b93d09bde02 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.h @@ -0,0 +1,57 @@ +// Log_Msg_MFC.h : main header file for the LOG_MSG_MFC application +// $Id$ + +#if !defined(AFX_LOG_MSG_MFC_H__03FA2C60_71EA_44F9_AC4C_2F19168B4755__INCLUDED_) +#define AFX_LOG_MSG_MFC_H__03FA2C60_71EA_44F9_AC4C_2F19168B4755__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 "resource.h" // main symbols + +// Add some includes here for our Logger +#include <ace/Log_Msg.h> +#include "MFC_Log.h" + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCApp: +// See Log_Msg_MFC.cpp for the implementation of this class +// + +class CLog_Msg_MFCApp : public CWinApp +{ +public: + CLog_Msg_MFCApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CLog_Msg_MFCApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CLog_Msg_MFCApp) + // 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() + + // MFC Log class for ACE_Log_Msg. To be used by ACE_DEBUG + MFC_Log m_mfc_logger; + +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_LOG_MSG_MFC_H__03FA2C60_71EA_44F9_AC4C_2F19168B4755__INCLUDED_) diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.rc b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.rc new file mode 100644 index 00000000000..5f2f04dce74 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFC.rc @@ -0,0 +1,207 @@ +//Microsoft Developer Studio generated resource script. +// +#include "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 //_WIN32\r\n" + "#include ""res\\Log_Msg_MFC.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\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 "res\\Log_Msg_MFC.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About Log_Msg_MFC" +FONT 8, "MS Sans Serif" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "Log_Msg_MFC Version 1.0",IDC_STATIC,40,10,119,8, + SS_NOPREFIX + LTEXT "Copyright (C) 2002",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP +END + +IDD_LOG_MSG_MFC_DIALOG DIALOGEX 0, 0, 320, 200 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_APPWINDOW +CAPTION "Log_Msg_MFC" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,241,170,50,14 + PUSHBUTTON "DebugMe",IDC_BUTTON1,92,96,50,14 + LTEXT "Run this program inside the Visual Studio debugger. Press the DebugMe button and see the ACE_DEBUG messages appear in the Visual Studio debug console.", + IDC_STATIC,83,28,116,56 +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", "Log_Msg_MFC MFC Application\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "Log_Msg_MFC\0" + VALUE "LegalCopyright", "Copyright (C) 2002\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "Log_Msg_MFC.EXE\0" + VALUE "ProductName", "Log_Msg_MFC 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_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 228 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END + + IDD_LOG_MSG_MFC_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 313 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ABOUTBOX "&About Log_Msg_MFC..." +END + +#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 //_WIN32 +#include "res\Log_Msg_MFC.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.cpp b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.cpp new file mode 100644 index 00000000000..7d0b23d77ed --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.cpp @@ -0,0 +1,183 @@ +// Log_Msg_MFCDlg.cpp : implementation file +// $Id$ + +#include "stdafx.h" +#include "Log_Msg_MFC.h" +#include "Log_Msg_MFCDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#include <ace/OS.h> +#include <ace/ACE.h> + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCDlg dialog + +CLog_Msg_MFCDlg::CLog_Msg_MFCDlg(CWnd* pParent /*=NULL*/) + : CDialog(CLog_Msg_MFCDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CLog_Msg_MFCDlg) + // 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 CLog_Msg_MFCDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CLog_Msg_MFCDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CLog_Msg_MFCDlg, CDialog) + //{{AFX_MSG_MAP(CLog_Msg_MFCDlg) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_BUTTON1, OnDebugButtonClicked) + ON_WM_CLOSE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCDlg message handlers + +BOOL CLog_Msg_MFCDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + + // Add "About..." menu item to system menu. + + // IDM_ABOUTBOX must be in the system command range. + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + CString strAboutMenu; + strAboutMenu.LoadString(IDS_ABOUTBOX); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // 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 +} + +void CLog_Msg_MFCDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialog::OnSysCommand(nID, lParam); + } +} + +// 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 CLog_Msg_MFCDlg::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 CLog_Msg_MFCDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + +void CLog_Msg_MFCDlg::OnDebugButtonClicked() +{ + ACE_DEBUG(( LM_DEBUG, "Debug message sent!\n" )); + +} + diff --git a/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.h b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.h new file mode 100644 index 00000000000..adf21616732 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Log_Msg_MFCDlg.h @@ -0,0 +1,53 @@ +// Log_Msg_MFCDlg.h : header file +// $Id$ + +#if !defined(AFX_LOG_MSG_MFCDLG_H__5BB9CACE_CBCE_40DD_B57F_ED05B79DB033__INCLUDED_) +#define AFX_LOG_MSG_MFCDLG_H__5BB9CACE_CBCE_40DD_B57F_ED05B79DB033__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + + +///////////////////////////////////////////////////////////////////////////// +// CLog_Msg_MFCDlg dialog + +class CLog_Msg_MFCDlg : public CDialog +{ +// Construction +public: + CLog_Msg_MFCDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CLog_Msg_MFCDlg) + enum { IDD = IDD_LOG_MSG_MFC_DIALOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CLog_Msg_MFCDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + HICON m_hIcon; + + // Generated message map functions + //{{AFX_MSG(CLog_Msg_MFCDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + afx_msg void OnDebugButtonClicked(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_LOG_MSG_MFCDLG_H__5BB9CACE_CBCE_40DD_B57F_ED05B79DB033__INCLUDED_) diff --git a/examples/Log_Msg/Log_Msg_MFC/MFC_Log.cpp b/examples/Log_Msg/Log_Msg_MFC/MFC_Log.cpp new file mode 100644 index 00000000000..37fe90091ce --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/MFC_Log.cpp @@ -0,0 +1,34 @@ +// $Id$ +// MFC_Log.cpp: implementation of the MFC_Log class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "MFC_Log.h" + +#include "ace/Log_Record.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +MFC_Log::MFC_Log() +{ + +} + +void +MFC_Log::log(ACE_Log_Record& log_record) +{ + unsigned long priority = log_record.type(); + char Message[512]; + + ACE_OS::sprintf(Message,"%d.%03ld %s", log_record.time_stamp().sec(), + log_record.time_stamp().usec()/ 1000, log_record.msg_data()); + ::OutputDebugString(Message); +} + +MFC_Log::~MFC_Log() +{ + +} diff --git a/examples/Log_Msg/Log_Msg_MFC/MFC_Log.h b/examples/Log_Msg/Log_Msg_MFC/MFC_Log.h new file mode 100644 index 00000000000..1b887a402c3 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/MFC_Log.h @@ -0,0 +1,45 @@ +/* -*- C++ -*- */ + +//============================================================================= +/** + * @file MFC_Log.h + * + * $Id$ + * + * @author Craig Rodrigues <crodrigu@bbn.com> + * @author Chris Hafey <chafey@stentor.com> + * @author Don Hinton <dhinton@ieee.org> + */ +//============================================================================= + +#ifndef MFC_LOG_H +#define MFC_LOG_H + +#include "ace/Log_Msg_Callback.h" + +class ACE_Log_Record; + +/** + * @class MFC_Log + * + * @brief A callback class for ACE_Log_Msg which sends output to Microsoft debugger + * + * Register this class as a MSG_CALLBACK with the ACE_Log_Msg singleton and + * send debug output to the Microsoft debugger console window with ACE_DEBUG macros. + */ +class MFC_Log : public virtual ACE_Log_Msg_Callback +{ +public: + /// Constructor + MFC_Log(); + + /// method called by ACE_Log_Msg to log an event + void log(ACE_Log_Record& log_record); + + /// destructor + virtual ~MFC_Log(); + +}; + +#endif /* MFC_LOG_H */ + diff --git a/examples/Log_Msg/Log_Msg_MFC/README b/examples/Log_Msg/Log_Msg_MFC/README new file mode 100644 index 00000000000..8c20059ba42 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/README @@ -0,0 +1,40 @@ + MFC Logging Example documentation + ================================= + by Craig Rodrigues <crodrigu@bbn.com> + 2002/08/02 + +The example in this directory is a Microsoft +Foundation Class (MFC) example which illustrates how to +write an ACE_Log_Msg_Callback which can +send debug output to the Microsoft debugger console. + +This is very useful when debugging an MFC GUI-based application +which uses ACE. + +NOTES +===== + - Make sure that $ACE_ROOT/ace/acemfcd.lib is built before building this + example. Follow the instructions in $ACE_ROOT/ACE-INSTALL.html for building + ACE with Visual C++. Do a Batch Build of ACE, and make sure that you build + the target "ACE DLL - Win32 MFC Debug". + - We must call ACE::init() and ACE::fini() in the right places + otherwise we will get strange crashes and memory leaks + when invoking ACE_Log_Msg::instance(). + A good place to invoke these methods is in the method which overrides + CWinApp::InitInstance(). + In this example, we invoke these methods in CLog_Msg_MFCApp::InitInstance(). + + - We must set the ACE_Log_Msg singleton to use our callback with: + ACE_Log_Msg::instance()->msg_callback( &m_mfc_logger ); + ACE_Log_Msg::instance()->set_flags( ACE_Log_Msg::MSG_CALLBACK ); + + This is also done in CLog_Msg_MFCApp::InitInstance(). + + +THANKS +====== +Thanks to the following people who provided assistance on the ACE +mailing list: +Chris Hafey <chafey@stentor.com> +Don Hinton <dhinton@ieee.org> + diff --git a/examples/Log_Msg/Log_Msg_MFC/Resource.h b/examples/Log_Msg/Log_Msg_MFC/Resource.h new file mode 100644 index 00000000000..d1aa3df6ce1 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/Resource.h @@ -0,0 +1,21 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Log_Msg_MFC.rc +// $Id$ +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_LOG_MSG_MFC_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDC_BUTTON1 1000 + +// 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 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/examples/Log_Msg/Log_Msg_MFC/StdAfx.cpp b/examples/Log_Msg/Log_Msg_MFC/StdAfx.cpp new file mode 100644 index 00000000000..7325df7a861 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/StdAfx.cpp @@ -0,0 +1,9 @@ +// $Id$ +// stdafx.cpp : source file that includes just the standard includes +// Log_Msg_MFC.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/examples/Log_Msg/Log_Msg_MFC/StdAfx.h b/examples/Log_Msg/Log_Msg_MFC/StdAfx.h new file mode 100644 index 00000000000..2e6d2140caf --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/StdAfx.h @@ -0,0 +1,26 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// $Id$ + +#if !defined(AFX_STDAFX_H__41816CD6_CE58_4714_8C74_1C67651B50ED__INCLUDED_) +#define AFX_STDAFX_H__41816CD6_CE58_4714_8C74_1C67651B50ED__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 +#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include <afxcmn.h> // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__41816CD6_CE58_4714_8C74_1C67651B50ED__INCLUDED_) diff --git a/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.ico b/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.ico Binary files differnew file mode 100644 index 00000000000..7eef0bcbe65 --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.ico diff --git a/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.rc2 b/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.rc2 new file mode 100644 index 00000000000..f8d03632acf --- /dev/null +++ b/examples/Log_Msg/Log_Msg_MFC/res/Log_Msg_MFC.rc2 @@ -0,0 +1,13 @@ +// +// LOG_MSG_MFC.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... + +///////////////////////////////////////////////////////////////////////////// |