⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guiwindow.h

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 H
📖 第 1 页 / 共 3 页
字号:

/********************** 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 + -