|
|
1.1 root 1: /*-----------------------------------------------
2: MINMAX2.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 [] = "MinMax2" ;
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[4] ;
49:
50: switch (msg)
51: {
52: case WM_CREATE:
53: cxMinMax = WinQuerySysValue (HWND_DESKTOP, SV_CXMINMAXBUTTON) ;
54: cyMinMax = WinQuerySysValue (HWND_DESKTOP, SV_CYMINMAXBUTTON) ;
55: return 0 ;
56:
57: case WM_SIZE:
58: cxClient = SHORT1FROMMP (mp2) ;
59: cyClient = SHORT2FROMMP (mp2) ;
60: return 0 ;
61:
62: case WM_PAINT:
63: hps = WinBeginPaint (hwnd, NULL, NULL) ;
64: GpiErase (hps) ;
65:
66: aptl[0].x = 0 ; // target lower left
67: aptl[0].y = 0 ;
68:
69: aptl[1].x = cxClient ; // target upper right
70: aptl[1].y = cyClient ;
71:
72: aptl[2].x = cxClient - cxMinMax ; // source lower left
73: aptl[2].y = cyClient ;
74:
75: aptl[3].x = cxClient ; // source upper right
76: aptl[3].y = cyClient + cyMinMax ;
77:
78: GpiBitBlt (hps, hps, 4L, aptl, ROP_SRCCOPY, BBO_AND) ;
79:
80: WinEndPaint (hps) ;
81: return 0 ;
82: }
83: return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.