home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK8 / MFC / SAMPLES / DLLTRACE / HELLO1.CP$ / hello1
Encoding:
Text File  |  1992-01-15  |  3.1 KB  |  124 lines

  1. // hello.cpp : Defines the class behaviors for the application.
  2. //           Hello is a simple program which consists of a main window
  3. //           and an "About" dialog which can be invoked by a menu choice.
  4. //           It is intended to serve as a starting-point for new
  5. //           applications.
  6. //
  7. //           This version of hello also demonstrates communication with
  8. //           a dynamic link library (DLL) implemented with the
  9. //           Microsoft Foundation Classes.
  10. //
  11. // This is a part of the Microsoft Foundation Classes C++ library.
  12. // Copyright (C) 1992 Microsoft Corporation
  13. // All rights reserved.
  14. //
  15. // This source code is only intended as a supplement to the
  16. // Microsoft Foundation Classes Reference and Microsoft
  17. // QuickHelp documentation provided with the library.
  18. // See these sources for detailed information regarding the
  19. // Microsoft Foundation Classes product.
  20.  
  21.  
  22. #include <afxwin.h>
  23. #include "resource.h"
  24.  
  25. #include "traceapi.h"
  26.  
  27. #ifndef _DEBUG
  28. #error This source file must be compiled with _DEBUG defined
  29. #endif
  30.  
  31. /////////////////////////////////////////////////////////////////////////////
  32. // CMainWindow
  33.  
  34. class CMainWindow : public CFrameWnd
  35. {
  36. public:
  37.     CMainWindow();
  38.  
  39.     afx_msg void OnPaint();
  40.     afx_msg void OnAbout();
  41.     afx_msg void OnTraceFlags();
  42.  
  43.     DECLARE_MESSAGE_MAP()
  44. };
  45.  
  46. BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
  47.     ON_WM_PAINT()
  48.     ON_COMMAND(IDM_ABOUT, OnAbout)
  49.     ON_COMMAND(IDM_TRACE_FLAGS, OnTraceFlags)
  50. END_MESSAGE_MAP()
  51.  
  52. /////////////////////////////////////////////////////////////////////////////
  53.  
  54. CMainWindow::CMainWindow()
  55. {
  56.     VERIFY(Create(NULL, "Hello Foundation Application",
  57.         WS_OVERLAPPEDWINDOW, rectDefault, NULL, "MainMenu"));
  58. }
  59.  
  60. void CMainWindow::OnPaint()
  61. {
  62.     CString s = "Hello, Windows! (with DLL support)";
  63.     CPaintDC dc(this);
  64.     CRect rect;
  65.  
  66.     GetClientRect(rect);
  67.     dc.SetTextAlign(TA_BASELINE | TA_CENTER);
  68.     dc.SetBkMode(TRANSPARENT);
  69.     dc.TextOut(rect.right / 2, rect.bottom / 2, s);
  70. }
  71.  
  72. void CMainWindow::OnAbout()
  73. {
  74.     CModalDialog about("AboutBox", this);
  75.     about.DoModal();
  76. }
  77.  
  78. void CMainWindow::OnTraceFlags()
  79. {
  80.     struct TracerData data;
  81.     data.bEnabled = afxTraceEnabled;
  82.     data.flags = afxTraceFlags;
  83.  
  84.     TRACE("Calling Tracer DLL\n");
  85.     if (PromptTraceFlags(&data))
  86.     {
  87.         TRACE("Changing trace flags\n");
  88.         afxTraceEnabled = data.bEnabled;
  89.         afxTraceFlags = data.flags;
  90.         TRACE("Changed trace flags\n");
  91.     }
  92. }
  93.  
  94. /////////////////////////////////////////////////////////////////////////////
  95. // CTheApp
  96.  
  97. class CTheApp : public CWinApp
  98. {
  99. public:
  100.     virtual BOOL InitInstance();
  101.     virtual BOOL PreTranslateMessage(MSG* pMsg);
  102. };
  103.  
  104. BOOL CTheApp::InitInstance()
  105. {
  106.     // standard initialization of a main window
  107.  
  108.     m_pMainWnd = new CMainWindow;
  109.     m_pMainWnd->ShowWindow(m_nCmdShow);
  110.     m_pMainWnd->UpdateWindow();
  111.     return TRUE;
  112. }
  113.  
  114. BOOL CTheApp::PreTranslateMessage(MSG* pMsg)
  115. {
  116.     // special filter for DLL
  117.     return (CWinApp::PreTranslateMessage(pMsg) ||
  118.             FilterDllMsg(pMsg));
  119. }
  120.  
  121. CTheApp theApp; // application object
  122.  
  123. /////////////////////////////////////////////////////////////////////////////
  124.