|
|
1.1 root 1: // mdi.cpp : Defines the class behaviors for the MDI sample application.
2: //
3: // This is a part of the Microsoft Foundation Classes C++ library.
4: // Copyright (C) 1992 Microsoft Corporation
5: // All rights reserved.
6: //
7: // This source code is only intended as a supplement to the
8: // Microsoft Foundation Classes Reference and Microsoft
9: // QuickHelp documentation provided with the library.
10: // See these sources for detailed information regarding the
11: // Microsoft Foundation Classes product.
12: //
13:
14: /////////////////////////////////////////////////////////////////////////////
15:
16: #include "mdi.h"
17:
18: // Create one global CTheApp object. Once created, it takes care of itself.
19: //
20: CTheApp theApp;
21:
22: /////////////////////////////////////////////////////////////////////////////
23: // CMainWindow
24:
25: // CMainWindow message map:
26: // Note: certain built-in MDI window behavior (tiling and cascading child
27: // windows, arranging icons, switching to the next child window) must be
28: // linked to user menu items explicitly by the developer (since MFC cannot
29: // know an application's menu structure ahead of time). MDICascade,
30: // MDITile, MDINext, MDIIconArrange are all CMDIFrameWnd member functions.
31: //
32: BEGIN_MESSAGE_MAP(CMainWindow, CMDIFrameWnd)
33: ON_WM_CREATE()
34: ON_COMMAND(IDM_ABOUT, OnAbout)
35: ON_COMMAND(IDM_HELLO, OnNewHello)
36: ON_COMMAND(IDM_BOUNCE, OnNewBounce)
37: ON_COMMAND(IDM_CASCADE, MDICascade)
38: ON_COMMAND(IDM_TILE, MDITile)
39: ON_COMMAND(IDM_NEXT, MDINext)
40: ON_COMMAND(IDM_ARRANGE, MDIIconArrange)
41: ON_COMMAND(IDM_EXIT, OnExit)
42: ON_MESSAGE(WM_CHILDDESTROY, OnChildDestroy)
43: END_MESSAGE_MAP()
44:
45:
46: // CMainWindow constructor:
47: //
48: CMainWindow::CMainWindow()
49: {
50: VERIFY(LoadAccelTable("MdiAccel"));
51: Create(NULL, "MDI Sample Application", WS_OVERLAPPEDWINDOW, rectDefault,
52: NULL, "MdiMenuInit");
53: }
54:
55: // OnCreate:
56: // Load application's initial MDI frame menu and create an MDI client
57: //
58: int CMainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
59: {
60: m_pMenuInit = new CMenu();
61: m_pMenuInit->LoadMenu("MdiMenuInit");
62: CreateClient(lpCreateStruct, m_pMenuInit->GetSubMenu(0));
63:
64: return 0;
65: }
66:
67: // OnAbout:
68: // Display this application's about box (defined in about.dlg).
69: //
70: void CMainWindow::OnAbout()
71: {
72: CModalDialog about("AboutBox", this);
73: about.DoModal();
74: }
75:
76: // OnNewHello:
77: // Create a new Hello child window.
78: //
79: void CMainWindow::OnNewHello()
80: {
81: CHelloWnd *pHelloWnd = new CHelloWnd;
82: if (!pHelloWnd->Create("Hello", 0, rectDefault, this))
83: {
84: delete pHelloWnd; // HWND not created
85: return;
86: }
87: pHelloWnd->ShowWindow(SW_SHOW);
88: // the default PostNcDestroy handler will delete this object when destroyed
89: }
90:
91: // OnNewBounce:
92: // Create a new Bounce child window.
93: //
94: void CMainWindow::OnNewBounce()
95: {
96: CBounceWnd *pBounceWnd = new CBounceWnd;
97: if (!pBounceWnd->Create("Bounce", 0, rectDefault, this))
98: {
99: delete pBounceWnd; // HWND not created
100: return;
101: }
102: pBounceWnd->ShowWindow(SW_SHOW);
103: // the default PostNcDestroy handler will delete this object when destroyed
104: }
105:
106: // OnChildDestroy:
107: // Example of a custom message handler (for the custom WM_CHILDDESTROY message)
108: // This handler is triggered when a CBounceWnd or CHelloWnd destroys
109: // itself -- the default implementation here does nothing but could
110: // be customized to do additional work.
111: //
112: LONG CMainWindow::OnChildDestroy(UINT /*hWnd*/, LONG /* lParam */)
113: {
114: return 0;
115: }
116:
117: // Destructor:
118: // Destroy all existing child windows.
119: //
120: CMainWindow::~CMainWindow()
121: {
122: delete m_pMenuInit;
123: }
124:
125: // OnExit:
126: // Exit the application.
127: //
128: void CMainWindow::OnExit()
129: {
130: DestroyWindow();
131: }
132:
133: /////////////////////////////////////////////////////////////////////////////
134: // CTheApp
135:
136: // InitInstance:
137: // Create and display the application main frame window
138: //
139: BOOL CTheApp::InitInstance()
140: {
141: m_pMainWnd = new CMainWindow();
142: m_pMainWnd->ShowWindow(m_nCmdShow);
143: m_pMainWnd->UpdateWindow();
144: return TRUE;
145: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.