|
|
1.1 ! root 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: /////////////////////////////////////////////////////////////////////////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.