/*++ Copyright (C) 1992-1999 Microsoft Corporation Module Name: winhelpr.h Abstract: This file contains macros for more easily dealing with windows messages and objects. Think of it as an extension to windows.h. --*/ //==========================================================================// // Macros // //==========================================================================// #define SetFont(hWnd, hFont) \ (SendMessage ((hWnd), WM_SETFONT, (WPARAM)hFont, (LPARAM)0)) #define GetFont(hWnd) \ (HFONT)(SendMessage((hWnd), WM_GETFONT, (WPARAM)0, (LPARAM)0)) #define PrintClient(hWnd, hDC, uFlags) \ (SendMessage((hWnd), WM_PRINTCLIENT, (WPARAM)hDC, (LPARAM)(uFlags)) ) //======================================// // Object-differentiation routines // //======================================// // Windows APIs deal with all GDI objects the same. There's a SelectObject, // no SelectBitmap, SelectFont, etc. We use these instead to make the code // easier to read. Also, you can redefine one of these to check the // validity of a particular GDI object type. #define SelectBitmap(hDC, hBitmap) \ ((HBITMAP)SelectObject (hDC, hBitmap)) #define SelectFont(hDC, hFont) \ ((HFONT)SelectObject (hDC, hFont)) #define SelectBrush(hDC, hBrush) \ ((HBRUSH)SelectObject (hDC, hBrush)) #define DeleteBrush(hBrush) \ (DeleteObject (hBrush)) #define SelectPen(hDC, hPen) \ ((HPEN)SelectObject (hDC, hPen)) #define DeletePen(hPen) \ (DeleteObject (hPen)) //======================================// // // //======================================// #define CBData(hWndCB, iIndex) \ (SendMessage (hWndCB, CB_GETITEMDATA, (WPARAM)iIndex, (LPARAM)0)) #define CBSetData(hWndCB, iIndex, lData) \ (SendMessage (hWndCB, CB_SETITEMDATA, (WPARAM)iIndex, (LPARAM)lData)) #define CBAdd(hWndCB, lpszText) \ ((INT)(DWORD)SendMessage((hWndCB), CB_ADDSTRING, \ (WPARAM)0, (LPARAM)(LPCTSTR)(lpszText))) #define CBDelete(hWndCB, iIndex) \ ((INT)(DWORD)SendMessage((hWndCB), CB_DELETESTRING, \ (WPARAM)iIndex, (LPARAM)0)) #define CBFind(hWndCB, lpszText) \ (SendMessage (hWndCB, CB_FINDSTRING, (WPARAM)(-1), (LPARAM) lpszText)) #define CBInsert(hWndCB, iIndex, lpszText) \ (SendMessage (hWndCB, CB_INSERTSTRING, (WPARAM)iIndex, (LPARAM) lpszText)) #define CBNumItems(hWndCB) \ ((INT) SendMessage (hWndCB, CB_GETCOUNT, (WPARAM)0, (LPARAM)0)) #define CBReset(hWndCB) \ ((INT)(DWORD)SendMessage((hWndCB), CB_RESETCONTENT,\ (WPARAM)0, (LPARAM)0)) #define CBSelection(hWndCB) \ (SendMessage (hWndCB, CB_GETCURSEL, (WPARAM)0, (LPARAM)0)) #define CBSetSelection(hWndCB, iIndex) \ (SendMessage (hWndCB, CB_SETCURSEL, (WPARAM)iIndex, (LPARAM)0)) #define CBString(hWndCB, iIndex, lpszText) \ (SendMessage (hWndCB, CB_GETLBTEXT, (WPARAM)iIndex, (LPARAM)lpszText)) #define CBStringLen(hWndCB, iIndex) \ (SendMessage (hWndCB, CB_GETLBTEXTLEN, (WPARAM)iIndex, (LPARAM)0)) //======================================// // Listbox helpers // //======================================// #define LBAdd(hWndLB, lpszText) \ (SendMessage (hWndLB, LB_ADDSTRING, (WPARAM)0, (LPARAM)lpszText)) #define LBData(hWndLB, iIndex) \ (SendMessage (hWndLB, LB_GETITEMDATA, (WPARAM)iIndex, (LPARAM)0)) #define LBDelete(hWndLB, iIndex) \ (SendMessage (hWndLB, LB_DELETESTRING, (WPARAM)iIndex, (LPARAM)0)) #define LBFind(hWndLB, lpszText) \ (SendMessage (hWndLB, LB_FINDSTRING, (WPARAM)-1, (LPARAM)lpszText)) #define LBFocus(hWndLB) \ (SendMessage (hWndLB, LB_GETCARETINDEX, (WPARAM)0, (LPARAM)0)) #define LBInsert(hWndLB, iIndex, lpszText) \ (SendMessage (hWndLB, LB_INSERTSTRING, (WPARAM)iIndex, (LPARAM)lpszText)) #define LBNumItems(hWndLB) \ ((INT) SendMessage (hWndLB, LB_GETCOUNT, (WPARAM)0, (LPARAM)0)) #define LBReset(hWndLB) \ ((INT)(DWORD)SendMessage((hWndLB), LB_RESETCONTENT,\ (WPARAM)0, (LPARAM)0)) #define LBSelected(hwndLB, index) \ ((INT)(DWORD)SendMessage((hwndLB), LB_GETSEL, \ (WPARAM)(INT)(index), (LPARAM)0)) #define LBSelection(hWndLB) \ ((INT)(DWORD)SendMessage (hWndLB, LB_GETCURSEL, (WPARAM)0, (LPARAM)0)) #define LBSetData(hWndLB, iIndex, lData) \ (SendMessage (hWndLB, LB_SETITEMDATA, (WPARAM)iIndex, (LPARAM)lData)) #define LBSetSelection(hWndLB, iIndex) \ (SendMessage (hWndLB, LB_SETCURSEL, (WPARAM)iIndex, (LPARAM)0)) #define MLBSetSelection(hWndMLB, iIndex, bSet) \ (SendMessage (hWndMLB, LB_SETSEL, (WPARAM)bSet, (LPARAM)iIndex)) #define LBSetVisible(hWndLB, iIndex) \ (SendMessage (hWndLB, LB_SETCARETINDEX, (WPARAM)iIndex, (LPARAM)0)) #define LBSetRedraw(hWndLB, bDrawOnOff) \ (SendMessage (hWndLB, WM_SETREDRAW, (WPARAM)bDrawOnOff, (LPARAM)0)) #define LBSetHorzExtent(hWndLB, wExtent) \ (SendMessage (hWndLB, LB_SETHORIZONTALEXTENT, (WPARAM)wExtent, (LPARAM)0)) #define LBSetItemHeight(hWndLB, iHeight) \ (SendMessage (hWndLB, LB_SETITEMHEIGHT, (WPARAM)0, (LPARAM)iHeight)) #define LBGetTextLen(hWndLB, iIndex) \ (SendMessage (hWndLB, LB_GETTEXTLEN, (WPARAM)iIndex, (LPARAM)0)) #define LBGetText(hWndLB, iIndex, szPath) \ (SendMessage (hWndLB, LB_GETTEXT, (WPARAM)iIndex, (LPARAM)szPath)) //======================================// // Edit helpers // //======================================// #define EditModified(hWndEdit) \ (SendMessage ((hWndEdit), EM_GETMODIFY, (WPARAM)0, (LPARAM)0)) #define EditSetModified(hWndEdit, bModified) \ (SendMessage ((hWndEdit), EM_SETMODIFY, (WPARAM)bModified, (LPARAM)0)) #define EditSetLimit(hWndEdit, iLimit) \ (SendMessage ((hWndEdit), EM_LIMITTEXT, (WPARAM)iLimit, (LPARAM)0)) #define EditSetTextPos(hWnd, idControl, iStartPos, iEndPos) \ (SendMessage (GetDlgItem(hWnd, idControl), EM_SETSEL, (WPARAM)iStartPos, (LPARAM)iEndPos)) #define EditSetTextEndPos(hWnd, idControl) \ EditSetTextPos(hWnd, idControl, (WPARAM)0, (LPARAM)32767) //======================================// // Cursor helpers // //======================================// #define SetHourglassCursor() \ (SetCursor(LoadCursor(NULL, IDC_WAIT))) #define SetArrowCursor() \ (SetCursor(LoadCursor(NULL, IDC_ARROW)))