|
|
1.1 root 1: //==========================================================================//
2: // Constants //
3: //==========================================================================//
4:
5:
6: #define ThreeDPad 2
7: #define NOCHANGE -1
8:
9: #define MENUCLOSING (0xFFFF0000)
10:
11: #define WM_DLGSETFOCUS (WM_USER + 0x201)
12: #define WM_DLGKILLFOCUS (WM_USER + 0x202)
13:
14:
15:
16: //==========================================================================//
17: // Macros //
18: //==========================================================================//
19:
20:
21: #define PinInclusive(x, lo, hi) \
22: (max (lo, min (x, hi)))
23:
24:
25: #define PinExclusive(x, lo, hi) \
26: (max ((lo) + 1, min (x, (hi) - 1)))
27:
28:
29: #define BoolEqual(a, b) \
30: ((a == 0) == (b == 0))
31:
32:
33: //=============================//
34: // Window Instance Accessors //
35: //=============================//
36:
37: #define WindowParent(hWnd) \
38: ((HWND) GetWindowLong (hWnd, GWL_HWNDPARENT))
39:
40: #define WindowID(hWnd) \
41: GetWindowLong (hWnd, GWL_ID)
42:
43: #define WindowInstance(hWnd) \
44: GetWindowWord (hWnd, GWW_HINSTANCE)
45:
46: #define WindowStyle(hWnd) \
47: GetWindowLong (hWnd, GWL_STYLE)
48:
49: #define WindowSetStyle(hWnd, lStyle) \
50: SetWindowLong (hWnd, GWL_STYLE, lStyle)
51:
52: #define WindowExStyle(hWnd) \
53: GetWindowLong (hWnd, GWL_EXSTYLE)
54:
55: #define WindowSetID(hWnd, wID) \
56: SetWindowLong (hWnd, GWL_ID, wID)
57:
58:
59: // All modeless dialogs need to be dispatched separately in the WinMain
60: // message loop, but only if the dialog exists.
61:
62:
63: #define ModelessDispatch(hDlg, lpMsg) \
64: (hDlg ? IsDialogMessage (hDlg, lpMsg) : FALSE)
65:
66:
67: #define strclr(szString) \
68: (szString [0] = TEXT('\0'))
69:
70:
71: #define strempty(lpszString) \
72: (!(lpszString) || !(lpszString[0]))
73:
74: #define pstrsame(lpsz1, lpsz2) \
75: ((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsame (lpsz1, lpsz2)))
76:
77: #define pstrsamei(lpsz1, lpsz2) \
78: ((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsamei (lpsz1, lpsz2)))
79:
80: #define StringLoad(wID, szText) \
81: (LoadString (hInstance, wID, \
82: szText, sizeof (szText) - sizeof(TCHAR)))
83:
84:
85: #define WindowInvalidate(hWnd) \
86: (InvalidateRect (hWnd, NULL, TRUE))
87:
88:
89: #define WindowShow(hWnd, bShow) \
90: (ShowWindow (hWnd, (bShow) ? SW_SHOW : SW_HIDE))
91:
92:
93: #define MenuCheck(hMenu, wID, bCheck) \
94: (CheckMenuItem (hMenu, wID, (bCheck) ? \
95: (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)))
96:
97: #define DeleteFont(hFont) \
98: (DeleteObject (hFont))
99:
100: #define DeleteBitmap(hBitmap) \
101: (DeleteObject (hBitmap))
102:
103: #define DialogControl(hDlg, wControlID) \
104: GetDlgItem (hDlg, wControlID)
105:
106:
107: #define DialogSetInt(hDlg, wControlID, iValue) \
108: (SetDlgItemInt (hDlg, wControlID, iValue, TRUE))
109:
110:
111: #define DialogText(hDlg, wControlID, szText) \
112: (GetDlgItemText (hDlg, wControlID, szText, sizeof (szText) / sizeof(TCHAR) - 1))
113:
114: #define DialogInt(hDlg, wControlID) \
115: (GetDlgItemInt (hDlg, wControlID, NULL, TRUE))
116:
117: #define strsame(szText1, szText2) \
118: (!lstrcmp (szText1, szText2))
119:
120: #define strsamei(szText1, szText2) \
121: (!lstrcmpi (szText1, szText2))
122:
123: #define strnsame(szText1, szText2, iLen) \
124: (!lstrncmp (szText1, szText2, iLen))
125:
126:
127: #define CreateScreenDC() \
128: CreateDC (TEXT("DISPLAY"), NULL, NULL, NULL)
129:
130:
131:
132: #define RectContract(lpRect, xAmt, yAmt) \
133: { \
134: (lpRect)->left += (xAmt) ; \
135: (lpRect)->top += (yAmt) ; \
136: (lpRect)->right -= (xAmt) ; \
137: (lpRect)->bottom -= (yAmt) ; \
138: }
139:
140: #define IsBW(hDC) \
141: (DeviceNumColors (hDC) <= 2)
142:
143: #ifdef KEEP_PRINT
144: #define IsPrinterDC(hDC) \
145: (GetDeviceCaps (hDC, TECHNOLOGY) != DT_RASDISPLAY)
146: #else
147: #define IsPrinterDC(hDC) \
148: (FALSE)
149: #endif
150:
151: #define VertInchPixels(hDC, iNumerator, iDenominator) \
152: ((iNumerator * GetDeviceCaps (hDC, LOGPIXELSY)) / iDenominator)
153:
154:
155: #define HorzInchPixels(hDC, iNumerator, iDenominator) \
156: ((iNumerator * GetDeviceCaps (hDC, LOGPIXELSX)) / iDenominator)
157:
158:
159: #define VertPointPixels(hDC, iPoints) \
160: ((iPoints * GetDeviceCaps (hDC, LOGPIXELSY)) / 72)
161:
162:
163:
164: #define SimulateButtonPush(hDlg, wControlID) \
165: (PostMessage (hDlg, WM_COMMAND, \
166: (WPARAM) MAKELONG (wControlID, BN_CLICKED), \
167: (LPARAM) DialogControl (hDlg, wControlID)))
168:
169:
170: // convert an unicode string to ASCII string
171: #define ConvertUnicodeStr(pNonUnicodeStr, pUnicodeStr) \
172: wcstombs(pNonUnicodeStr, pUnicodeStr, lstrlen(pUnicodeStr) + 1)
173:
174: #define CallWinHelp(ContextID) \
175: WinHelp(hWndMain, pszHelpFile, HELP_CONTEXT, ContextID) ;
176:
177: //==========================================================================//
178: // Exported Functions //
179: //==========================================================================//
180:
181: void Fill (HDC hDC,
182: DWORD rgbColor,
183: LPRECT lpRect) ;
184:
185: void ScreenRectToClient (HWND hWnd,
186: LPRECT lpRect) ;
187:
188: int TextWidth (HDC hDC, LPTSTR lpszText) ;
189:
190:
191: void ThreeDConcave (HDC hDC,
192: int x1, int y1,
193: int x2, int y2,
194: BOOL bFace) ;
195:
196:
197: void ThreeDConvex (HDC hDC,
198: int x1, int y1,
199: int x2, int y2) ;
200:
201:
202: void ThreeDConcave1 (HDC hDC,
203: int x1, int y1,
204: int x2, int y2) ;
205:
206:
207: void ThreeDConvex1 (HDC hDC,
208: int x1, int y1,
209: int x2, int y2) ;
210:
211:
212: int _cdecl mike (TCHAR *szFormat, ...) ;
213:
214: int _cdecl DlgErrorBox (HWND hDlg, UINT id, ...) ;
215:
216: int _cdecl mike1 (TCHAR *szFormat, ...) ;
217: int _cdecl mike2 (TCHAR *szFormat, ...) ;
218:
219: int FontHeight (HDC hDC,
220: BOOL bIncludeLeading) ;
221:
222:
223: int TextAvgWidth (HDC hDC,
224: int iNumChars) ;
225:
226:
227:
228: void WindowCenter (HWND hWnd) ;
229:
230:
231:
232: BOOL DialogMove (HDLG hDlg,
233: WORD wControlID,
234: int xPos,
235: int yPos,
236: int xWidth,
237: int yHeight) ;
238:
239:
240: int DialogWidth (HDLG hDlg,
241: WORD wControlID) ;
242:
243:
244: int DialogXPos (HDLG hDlg,
245: WORD wControlID) ;
246:
247: int DialogYPos (HDLG hDlg,
248: WORD wControlID) ;
249:
250:
251: void DialogShow (HDLG hDlg,
252: WORD wID,
253: BOOL bShow) ;
254:
255:
256: BOOL _cdecl DialogSetText (HDLG hDlg,
257: WORD wControlID,
258: WORD wStringID,
259: ...) ;
260:
261: BOOL _cdecl DialogSetString (HDLG hDlg,
262: WORD wControlID,
263: LPTSTR lpszFormat,
264: ...) ;
265:
266:
267: LPTSTR LongToCommaString (LONG lNumber,
268: LPTSTR lpszText) ;
269:
270:
271: BOOL MenuSetPopup (HWND hWnd,
272: int iPosition,
273: WORD wControlID,
274: LPTSTR lpszResourceID) ;
275:
276: void DialogEnable (HDLG hDlg,
277: WORD wID,
278: BOOL bEnable) ;
279:
280:
281: LPTSTR FileCombine (LPTSTR lpszFileSpec,
282: LPTSTR lpszFileDirectory,
283: LPTSTR lpszFileName) ;
284:
285: LPTSTR ExtractFileName (LPTSTR pFileSpec) ;
286:
287: int CBAddInt (HWND hWndCB,
288: int iValue) ;
289:
290: FLOAT DialogFloat (HDLG hDlg,
291: WORD wControlID,
292: BOOL *pbOK) ;
293:
294:
295: LPTSTR StringAllocate (LPTSTR lpszText1) ;
296:
297:
298: int DivRound (int iNumerator, int iDenominator) ;
299:
300:
301:
302: BOOL MenuEnableItem (HMENU hMenu,
303: WORD wID,
304: BOOL bEnable) ;
305:
306:
307:
308: void DrawBitmap (HDC hDC,
309: HBITMAP hBitmap,
310: int xPos,
311: int yPos,
312: LONG lROPCode) ;
313:
314:
315: int BitmapWidth (HBITMAP hBitmap) ;
316:
317:
318:
319: int BitmapHeight (HBITMAP hBitmap) ;
320:
321:
322: void WindowResize (HWND hWnd,
323: int xWidth,
324: int yHeight) ;
325:
326:
327: int WindowWidth (HWND hWnd) ;
328:
329:
330: int WindowHeight (HWND hWnd) ;
331:
332:
333:
334: void WindowSetTopmost (HWND hWnd, BOOL bTopmost) ;
335:
336:
337: void WindowEnableTitle (HWND hWnd, BOOL bTitle) ;
338:
339:
340: void Line (HDC hDC,
341: HPEN hPen,
342: int x1, int y1,
343: int x2, int y2) ;
344:
345:
346:
347: #define HLine(hDC, hPen, x1, x2, y) \
348: Line (hDC, hPen, x1, y, x2, y) ;
349:
350:
351: #define VLine(hDC, hPen, x, y1, y2) \
352: Line (hDC, hPen, x, y1, x, y2) ;
353:
354:
355: int DialogHeight (HDLG hDlg,
356: WORD wControlID) ;
357:
358:
359:
360: void DialogSetFloat (HDLG hDlg,
361: WORD wControlID,
362: FLOAT eValue) ;
363:
364: void DialogSetInterval (HDLG hDlg,
365: WORD wControlID,
366: int IntervalMSec ) ;
367:
368: int MessageBoxResource (HWND hWndParent,
369: WORD wTextID,
370: WORD wTitleID,
371: UINT uiStyle) ;
372:
373:
374:
375: BOOL DlgFocus (HDLG hDlg, WORD wControlID) ;
376:
377:
378: BOOL DeviceNumColors (HDC hDC) ;
379:
380:
381:
382: void WindowPlacementToString (PWINDOWPLACEMENT pWP,
383: LPTSTR lpszText) ;
384:
385: void StringToWindowPlacement (LPTSTR lpszText,
386: PWINDOWPLACEMENT pWP) ;
387:
388: DWORD MenuIDToHelpID (DWORD MenuID) ;
389:
390:
391:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.