home *** CD-ROM | disk | FTP | other *** search
- // dlltrace.cpp : Defines the class behaviors for the application.
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 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.
-
- // This version of hello demonstrates communication with
- // a dynamic link library (DLL) implemented with the _USRDLL
- //version of the Microsoft Foundation Classes.
-
- #include <afxwin.h>
- #include "resource.h"
- #include "traceapi.h"
-
- // Note: This application doesn't really serve any useful purpose in
- // either debug or release builds (it does not modify AFX.INI like
- // the TRACER application does). In debug builds, it is possible to
- // tell that calling the dialog box actually changes the flags, since
- // TRACE output is either enabled or disabled. In release builds,
- // the tracing facility of MFC is disabled unconditionally, so there
- // is no way to tell that the flags have been changed, except for
- // the fact that they are retained across calls to display the dialog
- // box.
-
- #ifndef _DEBUG
- static BOOL afxTraceEnabled;
- static int afxTraceFlags;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CMainWindow
-
- class CMainWindow : public CFrameWnd
- {
- public:
- CMainWindow();
-
- //{{AFX_MSG(CMainWindow)
- afx_msg void OnPaint();
- afx_msg void OnAbout();
- afx_msg void OnTraceFlags();
- //}}AFX_MSG
-
- DECLARE_MESSAGE_MAP()
- };
-
- BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
- //{{AFX_MSG_MAP(CMainWindow)
- ON_WM_PAINT()
- ON_COMMAND(ID_APP_ABOUT, OnAbout)
- ON_COMMAND(ID_TRACE_FLAGS, OnTraceFlags)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
-
- CMainWindow::CMainWindow()
- {
- VERIFY(Create(NULL, _T("Hello Foundation Application"),
- WS_OVERLAPPEDWINDOW, rectDefault, NULL,
- MAKEINTRESOURCE(IDR_MAINMENU)));
- }
-
- void CMainWindow::OnPaint()
- {
- CString s = "Hello, Windows! (with DLL support)";
- CPaintDC dc(this);
- CRect rect;
-
- GetClientRect(rect);
- dc.SetTextAlign(TA_BASELINE | TA_CENTER);
- dc.SetBkMode(TRANSPARENT);
- dc.TextOut(rect.right / 2, rect.bottom / 2, s);
- }
-
- void CMainWindow::OnAbout()
- {
- CDialog(IDD_ABOUTBOX).DoModal();
- }
-
- void CMainWindow::OnTraceFlags()
- {
- struct TracerData data;
- data.bEnabled = afxTraceEnabled;
- data.flags = afxTraceFlags;
-
- TRACE0("Calling Tracer DLL\n");
- if (PromptTraceFlags(this->m_hWnd, &data))
- {
- TRACE0("Changing trace flags\n");
- afxTraceEnabled = data.bEnabled;
- afxTraceFlags = data.flags;
- TRACE0("Changed trace flags\n");
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CTheApp
-
- class CTheApp : public CWinApp
- {
- public:
- virtual BOOL InitInstance();
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual BOOL OnIdle(LONG lCount);
- };
-
- BOOL CTheApp::InitInstance()
- {
- // standard initialization of a main window
- Enable3dControls();
-
- m_pMainWnd = new CMainWindow;
- m_pMainWnd->ShowWindow(m_nCmdShow);
- m_pMainWnd->UpdateWindow();
- return TRUE;
- }
-
- BOOL CTheApp::PreTranslateMessage(MSG* pMsg)
- {
- // special filter for DLL
- if (CWinApp::PreTranslateMessage(pMsg))
- return TRUE;
-
- return FilterDllMsg(pMsg);
- }
-
- BOOL CTheApp::OnIdle(LONG lCount)
- {
- if (CWinApp::OnIdle(lCount))
- return TRUE;
-
- ProcessDllIdle();
- return FALSE; // no more for me to do
- }
-
- CTheApp NEAR theApp; // application object
-
- /////////////////////////////////////////////////////////////////////////////
-