You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
304 lines
16 KiB
304 lines
16 KiB
#ifndef _WIN_API_H_
|
|
#define _WIN_API_H_
|
|
#include <windows.h>
|
|
#include <commctrl.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//----------------------------------------------------------------
|
|
//Common
|
|
//----------------------------------------------------------------
|
|
#ifndef UNDER_CE
|
|
extern BOOL WINAPI WinSetWindowTextA_CP(UINT codePage, HWND hWnd, LPCSTR lpString);
|
|
extern int WINAPI WinGetWindowTextA_CP(UINT codePage, HWND hWnd, LPSTR lpString, int nMaxCount);
|
|
extern int WINAPI WinGetWindowTextLengthA_CP(UINT codePage, HWND hWnd);
|
|
extern BOOL WINAPI WinSetWindowTextW_CP(UINT codePage, HWND hWnd, LPCWSTR lpString);
|
|
extern int WINAPI WinGetWindowTextW_CP(UINT codePage, HWND hWnd, LPWSTR lpString, int nMaxCount);
|
|
extern int WINAPI WinGetWindowTextLengthW_CP(UINT codePage, HWND hWnd);
|
|
#endif
|
|
|
|
|
|
#if defined(UNICODE) || defined(_UNICODE) || !defined(AWBOTH)
|
|
#define WinSendMessage SendMessage
|
|
#define WinPostMessage PostMessage
|
|
#define WinPeekMessage PeekMessage
|
|
#define WinDispatchMessage DispatchMessage
|
|
#define WinTranslateMessage TranslateMessage
|
|
#define WinSetWindowLong SetWindowLong
|
|
#define WinGetWindowLong GetWindowLong
|
|
#define WinCallWindowProc CallWindowProc
|
|
#define WinDefWindowProc DefWindowProc
|
|
#define WinIsDialogMessage IsDialogMessage
|
|
#define WinDefWindowProc DefWindowProc
|
|
#define WinTranslateAccelerator TranslateAccelerator
|
|
#define WinMessageBoxA MessageBoxA
|
|
#define WinMessageBoxW MessageBoxW
|
|
#define WinSetWindowTextA SetWindowTextA
|
|
#define WinSetWindowTextW SetWindowTextW
|
|
#define WinGetWindowTextA GetWindowTextA
|
|
#define WinGetWindowTextW GetWindowTextW
|
|
#define WinGetWindowTextLengthA GetWindowTextLengthA
|
|
#define WinGetWindowTextLengthW GetWindowTextLengthW
|
|
#ifdef UNDER_CE
|
|
#define WinSetWindowTextW_CP(_cp, _h, _s) WinSetWindowTextW((_h), (_s))
|
|
#define WinGetWindowTextW_CP(_cp, _h, _s, _n) WinGetWindowTextW((_h), (_s), (_n))
|
|
#define WinGetWindowTextLengthW_CP(_cp, _h) WinGetWindowTextLengthW(_h)
|
|
#endif
|
|
|
|
#ifdef _WIN64
|
|
#define WinSetUserData(_h, _l) SetWindowLongPtr(_h, GWLP_USERDATA, (LONG_PTR)_l)
|
|
#define WinGetUserData(_h) GetWindowLongPtr(_h, GWLP_USERDATA)
|
|
#define WinSetUserDlgData(_h, _ud) SetWindowLongPtr(_h, DWLP_USER, (LONG_PTR)_ud)
|
|
#define WinGetUserDlgData(_h) GetWindowLongPtr(_h, DWLP_USER)
|
|
#define WinSetMsgResult(_h, _ud) SetWindowLongPtr(_h, DWLP_MSGRESULT, (LONG_PTR)_ud)
|
|
#define WinGetMsgResult(_h) GetWindowLongPtr(_h, DWLP_MSGRESULT)
|
|
#define WinSetWndProc(_h, _proc) (WNDPROC)SetWindowLongPtr(_h, GWLP_WNDPROC, (WNDPROC)_proc)
|
|
#define WinGetWndProc(_h) (WNDPROC)GetWindowLongPtr(_h, GWLP_WNDPROC)
|
|
#define WinGetInstanceHandle(_h) (HINSTANCE)GetWindowLongPtr(_h, GWLP_HINSTANCE)
|
|
#else //!_WIN64
|
|
#define WinSetUserData(_h, _l) SetWindowLong(_h, GWL_USERDATA, (LONG)_l)
|
|
#define WinGetUserData(_h) GetWindowLong(_h, GWL_USERDATA)
|
|
#define WinSetUserDlgData(_h, _ud) SetWindowLong(_h, DWL_USER, (LONG)_ud)
|
|
#define WinGetUserDlgData(_h) GetWindowLong(_h, DWL_USER)
|
|
#define WinSetMsgResult(_h, _ud) SetWindowLong(_h, DWL_MSGRESULT, (LONG)_ud)
|
|
#define WinGetMsgResult(_h) GetWindowLong(_h, DWL_MSGRESULT)
|
|
#define WinSetWndProc(_h, _proc) SetWindowLong(_h, GWL_WNDPROC, (LONG)_proc)
|
|
#define WinGetWndProc(_h) GetWindowLong(_h, GWL_WNDPROC)
|
|
#define WinGetInstanceHandle(_h) (HINSTANCE)GetWindowLong(_h, GWL_HINSTANCE)
|
|
|
|
#define WinSetUserPtr(_h, _lp) WinSetUserData(_h, _lp)
|
|
#define WinGetUserPtr(_h) WinGetUserData(_h)
|
|
|
|
#define WinSetStyle(_h, _s) (DWORD)SetWindowLong(_h, GWL_STYLE, _s)
|
|
#define WinGetStyle(_h) (DWORD)GetWindowLong(_h, GWL_STYLE)
|
|
#define WinSetExStyle(_h, _s) (DWORD)SetWindowLong(_h, GWL_EXSTYLE, (LONG)_s)
|
|
#define WinGetExStyle(_h) (DWORD)GetWindowLong(_h, GWL_EXSTYLE)
|
|
|
|
|
|
#endif
|
|
|
|
#else //if defined(UNICODE) || defined(_UNICODE) || !defined(AWBOTH)---
|
|
|
|
extern LRESULT WINAPI WinSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
|
extern BOOL WINAPI WinPostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
|
extern BOOL WINAPI WinPeekMessage(LPMSG lpMsg,
|
|
HWND hWnd,
|
|
UINT wMsgFilterMin,
|
|
UINT wMsgFilterMax,
|
|
UINT wRemoveMsg);
|
|
#define WinTranslateMessage TranslateMessage
|
|
extern LRESULT WINAPI WinDispatchMessage(CONST MSG *lpMsg);
|
|
extern LONG WINAPI WinSetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);
|
|
extern LONG WINAPI WinGetWindowLong(HWND hWnd, int nIndex);
|
|
extern LRESULT WINAPI WinCallWindowProc(WNDPROC lpPrevWndFunc,
|
|
HWND hWnd,
|
|
UINT Msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
extern LRESULT WINAPI WinDefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
|
extern BOOL WINAPI WinIsDialogMessage(HWND hDlg, LPMSG lpMsg);
|
|
extern int WINAPI WinTranslateAccelerator(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg);
|
|
extern int WINAPI WinMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
|
|
extern int WINAPI WinMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
|
|
|
|
#define WinSetWindowTextA(_h, _lp) WinSetWindowTextA_CP(CP_ACP, _h, _lp)
|
|
#define WinGetWindowTextA(_h, _lp, _c) WinGetWindowTextA_CP(CP_ACP, _h, _lp, _c)
|
|
#define WinSetWindowTextW(_h, _lp) WinSetWindowTextW_CP(CP_ACP, _h, _lp)
|
|
#define WinGetWindowTextW(_h, _lp, _c) WinGetWindowTextW_CP(CP_ACP, _h, _lp, _c)
|
|
|
|
#ifdef _WIN64
|
|
extern LONG_PTR WINAPI WinSetUserData(HWND hwnd, LONG_PTR lUserData);
|
|
extern LONG_PTR WINAPI WinGetUserData(HWND hwnd);
|
|
extern LONG_PTR WINAPI WinSetUserDlgData(HWND hwnd, LONG_PTR lUserData);
|
|
extern LONG_PTR WINAPI WinGetUserDlgData(HWND hwnd);
|
|
extern LONG_PTR WINAPI WinSetMsgResult(HWND hwnd, LONG_PTR lUserData);
|
|
extern LONG_PTR WINAPI WinGetMsgResult(HWND hwnd);
|
|
#else
|
|
extern LONG WINAPI WinSetUserData(HWND hwnd, LONG lUserData);
|
|
extern LONG WINAPI WinGetUserData(HWND hwnd);
|
|
extern LONG WINAPI WinSetUserDlgData(HWND hwnd, LONG lUserData);
|
|
extern LONG WINAPI WinGetUserDlgData(HWND hwnd);
|
|
extern LONG WINAPI WinSetMsgResult(HWND hwnd, LONG lUserData);
|
|
extern LONG WINAPI WinGetMsgResult(HWND hwnd);
|
|
#endif
|
|
|
|
extern LPVOID WINAPI WinSetUserPtr(HWND hwnd, LPVOID lpVoid);
|
|
extern LPVOID WINAPI WinGetUserPtr(HWND hwnd);
|
|
extern WNDPROC WINAPI WinSetWndProc(HWND hwnd, WNDPROC lpfnWndProc);
|
|
extern WNDPROC WINAPI WinGetWndProc(HWND hwnd);
|
|
extern DWORD WINAPI WinSetStyle(HWND hwnd, DWORD dwStyle);
|
|
extern DWORD WINAPI WinGetStyle(HWND hwnd);
|
|
extern DWORD WINAPI WinSetExStyle(HWND hwnd, DWORD dwStyle);
|
|
extern DWORD WINAPI WinGetExStyle(HWND hwnd);
|
|
extern HINSTANCE WINAPI WinGetInstanceHandle(HWND hwnd);
|
|
#endif //End of --if defined(UNICODE) || defined(_UNICODE) || !defined(AWBOTH)---
|
|
|
|
|
|
//----------------------------------------------------------------
|
|
// ComboBox common api
|
|
//----------------------------------------------------------------
|
|
#ifndef UNDER_CE
|
|
INT CB_AddStringA (HWND hwndCtl, LPCSTR lpsz);
|
|
INT CB_FindStringA (HWND hwndCtl, INT indexStart, LPCSTR lpszFind);
|
|
INT CB_InsertStringA (HWND hwndCtl, INT index, LPCSTR lpsz);
|
|
INT CB_GetLBTextLenA (HWND hwndCtl, INT index);
|
|
INT CB_GetLBTextA (HWND hwndCtl, INT index, LPSTR lpszBuffer);
|
|
INT CB_FindStringExactA (HWND hwndCtl, INT indexStart, LPCSTR lpszFind);
|
|
INT CB_SelectStringA (HWND hwndCtl, INT indexStart, LPCSTR lpszSelect);
|
|
#endif
|
|
INT CB_AddStringW (HWND hwndCtl, LPCWSTR lpsz);
|
|
INT CB_InsertStringW (HWND hwndCtl, INT index, LPCWSTR lpsz);
|
|
INT CB_GetLBTextLenW (HWND hwndCtl, INT index);
|
|
INT CB_GetLBTextW (HWND hwndCtl, INT index, LPWSTR lpszBuffer);
|
|
INT CB_FindStringW (HWND hwndCtl, INT indexStart, LPCWSTR lpszFind);
|
|
INT CB_FindStringExactW (HWND hwndCtl, INT indexStart, LPCWSTR lpszFind);
|
|
INT CB_SelectStringW (HWND hwndCtl, INT indexStart, LPCWSTR lpszSelect);
|
|
|
|
//----------------------------------------------------------------
|
|
// ComboBox macro
|
|
//----------------------------------------------------------------
|
|
#define WinComboBox_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
|
|
#define WinComboBox_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
|
|
#define WinComboBox_GetTextA(hwndCtl, lpch, cchMax) WinGetWindowTextA((hwndCtl), (lpch), (cchMax))
|
|
#define WinComboBox_GetTextW(hwndCtl, lpch, cchMax) WinGetWindowTextW((hwndCtl), (lpch), (cchMax))
|
|
#define WinComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
|
|
#define WinComboBox_GetTextLengthA(hwndCtl) WinGetWindowTextLengthA(hwndCtl)
|
|
#define WinComboBox_GetTextLengthW(hwndCtl) WinGetWindowTextLengthW(hwndCtl)
|
|
#define WinComboBox_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
|
|
#define WinComboBox_SetTextA(hwndCtl, lpsz) WinSetWindowTextA((hwndCtl), (lpsz))
|
|
#define WinComboBox_SetTextW(hwndCtl, lpsz) WinSetWindowTextW((hwndCtl), (lpsz))
|
|
#define WinComboBox_LimitText(hwndCtl, cchLimit) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_LIMITTEXT, \
|
|
(WPARAM)(int)(cchLimit), \
|
|
0L))
|
|
#define WinComboBox_GetEditSel(hwndCtl) ((DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETEDITSEL, \
|
|
0L, 0L))
|
|
#define WinComboBox_SetEditSel(hwndCtl, ichStart, ichEnd) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SETEDITSEL, \
|
|
0L, \
|
|
MAKELPARAM((ichStart), \
|
|
(ichEnd))))
|
|
#define WinComboBox_GetCount(hwndCtl) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETCOUNT, \
|
|
0L, 0L))
|
|
#define WinComboBox_ResetContent(hwndCtl) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_RESETCONTENT, \
|
|
0L, 0L))
|
|
#define WinComboBox_AddString(hwndCtl, lpsz) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_ADDSTRING, \
|
|
0L, \
|
|
(LPARAM)(LPCTSTR)(lpsz)))
|
|
#define WinComboBox_AddStringA(hwndCtl, lpsz) CB_AddStringA((hwndCtl), lpsz)
|
|
#define WinComboBox_AddStringW(hwndCtl, lpsz) CB_AddStringW((hwndCtl), lpsz)
|
|
#define WinComboBox_InsertString(hwndCtl, index, lpsz) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_INSERTSTRING, \
|
|
(WPARAM)(int)(index), \
|
|
(LPARAM)(LPCTSTR)(lpsz)))
|
|
#define WinComboBox_InsertStringA(hwndCtl, index, lpsz) CB_InsertStringA((hwndCtl), index, lpsz)
|
|
#define WinComboBox_InsertStringW(hwndCtl, index, lpsz) CB_InsertStringW((hwndCtl), index, lpsz)
|
|
#define WinComboBox_AddItemData(hwndCtl, data) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_ADDSTRING, \
|
|
0L, \
|
|
(LPARAM)(data)))
|
|
#define WinComboBox_InsertItemData(hwndCtl, index, data) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_INSERTSTRING, \
|
|
(WPARAM)(int)(index), \
|
|
(LPARAM)(data)))
|
|
#define WinComboBox_DeleteString(hwndCtl, index) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_DELETESTRING, \
|
|
(WPARAM)(int)(index), \
|
|
0L))
|
|
#define WinComboBox_GetLBTextLen(hwndCtl, index) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETLBTEXTLEN, \
|
|
(WPARAM)(int)(index), \
|
|
0L))
|
|
//#define WinComboBox_GetLBTextLenA(hwndCtl, index) CB_GetLBTextLenA((hwndCtl), (index))
|
|
//#define WinComboBox_GetLBTextLenW(hwndCtl, index) CB_GetLBTextLenW((hwndCtl), (index))
|
|
#define WinComboBox_GetLBText(hwndCtl, index, lpszBuffer) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETLBTEXT, \
|
|
(WPARAM)(int)(index), \
|
|
(LPARAM)(LPCTSTR)(lpszBuffer)))
|
|
#define WinComboBox_GetLBTextA(hwndCtl, index, lpszBuffer) CB_GetLBTextA((hwndCtl), (index), lpszBuffer)
|
|
#define WinComboBox_GetLBTextW(hwndCtl, index, lpszBuffer) CB_GetLBTextW((hwndCtl), (index), lpszBuffer)
|
|
#define WinComboBox_GetItemData(hwndCtl, index) ((LRESULT)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETITEMDATA, \
|
|
(WPARAM)(int)(index), \
|
|
0L))
|
|
#define WinComboBox_SetItemData(hwndCtl, index, data) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SETITEMDATA, \
|
|
(WPARAM)(int)(index), \
|
|
(LPARAM)(data)))
|
|
#define WinComboBox_FindString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_FINDSTRING, \
|
|
(WPARAM)(int)(indexStart), \
|
|
(LPARAM)(LPCTSTR)(lpszFind)))
|
|
#define WinComboBox_FindStringA(hwndCtl,indexStart,lpszFind) CB_FindStringA((hwndCtl), indexStart,lpszFind)
|
|
#define WinComboBox_FindStringW(hwndCtl,indexStart,lpszFind) CB_FindStringW((hwndCtl), indexStart,lpszFind)
|
|
#define WinComboBox_FindItemData(hwndCtl, indexStart, data) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_FINDSTRING, \
|
|
(WPARAM)(int)(indexStart), \
|
|
(LPARAM)(data)))
|
|
#define WinComboBox_GetCurSel(hwndCtl) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETCURSEL, \
|
|
0L, 0L))
|
|
#define WinComboBox_SetCurSel(hwndCtl, index) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SETCURSEL, \
|
|
(WPARAM)(int)(index), \
|
|
0L))
|
|
#define WinComboBox_SelectString(hwndCtl, indexStart, lpszSelect) ((int)WinSendMessage((hwndCtl), \
|
|
CB_SELECTSTRING, \
|
|
(WPARAM)(indexStart), \
|
|
(LPARAM)(lpszSelect)))
|
|
#define WinComboBox_SelectStringA(hwndCtl, indexStart, lpszSelect) CB_SelectStringA((hwndCtl), \
|
|
(indexStart), \
|
|
(lpszSelect))
|
|
#define WinComboBox_SelectStringW(hwndCtl, indexStart, lpszSelect) CB_SelectStringW((hwndCtl), \
|
|
(indexStart), \
|
|
(lpszSelect))
|
|
#define WinComboBox_SelectItemData(hwndCtl, indexStart, data) ((int)WinSendMessage((hwndCtl), \
|
|
CB_SELECTSTRING, \
|
|
(WPARAM)(indexStart), \
|
|
(LPARAM)(data)))
|
|
#define WinComboBox_Dir(hwndCtl, attrs, lpszFileSpec) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_DIR, \
|
|
(WPARAM)(UINT)(attrs), \
|
|
(LPARAM)(LPCTSTR)(lpszFileSpec)))
|
|
#define WinComboBox_ShowDropdown(hwndCtl, fShow) ((BOOL)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SHOWDROPDOWN, \
|
|
(WPARAM)(BOOL)(fShow), \
|
|
0L))
|
|
#define WinComboBox_FindStringExact(hwndCtl, indexStart, lpszFind) ((int)(DWORD)WinSendMessage((hwndCtl), CB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
|
|
#define WinComboBox_FindStringExactA(hwndCtl,indexStart,lpszFind) CB_FindStringExactA((hwndCtl), indexStart,lpszFind)
|
|
#define WinComboBox_FindStringExactW(hwndCtl,indexStart,lpszFind) CB_FindStringExactW((hwndCtl), indexStart,lpszFind)
|
|
|
|
#define WinComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETDROPPEDSTATE, \
|
|
0L, 0L))
|
|
#define WinComboBox_GetDroppedControlRect(hwndCtl, lprc) ((void)WinSendMessage((hwndCtl), \
|
|
CB_GETDROPPEDCONTROLRECT, \
|
|
0L, (LPARAM)(RECT *)(lprc)))
|
|
#define WinComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETITEMHEIGHT, \
|
|
0L, 0L))
|
|
#define WinComboBox_SetItemHeight(hwndCtl, index, cyItem) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SETITEMHEIGHT, \
|
|
(WPARAM)(int)(index), \
|
|
(LPARAM)(int)cyItem))
|
|
#define WinComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_GETEXTENDEDUI, \
|
|
0L, 0L))
|
|
#define WinComboBox_SetExtendedUI(hwndCtl, flags) ((int)(DWORD)WinSendMessage((hwndCtl), \
|
|
CB_SETEXTENDEDUI, \
|
|
(WPARAM)(UINT)(flags), \
|
|
0L))
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
#endif //_WIN_API_H_
|
|
|
|
|
|
|