|
|
1.1 root 1: /*-----------------------------------------------
2: MINMAX1.C -- Bitblt of Minimize-Maximize Menu
3: -----------------------------------------------*/
4:
5: #define INCL_WIN
6: #include <os2.h>
7:
8: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
9:
10: int main (void)
11: {
12: static CHAR szClientClass [] = "MinMax1" ;
13: static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU |
14: FCF_SIZEBORDER | FCF_MINMAX |
15: FCF_SHELLPOSITION | FCF_TASKLIST ;
16: HAB hab ;
17: HMQ hmq ;
18: HWND hwndFrame, hwndClient ;
19: QMSG qmsg ;
20:
21: hab = WinInitialize (0) ;
22: hmq = WinCreateMsgQueue (hab, 0) ;
23:
24: WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ;
25:
26: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
27: &flFrameFlags, szClientClass, NULL,
28: 0L, NULL, 0, &hwndClient) ;
29:
30: WinSendMsg (hwndFrame, WM_SETICON,
31: WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE),
32: NULL) ;
33:
34: while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
35: WinDispatchMsg (hab, &qmsg) ;
36:
37: WinDestroyWindow (hwndFrame) ;
38: WinDestroyMsgQueue (hmq) ;
39: WinTerminate (hab) ;
40: return 0 ;
41: }
42:
43: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
44: {
45: static LONG cxMinMax, cyMinMax ;
46: static SHORT cxClient, cyClient ;
47: HPS hps ;
48: POINTL aptl[3] ;
49: LONG lRow, lCol ;
50:
51: switch (msg)
52: {
53: case WM_CREATE:
54: cxMinMax = WinQuerySysValue (HWND_DESKTOP, SV_CXMINMAXBUTTON) ;
55: cyMinMax = WinQuerySysValue (HWND_DESKTOP, SV_CYMINMAXBUTTON) ;
56: return 0 ;
57:
58: case WM_SIZE:
59: cxClient = SHORT1FROMMP (mp2) ;
60: cyClient = SHORT2FROMMP (mp2) ;
61: return 0 ;
62:
63: case WM_PAINT:
64: hps = WinBeginPaint (hwnd, NULL, NULL) ;
65:
66: GpiErase (hps) ;
67:
68: for (lRow = 0 ; lRow <= cyClient / cyMinMax ; lRow++)
69: for (lCol = 0 ; lCol <= cxClient / cxMinMax ; lCol++)
70: {
71: aptl[0].x = lCol * cxMinMax ; // target
72: aptl[0].y = lRow * cyMinMax ; // lower left
73:
74: aptl[1].x = aptl[0].x + cxMinMax ; // target
75: aptl[1].y = aptl[0].y + cyMinMax ; // upper right
76:
77: aptl[2].x = cxClient - cxMinMax ; // source
78: aptl[2].y = cyClient ; // lower left
79:
80: GpiBitBlt (hps, hps, 3L, aptl, ROP_SRCCOPY, BBO_AND) ;
81: }
82: WinEndPaint (hps) ;
83: return 0 ;
84: }
85: return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.