226 lines
7 KiB
C
226 lines
7 KiB
C
/*++
|
|
|
|
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)))
|
|
|