|
|
1.1 root 1: /*---------------------------------------------------------------
2: SQABOUT.C -- Demonstration of About Box with Square 3D Button
3: ---------------------------------------------------------------*/
4:
5: #define INCL_WIN
6: #include <os2.h>
7: #include "aboutbox.h"
8:
9: VOID RegisterSqBtnClass (HAB) ; // In SQBTN.C
10:
11: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
12: MRESULT EXPENTRY AboutDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
13:
14: int main (void)
15: {
16: static CHAR szClientClass[] = "SqAbout" ;
17: static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU |
18: FCF_SIZEBORDER | FCF_MINMAX |
19: FCF_SHELLPOSITION | FCF_TASKLIST |
20: FCF_MENU | FCF_ICON ;
21: HAB hab ;
22: HMQ hmq ;
23: HWND hwndFrame, hwndClient ;
24: QMSG qmsg ;
25:
26: hab = WinInitialize (0) ;
27: hmq = WinCreateMsgQueue (hab, 0) ;
28:
29: RegisterSqBtnClass (hab) ;
30:
31: WinRegisterClass (hab, szClientClass, ClientWndProc, 0L, 0) ;
32:
33: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
34: &flFrameFlags, szClientClass, NULL,
35: 0L, NULL, ID_RESOURCE, &hwndClient) ;
36:
37: while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
38: WinDispatchMsg (hab, &qmsg) ;
39:
40: WinDestroyWindow (hwndFrame) ;
41: WinDestroyMsgQueue (hmq) ;
42: WinTerminate (hab) ;
43: return 0 ;
44: }
45:
46: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
47: {
48: switch (msg)
49: {
50: case WM_COMMAND:
51: switch (COMMANDMSG(&msg)->cmd)
52: {
53: case IDM_NEW:
54: case IDM_OPEN:
55: case IDM_SAVE:
56: case IDM_SAVEAS:
57: WinAlarm (HWND_DESKTOP, WA_NOTE) ;
58: return 0 ;
59:
60: case IDM_ABOUT:
61: WinDlgBox (HWND_DESKTOP, hwnd, AboutDlgProc,
62: NULL, IDD_ABOUT, NULL) ;
63: return 0 ;
64: }
65: break ;
66:
67: case WM_ERASEBACKGROUND:
68: return 1 ;
69: }
70: return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
71: }
72:
73: MRESULT EXPENTRY AboutDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
74: {
75: switch (msg)
76: {
77: case WM_COMMAND:
78: switch (COMMANDMSG(&msg)->cmd)
79: {
80: case DID_OK:
81: case DID_CANCEL:
82: WinDismissDlg (hwnd, TRUE) ;
83: return 0 ;
84: }
85: break ;
86: }
87: return WinDefDlgProc (hwnd, msg, mp1, mp2) ;
88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.