|
|
1.1 root 1: /* btntest.c - List box control test application */
2: /* Created by Microsoft Corp., 1988 */
3: /* */
4:
5: #define INCL_PM
6: #include <os2.h>
7: #include "btntest.h"
8:
9: /************* GLOBAL VARIABLES */
10:
11: char szBtntestClass[] = "Btntest";
12: char szAppName[] = "Btntest Application";
13:
14: HAB habBtntest;
15: HMQ hmqBtntest;
16: HWND hwndBtntest;
17: HWND hwndBtntestFrame;
18:
19: INT fOwnerDraw;
20: INT cyText;
21:
22: void FAR PASCAL WinExitWindows(PCH);
23:
24: /************* PROCEDURE DECLARATIONS */
25:
26: MRESULT FAR PASCAL BtnDlgProc(HWND, USHORT, MPARAM, MPARAM);
27: MRESULT FAR PASCAL StyleDlgProc(HWND, USHORT, MPARAM, MPARAM);
28:
29:
30: BOOL BtntestInit()
31: {
32: /*
33: * Initialize the HAB
34: * (just usSet to -1L for now until we get WinInitialize()
35: */
36: habBtntest = WinInitialize(NULL);
37: hmqBtntest = WinCreateMsgQueue(habBtntest, 0);
38:
39: return(TRUE);
40: }
41:
42: int cdecl main(argc, argv)
43: int argc;
44: char *argv[];
45: {
46: QMSG qmsg;
47: USHORT wResult;
48: WRECT rc;
49:
50: if (!BtntestInit())
51: return(0);
52:
53: wResult = WinDlgBox(HWND_DESKTOP, (HWND)NULL, (PFNWP)BtnDlgProc,
54: (HMODULE)NULL, IDD_BTNTEST, (PCH)NULL);
55:
56: WinDestroyMsgQueue(hmqBtntest);
57:
58: WinTerminate(habBtntest);
59: DosExit(EXIT_PROCESS, 0);
60: }
61:
62: USHORT seed;
63: INT cPushed;
64:
65: MRESULT FAR PASCAL BtnDlgProc(hwnd, msg, mp1, mp2)
66: HWND hwnd;
67: USHORT msg;
68: MPARAM mp1;
69: MPARAM mp2;
70: {
71: HWND hwnd1, hwnd2;
72: CHAR rgch[256];
73: ULONG flStyle;
74: BOOL fParse;
75: HPS hps;
76: INT result;
77: ULONG lseed;
78: WRECT rc;
79:
80: hwnd2 = WinWindowFromID(hwnd, 11); /* Input/output edit control */
81: hwnd1 = WinWindowFromID(hwnd, 10); /* button control */
82:
83: switch (msg) {
84: case WM_COMMAND:
85: switch (LOUSHORT(mp1)) {
86: case DID_OK:
87: WinDismissDlg(hwnd, 1234);
88: break;
89: case 14: /* click */
90: WinSendMsg(hwnd1, BM_CLICK, (MPARAM)TRUE, 0L);
91: break;
92: case 15: /* querycheckindex */
93: result = (INT)WinSendMsg(hwnd1, BM_QUERYCHECKINDEX, 0L, 0L);
94: WinSetDlgItemShort(hwnd, 31, result, TRUE);
95: break;
96: case 16: /* queryhilite */
97: result = (INT)WinSendMsg(hwnd1, BM_QUERYHILITE, 0L, 0L);
98: WinSetDlgItemShort(hwnd, 31, result, TRUE);
99: break;
100: case 17: /* sethilite */
101: WinQueryDlgItemShort(hwnd, 31, (PSHORT)&result, FALSE);
102: WinSendMsg(hwnd1, BM_SETHILITE, (MPARAM)result, 0L);
103: break;
104: case 18: /* querycheck */
105: result = (INT)WinSendMsg(hwnd1, BM_QUERYCHECK, 0L, 0L);
106: WinSetDlgItemShort(hwnd, 31, result, TRUE);
107: break;
108: case 19: /* setcheck */
109: WinQueryDlgItemShort(hwnd, 31, (PSHORT)&result, FALSE);
110: WinSendMsg(hwnd1, BM_SETCHECK, (MPARAM)result, 0L);
111: break;
112: case 20: /* querydlgcode */
113: result = (INT)WinSendMsg(hwnd1, WM_QUERYDLGCODE, 0L, 0L);
114: WinSetDlgItemShort(hwnd, 31, result, TRUE);
115: break;
116: case 21: /* querytext */
117: result = WinQueryWindowText(hwnd1, 255, (PSZ)rgch);
118: WinSetWindowText(hwnd2, (PSZ)rgch);
119: WinSetDlgItemShort(hwnd, 31, result, TRUE);
120: break;
121: case 22: /* querytextlength */
122: result = WinQueryWindowTextLength(hwnd1);
123: WinSetDlgItemShort(hwnd, 31, result, TRUE);
124: break;
125: case 23: /* settext */
126: result = WinQueryWindowText(hwnd2, 255, (PSZ)rgch);
127: result = WinSetWindowText(hwnd1, (PSZ)rgch);
128: WinSetDlgItemShort(hwnd, 31, result, TRUE);
129: break;
130: case 25: /* Change flStyle */
131: flStyle = WinQueryWindowULong(hwnd1, QWL_STYLE);
132: result = WinDlgBox(HWND_DESKTOP, hwnd, (PFNWP)StyleDlgProc,
133: (HMODULE)NULL, 2, (PCH)&flStyle);
134: flStyle = (flStyle & 0xffff0000) + result;
135:
136: if (WinSendDlgItemMsg(hwnd, 26, BM_QUERYCHECK, 0L, 0L))
137: flStyle |= BS_HELP;
138: if (WinSendDlgItemMsg(hwnd, 27, BM_QUERYCHECK, 0L, 0L))
139: flStyle |= BS_NOPOINTERFOCUS;
140: if (WinSendDlgItemMsg(hwnd, 28, BM_QUERYCHECK, 0L, 0L))
141: flStyle |= BS_NOBORDER;
142:
143: WinSetWindowULong(hwnd1, QWL_STYLE, flStyle);
144: WinInvalidateRect(hwnd1, (PWRECT)NULL, TRUE);
145: break;
146: default:
147: break;
148: }
149: break;
150: case WM_CONTROL:
151: switch(LOUSHORT(mp1)) {
152: case 10:
153: WinSetDlgItemShort(hwnd, 33, HIUSHORT(mp1), FALSE);
154: switch (HIUSHORT(mp1)) {
155: case BN_CLICKED:
156: break;
157: case BN_PAINT:
158: WinQueryWindowRect(hwnd1, (PRECTL)&rc);
159: seed = ((seed * 23) + 15) & 0xffff;
160: lseed = -(long)(seed % SYSCLR_CSYSCOLORS + 10);
161: hps = WinGetPS(hwnd1);
162: WinFillRect(hps, (PRECTL)&rc, lseed);
163: WinReleasePS(hps);
164: break;
165: default:
166: break;
167: }
168: break;
169: case 24:
170: fParse = (BOOL)WinSendMsg(WinWindowFromID(hwnd, 24), BM_QUERYCHECK,
171: 0L, 0L);
172: WinEnableWindow(hwnd1, !fParse);
173: break;
174: case 26:
175: fParse = (BOOL)WinSendDlgItemMsg(hwnd, 26, BM_QUERYCHECK, 0L, 0L);
176: flStyle = WinQueryWindowULong(hwnd1, QWL_STYLE);
177: if (fParse)
178: flStyle |= BS_HELP;
179: else
180: flStyle &= ~BS_HELP;
181: WinSetWindowULong(hwnd1, QWL_STYLE, flStyle);
182: WinInvalidateRect(hwnd1, (PWRECT)NULL, TRUE);
183: break;
184: case 27:
185: fParse = (BOOL)WinSendDlgItemMsg(hwnd, 27, BM_QUERYCHECK, 0L, 0L);
186: flStyle = WinQueryWindowULong(hwnd1, QWL_STYLE);
187: if (fParse)
188: flStyle |= BS_NOPOINTERFOCUS;
189: else
190: flStyle &= ~BS_NOPOINTERFOCUS;
191: WinSetWindowULong(hwnd1, QWL_STYLE, flStyle);
192: break;
193: case 28:
194: fParse = (BOOL)WinSendDlgItemMsg(hwnd, 28, BM_QUERYCHECK, 0L, 0L);
195: flStyle = WinQueryWindowULong(hwnd1, QWL_STYLE);
196: if (fParse)
197: flStyle |= BS_NOBORDER;
198: else
199: flStyle &= ~BS_NOBORDER;
200: WinSetWindowULong(hwnd1, QWL_STYLE, flStyle);
201: WinInvalidateRect(hwnd1, (PWRECT)NULL, TRUE);
202: break;
203: }
204: break;
205: case WM_INITDLG:
206: /* Set up user button redraws */
207: seed = 12345;
208: cPushed = 0;
209: WinSetFocus(HWND_DESKTOP, hwnd1);
210: return((ULONG)TRUE);
211: break;
212: default:
213: return(WinDefDlgProc(hwnd, msg, mp1, mp2));
214: break;
215: }
216: return 0L;
217: }
218:
219: MRESULT FAR PASCAL StyleDlgProc(hwnd, msg, mp1, mp2)
220: HWND hwnd;
221: USHORT msg;
222: MPARAM mp1;
223: MPARAM mp2;
224: {
225: ULONG flStyle;
226: INT result;
227:
228: switch (msg) {
229: case WM_COMMAND:
230: if (LOUSHORT(mp1) == DID_OK) {
231: result = (INT)WinSendDlgItemMsg(hwnd, 3, BM_QUERYCHECKINDEX, 0L, 0L);
232: WinDismissDlg(hwnd, result);
233: }
234: break;
235: case WM_INITDLG:
236: flStyle = *((ULONG FAR *)mp2);
237: WinSendDlgItemMsg(hwnd, 3 + LOUSHORT(flStyle), BM_SETCHECK,
238: (MPARAM)TRUE, 0L);
239: break;
240: default:
241: return(WinDefDlgProc(hwnd, msg, mp1, mp2));
242: break;
243: }
244: return (FALSE);
245: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.