📄 guiwindow.h
字号:
/********************** Non-Main Window Class Support ************************/
#define CS_VREDRAW 0x0001
#define CS_HREDRAW 0x0002
#define CS_DBLCLKS 0x0008
#define CS_OWNDC 0x0020
#define CS_CLASSDC 0x0040
#define CS_PARENTDC 0x0080
#define CS_NOCLOSE 0x0200
#define CS_SAVEBITS 0x0800
#define CS_BYTEALIGNCLIENT 0x1000
#define CS_BYTEALIGNWINDOW 0x2000
#define CS_GLOBALCLASS 0x4000
#define CS_IME 0x00010000
#define COP_STYLE 0x0001
#define COP_HCURSOR 0x0002
#define COP_BKCOLOR 0x0004
#define COP_WINPROC 0x0008
#define COP_ADDDATA 0x0010
typedef struct T_GUI_WndClass
{
T_BYTE* spClassName;
T_UWORD opMask;
T_UWORD dwStyle;
T_WORD iBkColor;
T_WORD (*WinProc)(T_GUI_HWND, T_WORD, T_GUI_WPARAM, T_GUI_LPARAM);
T_UWORD dwAddData;
}T_GUI_WndClass;
typedef T_GUI_WndClass* T_GUI_pWndClass;
#define MAINWINCLASSNAME ("MAINWINDOW")
T_BOOL fnGUI_RegisterWindowClass (T_GUI_pWndClass pWndClass);
T_BOOL fnGUI_UnregisterWindowClass (T_CONST T_BYTE* szClassName);
T_BYTE* fnGUI_GetClassName (T_GUI_HWND hWnd);
T_BOOL fnGUI_GetWindowClassInfo (T_GUI_pWndClass pWndClass);
T_BOOL fnGUI_SetWindowClassInfo (T_CONST T_GUI_WndClass* pWndClass);
/*************************** Non-Main Window support *************************/
T_GUI_HWND fnGUI_CreateWindowEx (T_CONST T_BYTE* spClassName, T_CONST T_BYTE* spCaption,
T_UWORD dwStyle, T_UWORD dwExStyle, T_WORD id,
T_WORD x, T_WORD y, T_WORD w, T_WORD h, T_GUI_HWND hParentWnd, T_UWORD dwAddData);
T_BOOL fnGUI_DestroyWindow (T_GUI_HWND hWnd);
#define fnGUI_CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data) \
fnGUI_CreateWindowEx(class_name, caption, style, 0, id, x, y, w, h, parent, add_data)
/******************************** Timer Support ******************************/
T_BOOL fnGUI_SetTimer (T_GUI_HWND hWnd, T_WORD id, T_WORD speed);
T_BOOL fnGUI_KillTimer (T_GUI_HWND hWnd, T_WORD id);
T_BOOL fnGUI_IsTimerInstalled (T_GUI_HWND hWnd, T_WORD id);
T_BOOL fnGUI_ResetTimer (T_GUI_HWND hWnd, T_WORD id, T_WORD speed);
T_UWORD fnGUI_GetTickCount (T_VOID);
/******************************** IME Support ********************************/
T_GUI_HWND fnGUI_IMEWindow (T_GUI_HWND hosting);
T_WORD fnGUI_RegisterIMEWindow (T_GUI_HWND hWnd);
T_WORD fnGUI_UnregisterIMEWindow (T_GUI_HWND hWnd);
T_WORD fnGUI_GetIMEStatus (T_WORD StatusCode);
T_WORD fnGUI_SetIMEStatus (T_WORD StatusCode, T_WORD Value);
/**************************** Caret support **********************************/
T_BOOL fnGUI_CreateCaret (T_GUI_HWND hWnd, T_GUI_pBitmap pBitmap, T_WORD nWidth, T_WORD nHeight);
T_BOOL fnGUI_ChangeCaretSize (T_GUI_HWND hWnd, T_WORD newWidth, T_WORD newHeight);
T_BOOL fnGUI_ActiveCaret (T_GUI_HWND hWnd);
T_GUI_UINT fnGUI_GetCaretBlinkTime (T_GUI_HWND hWnd);
T_BOOL fnGUI_SetCaretBlinkTime (T_GUI_HWND hWnd, T_GUI_UINT uTime);
T_BOOL fnGUI_DestroyCaret (T_GUI_HWND hWnd);
T_BOOL fnGUI_HideCaret (T_GUI_HWND hWnd);
T_BOOL fnGUI_ShowCaret (T_GUI_HWND hWnd);
T_BOOL fnGUI_SetCaretPos (T_GUI_HWND hWnd, T_WORD x, T_WORD y);
T_BOOL fnGUI_GetCaretPos (T_GUI_HWND hWnd, T_GUI_pPoint pPt);
T_BOOL fnGUI_BlinkCaret (T_GUI_HWND hWnd);
/**************************** Control support ********************************/
/* Standard control IDs */
#define IDC_STATIC 0
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
#define IDC_STATIC_TEXT 8 //added by ChenHong
#define MINID_RESERVED 0xF001
#define MAXID_RESERVED 0xFFFF
/*********************************** Menu Support ****************************/
#define ERR_MNU_OK 0
/* Menu flags */
#define FLAG_MN_INSERT 0x00000000L
#define FLAG_MN_CHANGE 0x00000080L
#define FLAG_MN_APPEND 0x00000100L
#define FLAG_MN_DELETE 0x00000200L
#define FLAG_MN_REMOVE 0x00001000L
#define FLAG_MN_BYCOMMAND 0x00000000L
#define FLAG_MN_BYPOSITION 0x00000400L
#define FLAG_MN_SEPARATOR 0x00000800L
#define FLAG_MN_ENABLED 0x00000000L
#define FLAG_MN_GRAYED 0x00000001L
#define FLAG_MN_DISABLED 0x00000002L
#define FLAG_MN_UNCHECKED 0x00000000L
#define FLAG_MN_CHECKED 0x00000008L
#define FLAG_MN_USECHECKBITMAPS 0x00000200L
#define FLAG_MN_STRING 0x00000000L
#define FLAG_MN_BITMAP 0x00000004L
#define FLAG_MN_OWNERDRAW 0x00000100L
#define FLAG_MN_POPUP 0x00000010L
#define FLAG_MN_MENUBARBREAK 0x00000020L
#define FLAG_MN_MENUBREAK 0x00000040L
#define FLAG_MN_UNHILITE 0x00000000L
#define FLAG_MN_HILITE 0x00000080L
#define FLAG_MN_DEFAULT 0x00001000L
#define FLAG_MN_SYSMENU 0x00002000L
#define FLAG_MN_HELP 0x00004000L
#define FLAG_MN_RIGHTJUSTIFY 0x00004000L
#define FLAG_MN_MOUSESELECT 0x00008000L
#define FLAG_MN_END 0x00000080L
#define TYPE_FLAG_MN_STRING FLAG_MN_STRING
#define TYPE_FLAG_MN_BITMAP FLAG_MN_BITMAP
#define TYPE_FLAG_MN_BMPSTRING 0x00010000L
#define TYPE_FLAG_MN_MENUBARBREAK FLAG_MN_MENUBARBREAK
#define TYPE_FLAG_MN_MENUBREAK FLAG_MN_MENUBREAK
#define TYPE_FLAG_MN_OWNERDRAW FLAG_MN_OWNERDRAW
#define TYPE_FLAG_MN_RADIOCHECK 0x00000200L
#define TYPE_FLAG_MN_SEPARATOR FLAG_MN_SEPARATOR
#define TYPE_FLAG_MN_RIGHTORDER 0x00002000L
#define TYPE_FLAG_MN_RIGHTJUSTIFY FLAG_MN_RIGHTJUSTIFY
#define STA_FLAG_MN_GRAYED 0x00000003L
#define STA_FLAG_MN_DISABLED STA_FLAG_MN_GRAYED
#define STA_FLAG_MN_CHECKED FLAG_MN_CHECKED
#define STA_FLAG_MN_HILITE FLAG_MN_HILITE
#define STA_FLAG_MN_ENABLED FLAG_MN_ENABLED
#define STA_FLAG_MN_UNCHECKED FLAG_MN_UNCHECKED
#define STA_FLAG_MN_UNHILITE FLAG_MN_UNHILITE
#define STA_FLAG_MN_DEFAULT FLAG_MN_DEFAULT
/* System Menu Command Values */
#define SYSMNC_SIZE 0xF000
#define SYSMNC_MOVE 0xF010
#define SYSMNC_MINIMIZE 0xF020
#define SYSMNC_MAXIMIZE 0xF030
#define SYSMNC_NEXTWINDOW 0xF040
#define SYSMNC_PREVWINDOW 0xF050
#define SYSMNC_CLOSE 0xF060
#define SYSMNC_VSCROLL 0xF070
#define SYSMNC_HSCROLL 0xF080
#define SYSMNC_MOUSEMENU 0xF090
#define SYSMNC_KEYMENU 0xF100
#define SYSMNC_ARRANGE 0xF110
#define SYSMNC_RESTORE 0xF120
#define SYSMNC_TASKLIST 0xF130
#define SYSMNC_SCREENSAVE 0xF140
#define SYSMNC_HOTKEY 0xF150
#define SYSMNC_DEFAULT 0xF160
#define SYSMNC_MONITORPOWER 0xF170
#define SYSMNC_CONTEXTHELP 0xF180
#define SYSMNC_SEPARATOR 0xF00F
/* MENUITEMINFO flags */
#define FLAG_MII_STATE 0x00000001
#define FLAG_MII_ID 0x00000002
#define FLAG_MII_SUBMENU 0x00000004
#define FLAG_MII_CHECKMARKS 0x00000008
#define FLAG_MII_TYPE 0x00000010
#define FLAG_MII_DATA 0x00000020
#define FLAG_MII_STRING 0x00000040
#define FLAG_MII_BITMAP 0x00000080
#define FLAG_MII_FTYPE 0x00000100
/* Flags for TrackPopupMenu */
#define FLAG_TPM_LEFTBUTTON 0x0000L
#define FLAG_TPM_RIGHTBUTTON 0x0002L
#define FLAG_TPM_LEFTALIGN 0x0000L
#define FLAG_TPM_CENTERALIGN 0x0004L
#define FLAG_TPM_RIGHTALIGN 0x0008L
#define FLAG_TPM_TOPALIGN 0x0000L
#define FLAG_TPM_VCENTERALIGN 0x0010L
#define FLAG_TPM_BOTTOMALIGN 0x0020L
#define FLAG_TPM_HORIZONTAL 0x0000L /* Horz alignment matters more */
#define FLAG_TPM_VERTICAL 0x0040L /* Vert alignment matters more */
#define FLAG_TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */
#define FLAG_TPM_RETURNCMD 0x0100L
#define FLAG_TPM_DESTROY 0x1000L /* Destroy menu after tracking. */
#define FLAG_TPM_SYSCMD 0x2000L /* Send system command. */
#define FLAG_TPM_DEFAULT 0x0000L /* Default tracking flag. */
/* return codes for WM_MENUCHAR */
#define MNCODE_IGNORE 0
#define MNCODE_CLOSE 1
#define MNCODE_EXECUTE 2
#define MNCODE_SELECT 3
typedef struct T_GUI_MenuItemInfo {
T_UWORD mask;
T_UWORD type;
T_UWORD state;
T_WORD id;
T_GUI_HMENU hSubMenu;
T_GUI_pBitmap hBmpChecked;
T_GUI_pBitmap hBmpUnchecked;
T_WORD ItemData;
T_WORD TypeData;
T_WORD cch;
}T_GUI_MenuItemInfo;
typedef T_GUI_MenuItemInfo* T_GUI_pMenuItemInfo;
/* Menu creation */
T_GUI_HMENU fnGUI_CreateMenu (T_VOID);
T_GUI_HMENU fnGUI_CreatePopupMenu ( T_GUI_pMenuItemInfo pmii);
T_GUI_HMENU fnGUI_CreateSystemMenu (T_GUI_HWND hwnd, T_UWORD dwStyle);
T_WORD fnGUI_InsertMenuItem (T_GUI_HMENU hmnu, T_WORD item,
T_BOOL flag, T_GUI_pMenuItemInfo pmii);
T_WORD fnGUI_RemoveMenu (T_GUI_HMENU hmnu, T_WORD item, T_GUI_UINT flags);
T_WORD fnGUI_DeleteMenu (T_GUI_HMENU hmnu, T_WORD item, T_GUI_UINT flags);
T_WORD fnGUI_DestroyMenu (T_GUI_HMENU hmnu);
T_BOOL fnGUI_IsMenu (T_GUI_HMENU hmnu);
T_GUI_HMENU fnGUI_SetMenu (T_GUI_HWND hwnd, T_GUI_HMENU hmnu);
T_GUI_HMENU fnGUI_GetMenu (T_GUI_HWND hwnd);
T_VOID fnGUI_DrawMenuBar (T_GUI_HWND hwnd);
T_WORD fnGUI_TrackMenuBar (T_GUI_HWND hwnd, T_WORD pos);
T_WORD fnGUI_TrackPopupMenu (T_GUI_HMENU hmnu, T_GUI_UINT uFlags, T_WORD x, T_WORD y, T_GUI_HWND hwnd);
T_GUI_HMENU fnGUI_GetMenuBarItemRect (T_GUI_HWND hwnd, T_WORD pos, T_GUI_Rect* prc);
#define FLAG_HM_UPITEM 0x01
#define FLAG_HM_DOWNITEM 0x02
#define FLAG_HM_DEFAULT 0x00
T_BOOL fnGUI_HiliteMenuBarItem (T_GUI_HWND hwnd, T_WORD pos, T_GUI_UINT flags);
T_WORD fnGUI_GetMenuItemCount (T_GUI_HMENU hmnu);
T_WORD fnGUI_GetMenuItemID (T_GUI_HMENU hmnu, T_WORD pos);
T_WORD fnGUI_GetMenuItemInfo (T_GUI_HMENU hmnu, T_WORD item,
T_BOOL flag, T_GUI_pMenuItemInfo pmii);
T_GUI_HMENU fnGUI_GetPopupSubMenu (T_GUI_HMENU hpppmnu);
T_GUI_HMENU fnGUI_StripPopupHead (T_GUI_HMENU hpppmnu);
T_GUI_HMENU fnGUI_GetSubMenu (T_GUI_HMENU hmnu, T_WORD pos);
T_GUI_HMENU fnGUI_GetSystemMenu (T_GUI_HWND hwnd, T_BOOL flag);
T_GUI_UINT fnGUI_EnableMenuItem (T_GUI_HMENU hmnu, T_WORD item, T_GUI_UINT flags);
T_WORD fnGUI_CheckMenuRadioItem (T_GUI_HMENU hmnu, T_WORD first, T_WORD last,
T_WORD checkitem, T_GUI_UINT flags);
T_WORD fnGUI_SetMenuItemBitmaps (T_GUI_HMENU hmnu, T_WORD item, T_GUI_UINT flags,
T_GUI_pBitmap hBmpUnchecked, T_GUI_pBitmap hBmpChecked);
T_WORD fnGUI_SetMenuItemInfo (T_GUI_HMENU hmnu, T_WORD item,
T_BOOL flag, T_GUI_pMenuItemInfo pmii);
/*************************** Dialog support **********************************/
#define ERR_DLG_OK 0
#define ERR_DLG_FAILED -1
#define DLG_ITEM_CHECKED 1
#define DLG_ITEM_NOCHECKED 0
/* Dialog codes */
#define DLGCODE_WANTARROWS 0x0001 /* Control wants arrow keys */
#define DLGCODE_WANTTAB 0x0002 /* Control wants tab keys */
#define DLGCODE_WANTALLKEYS 0x0004 /* Control wants all keys */
#define DLGCODE_WANTCHARS 0x0008 /* Want MSG_CHAR messages */
#define DLGCODE_HASSETSEL 0x0010 /* Understands EM_SETSEL message */
#define DLGCODE_DEFPUSHBUTTON 0x0100 /* Default pushbutton */
#define DLGCODE_PUSHBUTTON 0x0200 /* Non-default pushbutton */
#define DLGCODE_RADIOBUTTON 0x0400 /* Radio button */
#define DLGCODE_3STATE 0x0800 /* 3 States button item */
#define DLGCODE_STATIC 0x1000 /* Static item: don't include */
#define DLGCODE_BUTTON 0x2000 /* Button item: can be checked */
typedef struct
{
T_BYTE* class_name; /* control class */
T_UWORD dwStyle; /* control style */
T_WORD x, y, w, h; /* control position in dialog */
T_WORD id; /* control identifier */
T_CONST T_BYTE* caption; /* control caption */
T_UWORD dwAddData; /* additional data */
T_UWORD dwExStyle; /* control extended style */
} T_GUI_CtrlData;
typedef T_GUI_CtrlData* T_GUI_pCtrlData;
typedef struct
{
T_UWORD dwStyle; /* dialog box style */
T_UWORD dwExStyle; /* dialog box extended style */
T_WORD x, y, w, h; /* dialog box position */
T_CONST T_BYTE* caption; /* dialog box caption */
T_GUI_HICON hIcon; /* dialog box icon */
T_GUI_HMENU hMenu; /* dialog box menu */
T_WORD ControlNr; /* number of controls */
T_GUI_pCtrlData controls; /* poiter to control array */
T_UWORD dwAddData; /* addtional data, must be zero */
} T_GUI_DlgTemplate;
typedef T_GUI_DlgTemplate* T_GUI_pDlgTemplate;
T_GUI_HWND fnGUI_CreateMainWindowIndirect (T_GUI_pDlgTemplate pDlgTemplate,
T_GUI_HWND hOwner, T_GUI_WndProc WndProc);
T_BOOL fnGUI_DestroyMainWindowIndirect (T_GUI_HWND hMainWin);
T_WORD fnGUI_DialogBoxIndirectParam (T_GUI_pDlgTemplate pDlgTemplate,
T_GUI_HWND hOwner, T_GUI_WndProc DlgProc, T_GUI_LPARAM lParam);
T_BOOL fnGUI_EndDialog (T_GUI_HWND hDlg, T_WORD endCode);
T_VOID fnGUI_DestroyAllControls (T_GUI_HWND hDlg);
T_WORD fnGUI_DefaultDialogProc (T_GUI_HWND hWnd,
T_WORD message, T_GUI_WPARAM wParam, T_GUI_LPARAM lParam);
T_GUI_HWND fnGUI_GetDlgDefPushButton (T_GUI_HWND hWnd);
T_WORD fnGUI_GetDlgCtrlID (T_GUI_HWND hwndCtl);
T_GUI_HWND fnGUI_GetDlgItem (T_GUI_HWND hDlg, T_WORD nIDDlgItem);
T_GUI_UINT fnGUI_GetDlgItemInt (T_GUI_HWND hDlg, T_WORD nIDDlgItem, T_BOOL *lpTranslated,
T_BOOL bSigned);
T_WORD fnGUI_GetDlgItemText (T_GUI_HWND hDlg, T_WORD nIDDlgItem, T_BYTE* lpString,
T_WORD nMaxCount);
T_BYTE* fnGUI_GetDlgItemText2 (T_GUI_HWND hDlg, T_WORD id, T_WORD* lenPtr);
T_GUI_HWND fnGUI_GetNextDlgGroupItem (T_GUI_HWND hDlg, T_GUI_HWND hCtl, T_BOOL bPrevious);
T_GUI_HWND fnGUI_GetNextDlgTabItem (T_GUI_HWND hDlg, T_GUI_HWND hCtl, T_BOOL bPrevious);
T_WORD fnGUI_SendDlgItemMessage ( T_GUI_HWND hDlg, T_WORD nIDDlgItem,
T_WORD message, T_GUI_WPARAM wParam, T_GUI_LPARAM lParam);
T_BOOL fnGUI_SetDlgItemInt (T_GUI_HWND hDlg, T_WORD nIDDlgItem, T_GUI_UINT uValue,
T_BOOL bSigned);
T_BOOL fnGUI_SetDlgItemText (T_GUI_HWND hDlg, T_WORD nIDDlgItem, T_CONST T_BYTE* lpString);
#ifdef _CTRL_BUTTON
T_VOID fnGUI_CheckDlgButton (T_GUI_HWND hDlg, T_WORD nIDDlgItem, T_WORD nCheck);
T_VOID fnGUI_CheckRadioButton (T_GUI_HWND hDlg,
T_WORD idFirstButton, T_WORD idLastButton, T_WORD idCheckButton);
T_WORD fnGUI_IsDlgButtonChecked (T_GUI_HWND hDlg, T_WORD idButton);
#endif
/****** Message Box support *************************************************/
#if defined(_CTRL_STATIC) && defined (_CTRL_BUTTON)
#define MB_OK 0x00000000
#define MB_OKCANCEL 0x00000001
#define MB_YESNO 0x00000002
#define MB_RETRYCANCEL 0x00000003
#define MB_ABORTRETRYIGNORE 0x00000004
#define MB_YESNOCANCEL 0x00000005
#define MB_CANCELASBACK 0x00000008
#define MB_TYPEMASK 0x00000007
#define MB_ICONHAND 0x00000010
#define MB_ICONQUESTION 0x00000020
#define MB_ICONEXCLAMATION 0x00000030
#define MB_ICONASTERISK 0x00000040
#define MB_ICONMASK 0x000000F0
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_DEFBUTTON1 0x00000000
#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFMASK 0x00000F00
#define MB_NOFOCUS 0x00008000
#define MB_ALIGNCENTER 0x00000000
#define MB_ALIGNTOPLEFT 0x00010000
#define MB_ALIGNBTMLEFT 0x00020000
#define MB_ALIGNTOPRIGHT 0x00030000
#define MB_ALIGNBTMRIGHT 0x00040000
#define MB_ALIGNMASK 0x00070000
#define MB_BASEDONPARENT 0x00080000
T_WORD fnGUI_MessageBox (T_GUI_HWND hParentWnd, T_CONST T_BYTE* pszText,
T_CONST T_BYTE* pszCaption, T_UWORD dwStyle);
T_WORD fnGUI_RegisterDialogFunc(T_VOID (*func)());
T_VOID fnGUI_UnRegisterDialogFunc();
#endif /* _CTRL_STATIC && _CTRL_BUTTON */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _GUIWINDOW_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -