|
|
1.1 root 1: /*
2: * HELLO.C -- A simple program which calls the OpenDlg library
3: *
4: * Created by Microsoft, IBM Corporation 1990
5: *
6: * DISCLAIMER OF WARRANTIES. The following [enclosed] code is
7: * sample code created by Microsoft Corporation and/or IBM
8: * Corporation. This sample code is not part of any standard
9: * Microsoft or IBM product and is provided to you solely for
10: * the purpose of assisting you in the development of your
11: * applications. The code is provided "AS IS", without
12: * warranty of any kind. Neither Microsoft nor IBM shall be
13: * liable for any damages arising out of your use of the sample
14: * code, even if they have been advised of the possibility of
15: * such damages.
16: */
17: #define INCL_PM
18: #include <os2.h>
19: #include "..\opendlg.h"
20: #include <string.h>
21: #include "hello.h"
22: /*
23: * Globals
24: */
25: HAB hAB;
26: HMQ hMqHello;
27: HWND hWndHello;
28: HWND hWndHelloFrame;
29: CHAR szClassName[] = "Hello World";
30: CHAR szMessage[] = " - File Dialog Sample";
31: CHAR szExtension[] = "\\*";
32: CHAR szHelp[] = "Help would go here.";
33: DLF vdlf;
34: HFILE vhFile;
35: /*
36: * Main routine...initializes window and message queue
37: */
38: int main( ) {
39: QMSG qmsg;
40: ULONG ctldata;
41:
42: hAB = WinInitialize(NULL);
43:
44: hMqHello = WinCreateMsgQueue(hAB, 0);
45:
46: if (!WinRegisterClass( hAB, (PCH)szClassName, (PFNWP)HelloWndProc,
47: CS_SIZEREDRAW, 0))
48: return( 0 );
49:
50: /* Create the window */
51: ctldata = FCF_STANDARD & ~(FCF_ACCELTABLE);
52: hWndHelloFrame = WinCreateStdWindow( HWND_DESKTOP, WS_VISIBLE, &ctldata,
53: szClassName, szMessage,
54: 0L, (HMODULE)NULL, ID_RESOURCE,
55: &hWndHello );
56:
57: if (hWndHelloFrame == (HWND)NULL)
58: return 0;
59: WinShowWindow( hWndHelloFrame, TRUE );
60:
61: /* Poll messages from event queue */
62: while( WinGetMsg( hAB, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) )
63: WinDispatchMsg( hAB, (PQMSG)&qmsg );
64:
65: /* Clean up */
66: WinDestroyWindow( hWndHelloFrame );
67: WinDestroyMsgQueue( hMqHello );
68: WinTerminate( hAB );
69: }
70:
71: MRESULT EXPENTRY HelloWndProc(hWnd, msg, mp1, mp2)
72: /*
73: * This routine processes WM_COMMAND, WM_PAINT. It passes
74: * everything else to the Default Window Procedure.
75: */
76: HWND hWnd;
77: USHORT msg;
78: MPARAM mp1;
79: MPARAM mp2;
80: {
81: HPS hPS;
82: POINTL pt;
83: CHARBUNDLE cb;
84: RECTL rcl;
85:
86: switch (msg) {
87:
88: case WM_COMMAND:
89: switch (LOUSHORT(mp1)) {
90:
91: case IDM_OPEN: /* Demonstrate Open... dialog call */
92: SetupDLF( &vdlf
93: , DLG_OPENDLG
94: , &vhFile
95: , szExtension
96: , NULL
97: , "Open Title"
98: , szHelp );
99: DlgFile(hWndHelloFrame, &vdlf);
100: break;
101:
102: case IDM_SAVE: /* Demonstrate Save As... dialog call */
103: SetupDLF( &vdlf
104: , DLG_SAVEDLG
105: , &vhFile
106: , szExtension
107: , NULL
108: , "Save Title"
109: , szHelp);
110: strcpy((PSZ)vdlf.szOpenFile, (PSZ)"foo.bar");
111: DlgFile(hWndHelloFrame, &vdlf);
112: break;
113:
114: case IDM_ABOUT:
115: WinDlgBox(HWND_DESKTOP, hWnd, AboutDlgProc,
116: NULL, IDD_ABOUT, NULL);
117: return 0;
118:
119: default: break;
120: }
121: break;
122:
123: case WM_PAINT:
124: /* Open the presentation space */
125: hPS = WinBeginPaint(hWnd, NULL, &rcl);
126:
127: /* Fill the background with Dark Blue */
128: WinFillRect(hPS, &rcl, CLR_DARKBLUE);
129:
130: /* Write "Hello World" in Red */
131: pt.x = pt.y = 0L;
132: cb.lColor = CLR_RED;
133: GpiSetAttrs(hPS, PRIM_CHAR, CBB_COLOR, 0L, &cb);
134: GpiCharStringAt(hPS, &pt, (LONG)sizeof(szClassName)-1, szClassName);
135:
136: /* Finish painting */
137: WinEndPaint(hPS);
138: break;
139:
140: default:
141: return WinDefWindowProc(hWnd, msg, mp1, mp2); break;
142: }
143: return 0L;
144: }
145:
146: MRESULT EXPENTRY AboutDlgProc(hDlg, msg, mp1, mp2)
147: /*
148: About... dialog procedure
149: */
150: HWND hDlg;
151: USHORT msg;
152: MPARAM mp1;
153: MPARAM mp2;
154: {
155: switch(msg) {
156: case WM_COMMAND:
157: switch(LOUSHORT(mp1)) {
158: case DID_OK: WinDismissDlg(hDlg, TRUE); break;
159: default: break;
160: }
161: default: return WinDefDlgProc(hDlg, msg, mp1, mp2);
162: }
163: return FALSE;
164: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.