|
|
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.