|
|
1.1 root 1: /****************************************************************************
2:
3: PROGRAM: Icon.c
4:
5: PURPOSE: Demonstrates using an icon for the About box and minimize box
6:
7: FUNCTIONS:
8:
9: WinMain() - calls initialization function, processes message loop
10: InitApplication() - initializes window data and registers window
11: InitInstance() - saves instance handle and creates main window
12: MainWndProc() - processes messages
13: About() - processes messages for "About" dialog box
14:
15: ****************************************************************************/
16:
17: #include "windows.h"
18: #include "icon.h"
19:
20: HANDLE hInst;
21:
22:
23: /****************************************************************************
24:
25: FUNCTION: WinMain(HANDLE, HANDLE, LPSTR, int)
26:
27: PURPOSE: calls initialization function, processes message loop
28:
29: ****************************************************************************/
30:
31: int APIENTRY WinMain(
32: HANDLE hInstance,
33: HANDLE hPrevInstance,
34: LPSTR lpCmdLine,
35: int nCmdShow
36: )
37: {
38: MSG msg;
39:
40: UNREFERENCED_PARAMETER( lpCmdLine );
41:
42: if (!hPrevInstance)
43: if (!InitApplication(hInstance))
44: return (FALSE);
45:
46: if (!InitInstance(hInstance, nCmdShow))
47: return (FALSE);
48:
49: while (GetMessage(&msg, NULL, NULL, NULL)) {
50: TranslateMessage(&msg);
51: DispatchMessage(&msg);
52: }
53: return (msg.wParam);
54: }
55:
56:
57: /****************************************************************************
58:
59: FUNCTION: InitApplication(HANDLE)
60:
61: PURPOSE: Initializes window data and registers window class
62:
63: ****************************************************************************/
64:
65: BOOL InitApplication(HANDLE hInstance)
66: {
67: WNDCLASS wc;
68:
69: wc.style = NULL;
70: wc.lpfnWndProc = (WNDPROC) MainWndProc;
71: wc.cbClsExtra = 0;
72: wc.cbWndExtra = 0;
73: wc.hInstance = hInstance;
74: wc.hIcon = LoadIcon(hInstance, "MyIcon"); /* loads icon */
75: wc.hCursor = LoadCursor(NULL, IDC_ARROW);
76: wc.hbrBackground = GetStockObject(WHITE_BRUSH);
77: wc.lpszMenuName = "IconMenu";
78: wc.lpszClassName = "IconWClass";
79:
80: return (RegisterClass(&wc));
81: }
82:
83:
84: /****************************************************************************
85:
86: FUNCTION: InitInstance(HANDLE, int)
87:
88: PURPOSE: Saves instance handle and creates main window
89:
90: ****************************************************************************/
91:
92: BOOL InitInstance(
93: HANDLE hInstance,
94: INT nCmdShow)
95: {
96: HWND hWnd;
97:
98: hInst = hInstance;
99:
100: hWnd = CreateWindow(
101: "IconWClass",
102: "Icon Sample Application",
103: WS_OVERLAPPEDWINDOW,
104: CW_USEDEFAULT,
105: CW_USEDEFAULT,
106: CW_USEDEFAULT,
107: CW_USEDEFAULT,
108: NULL,
109: NULL,
110: hInstance,
111: NULL
112: );
113:
114: if (!hWnd)
115: return (FALSE);
116:
117: ShowWindow(hWnd, nCmdShow);
118: UpdateWindow(hWnd);
119: return (TRUE);
120:
121: }
122:
123: /****************************************************************************
124:
125: FUNCTION: MainWndProc(HWND, unsigned, WORD, LONG)
126:
127: PURPOSE: Processes messages
128:
129: MESSAGES:
130:
131: WM_COMMAND - application menu (About dialog box)
132: WM_DESTROY - destroy window
133:
134: ****************************************************************************/
135:
136: LONG APIENTRY MainWndProc(
137: HWND hWnd,
138: UINT message,
139: UINT wParam,
140: LONG lParam)
141: {
142: FARPROC lpProcAbout;
143:
144: switch (message) {
145: case WM_COMMAND:
146: if (LOWORD(wParam) == IDM_ABOUT) {
147: lpProcAbout = MakeProcInstance((FARPROC)About, hInst);
148:
149: DialogBox(hInst,
150: "AboutBox",
151: hWnd,
152: (WNDPROC)lpProcAbout);
153:
154: FreeProcInstance(lpProcAbout);
155: break;
156: }
157: else
158: return (DefWindowProc(hWnd, message, wParam, lParam));
159:
160: case WM_DESTROY:
161: PostQuitMessage(0);
162: break;
163:
164: default:
165: return (DefWindowProc(hWnd, message, wParam, lParam));
166: }
167: return (NULL);
168: }
169:
170:
171: /****************************************************************************
172:
173: FUNCTION: About(HWND, unsigned, WORD, LONG)
174:
175: PURPOSE: Processes messages for "About" dialog box
176:
177: MESSAGES:
178:
179: WM_INITDIALOG - initialize dialog box
180: WM_COMMAND - Input received
181:
182: ****************************************************************************/
183:
184: BOOL APIENTRY About(
185: HWND hDlg,
186: UINT message,
187: UINT wParam,
188: LONG lParam)
189: {
190: switch (message) {
191: case WM_INITDIALOG:
192: return (TRUE);
193:
194: case WM_COMMAND:
195: if (LOWORD(wParam) == IDOK
196: || LOWORD(wParam) == IDCANCEL) {
197: EndDialog(hDlg, TRUE);
198: return (TRUE);
199: }
200: break;
201: }
202: return (FALSE);
203: UNREFERENCED_PARAMETER(lParam);
204: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.