如题所述
UCGUIå¤çº§èå设计
1 建ç«UCGUI主èå
1.1 å©ç¨å»ºç«çªå£å½æ°æ¥å»ºç«ä¸»èåçé¢
ç¨æ·éè¿å©ç¨UCGUIä¸WM_CreateWindowå½æ°å»ºç«ä¸ä¸ªæå®å¤§å°ççªå£ã
çªå£å¯¹è¯æ¡å»ºç«å½æ°
GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0)
paWidgeï¼å¯¹è¯æ¡ä¿¡æ¯ç»æä½ï¼å å«äºå¯¹è¯æ¡ææçä¿¡æ¯ï¼å¯¹è¯æ¡ä¸çå个é¨ä»¶é½å¨è¯¥ä¿¡æ¯ç»æä½ä¸è¢«è®¾ç½®å¥½ã
NumWidgetsï¼å¯¹è¯æ¡ä¸ææé¨ä»¶ç个æ°ã
cbï¼çªå£åè°å½æ°ã
hParentï¼çªå£ç¶çªå£çå¥æã
x0ï¼y0ï¼çªå£å»ºç«æ¶èµ·å§ä½ç½®ã
æ©å±åçªå£å¯¹è¯æ¡å»ºç«å½æ°ï¼
GUI_ExecDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget,int NumWidgets, WM_CALLBACK* WM_HWIN hParent, int x0, int y0)
paWidgetï¼çªå£ä¿¡æ¯ã
NumWidgetsï¼çªå£é¨ä»¶æ°ç®ã
cb,ï¼çªå£åè°å½æ°ã
hParentï¼ç¶çªå£å¥æã
x0ï¼y0ï¼çªå£å»ºç«æ¶èµ·å§ä½ç½®ã
1.2 åè°å½æ°
ä¸è¬æ¥è¯´ï¼æ¯ä¸ä¸ªçªå£ç建ç«é½ä¼é带æä¸ä¸ªå±äºè¯¥çªå£çåè°å½æ°ï¼å©ç¨åè°å½æ°æ¥å®æ¶æ´æ°çªå£çå 容ã
UCGUIä¸ä¸ºçªå£åçªå£å¯¹è±¡ï¼æ§ä»¶ï¼æä¾çåè°æºå¶å®è´¨ä¸æ¯ä¸ä¸ªäºä»¶é©±å¨ç³»ç»ãæ£å¦å¨å¤§å¤æ°è§çªç³»ç»ä¸ä¸æ ·ï¼ååæ¯æ§å¶æµç¨ä¸åªæ¯ä»ç¨æ·ç¨åºå°å¾å½¢ç³»ç»ï¼ç¨æ·ç¨åºè°ç¨å¾å½¢ç³»ç»å½æ°æ¥æ´æ°çªå£ï¼ï¼èä¸å¯ä»¥ä»ç¨æ·ç¨åºå°å¾å½¢ç³»ç»ï¼åæ¶ä¹å¯ä»¥ä»å¾å½¢ç³»ç»åå°ç¨æ·ç¨åºï¼æææ¯å¾å½¢ç³»ç»ä¹å¯ä»¥è°ç¨ç¨æ·ç¨åºæä¾çåè°å½æ°æ¥è¾¾å°æ´æ°çªå£çç®çãè¿ç§æºå¶å¸¸å¸¸è¡¨ç°å¥½è±åæ³åçç¹ç¹ï¼âä¸è¦æçµè¯ç»æ们ï¼æ们ä¼æçµè¯ç»ä½ âï¼---主è¦æ¯è§çªç®¡çå¨ä¸ºäºå¯å¨çªå£éç»çéè¦ãä¸ä¼ ç»ç¨åºæ¯è¾æå·®å¼ï¼ä½å®ä½¿å¯¹è§çªç®¡çå¨çæ æé»è¾å¼åæ为å¯è½ã
åè°å½æ°çæ§è¡è¡ä¸ºä¾èµäºå®æ¶å°çæ¶æ¯ç±»åãä¸é¢çå½æ°ååé常带æä¸ä¸ªå¼å ³å£°æï¼ç¨äºå®ä¹äºå¯¹äºä¸åç使ç¨ä¸ä¸ªæè æ´å¤çäºä»¶å£°æçæ¶æ¯æéç¨çä¸åçå¤çæ¹å¼ï¼å ¸åçè³å°æ对WM_PAINTï¼ï¼çå¤çï¼ã
åè°å½æ°éè¦è·å¾çä¿¡æ¯å æ¬æï¼ç®æ çªå£ãç®æ çªå£çæ¶æ¯ãæºçªå£ãæºçªå£ä¸é¨ä»¶çIDçä¿¡æ¯ã
åè°å½æ°ä¸å¯ä»¥éè¿è·åç®æ çªå£ï¼ç¶åå¨è·åç®æ çªå£ä¸çå个é¨ä»¶çIDï¼è¿æ¶å¯ä»¥æ ¹æ®çªå£çæ¶æ¯ç±»åæ¥åå§åå个é¨ä»¶ï¼å¦æ¶æ¯æ¯WM_INIT_DIALOGæ¶ï¼å¯ä»¥ç´æ¥å¯¹çªå£è¿è¡åå§å设置ï¼ä¾å¦è®¾ç½®æé®æä¸ä¹åçèæ¯è²ã设置çªå£çåä½å¤§å°çãå¦æè¦ä½¿ç¨åè°å½æ°å®æ¶æ´æ°å个çªå£ï¼å¿ é¡»è¦è¿è¡GUI_Exec()æWM_Execå½æ°ã
1.3 常ç¨çªå£åå§åå½æ°è§£æ
çªå£åå§åæ¹å¼æ两ç§ï¼ä¸ç§æ¯å¨æ°å»ºçªå£æ¶åå§åï¼ç¬¬äºç§åæ¯å©ç¨åè°å½æ°åå§åçªå£ã使ç¨å¨æ°å»ºçªå£æ¶åå§åçæ¹æ³ä¸åè°å½æ°ä¸åå§åçªå£å·®ä¸å¤ï¼å¨æ°å»ºçªå£æ¶ç»çªå£ä¸ä¸ªæå®çå¥æï¼å¨å©ç¨å¸¸ç¨ççªå£åå§åå½æ°å¯¹çªå£å¥æè¿è¡åå§åå³å¯ã
å¨åè°å½æ°ä¸å¯¹çªå£åå§ååºè¯¥æ³¨æï¼è¿å ¥åè°å½æ°å°±ç«å³è·åçªå£å¥æï¼åæ¶å¿ é¡»è¦ç¨ç¼åä¿åä»çªå£ä¸è·åçå个é¨ä»¶çIDã
è·åçªå£é¨ä»¶å½æ°å¦ä¸ï¼
WM_HWIN _GetDialogItem(WM_HWIN hWin, int Id)å½æ°ä»çªå£ä¸è·åå个é¨ä»¶çIDã
hWinï¼ä¸ºé¨ä»¶æå¨çªä½çæºçªå£å¥æï¼Id为建ç«æ§ä»¶æ¶ä¸ºæ§ä»¶è®¾ç½®çIDãå¨çªä½åè°å½æ°ä¸å¿ é¡»è¦æ³¨æWM_HWIN _GetDialogItemå½æ°è°ç¨çä½ç½®ï¼å¨WN_INIT_DIALOGåè°ç¨è¿æ¯å¨å ¶åè°ç¨æå¾å°çç»æä¸åãéè¿è°æ´è¯¥å½æ°å¨åè°å½æ°ä¸æå¨çä½ç½®æ¥ç¡®å®ç¨åºè½å¦æ£å¸¸è¿è¡ã
对äºçªå£åç设置ç¨FRAMEWINçç¸å ³å½æ°ã常ç¨çå½æ°ååå¦ä¸æï¼
设置çªå£æ é¢çåä½å¤§å°å½æ°ï¼
FRAMEWIN_SetFont(FRAMEWIN_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont)ã
FRAMEWIN_Handleï¼ä¸ºæ建ç«ççªå£çå¥æï¼ä¸éè¦è°ç¨çªå£é¨ä»¶è·åå½æ°å»è·åå ¶é¨ä»¶IDï¼åªéè¦å¨è¿å ¥åè°å½æ°æ¶è°ç¨è·åæºçªå£å¥æå½æ°(pMsg->hWin)å³å¯å®ç°ã
* pFont为çªå£æ é¢çåä½ï¼ä¸è¬ç¨GUI.Hä¸UCGUIèªå¸¦çåä½å³å¯ï¼ç¨æ·ä¹å¯èªå®ä¹GUIæ¯æçåä½ï¼GUIèªå¸¦çåä½åªæ¯æè±æçï¼ä¸æ¯æä¸æåä½ï¼å¦æéè¦æ¾ç¤ºä¸æåä½ï¼ç¨æ·è¦ç¨GUIååºçæ软件çæï¼å¨æ·»å è¿å·¥ç¨æè¡ã
设置çªå£æ é¢åä½æ¾ç¤ºç对é½æ¹å¼å½æ°ï¼
FRAMEWIN_SetTextAlign(FRAMEWIN_Handle hObj, int Align)
hObj为æºçªå£å¥æï¼Align为çªä½æ é¢æ¾ç¤ºå¯¹é½æ¹å¼ï¼å ¶åå¼ä¸è¬æï¼å·¦å¯¹é½ï¼å³å¯¹é½ï¼å± ä¸çï¼è¿äºåæ°å¨GUI.Hå½æ°ä¸å·²ç»è¢«å®ä¹ä¸ºå®ï¼ç¨æ·æ ¹æ®éè¦ç´æ¥ä½¿ç¨å³å¯ã
设置çªå£æ é¢çæ¾ç¤ºé¢è²ï¼
FRAMEWIN_SetTextColor (FRAMEWIN_Handle hObj, GUI_COLOR Color);
hObj为æºçªå£å¥æï¼Color为æ é¢é¢è²ï¼åæ°å¨GUI.Hä¸è¢«å®ä¹ä¸ºå®ã
设置çªå£æ é¢æ é«åº¦ï¼
FRAMEWIN_SetTitleHeight (FRAMEWIN_Handle hObj, int Height);
hObj为çªå£å¥æï¼Height为æ é¢æ é«åº¦
为çªå£ä¸æ·»å å ³éçªå£æé®ï¼
FRAMEWIN_AddCloseButton(FRAMEWIN_Handle hObj, int Flags, int Off)ã
hObj为è¦æ·»å æé®ççªå£å¥æãFlags为添å çæé®çæ¾ç¤ºæ¹å¼ï¼åºæ¬åæ°ä¸ºFRAMEWIN_BUTTON_RIGHTæFRAMEWIN_BUTTON_LEFTï¼å³å°è¯¥å ³éçªå£æé®æ¾ç¤ºå¨çªå£çæ左端ææ¯æå³ç«¯ã
为çªå£æ·»å æ大åæ¾ç¤ºæé®ï¼
FRAMEWIN_AddMaxButton(FRAMEWIN_Handle hObj, int Flags, int Off)ä¸ä¸è¿°æ·»å å ³éçªå£æé®åçç¸åã
为çªå£æ·»å æå°åæé®ï¼
FRAMEWIN_AddMinButton(FRAMEWIN_Handle hObj, int Flags, int Off)ï¼å¦ä¸åçãä¸è¬æ åµä¸ï¼è¿ä¸ä¸ªå½æ°å¨çªä½åå§åæ¶åæ¶ä½¿ç¨ã
çªå£BUTTONé¨ä»¶å¸¸ç¨è®¾ç½®å½æ°å¦ä¸ï¼
设置æé®æ¾ç¤ºçåä½
BUTTON_SetFont(BUTTON_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont)
hObj为BUTTONé¨ä»¶å¥æï¼å¨è®¾ç½®ä¹ååºè¯¥ä»çªå£ä¸è·åï¼pfontæé®æ¾ç¤ºåä½ï¼GUIé»è®¤åªè½æ¯æè±æã
设置æé®æä¸æ没ææä¸æ¶çèæ¯è²
BUTTON_SetBkColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color)
hObj为BUTTONé¨ä»¶å¥æï¼Index为索å¼ï¼0表示æé®æ²¡ææä¸ï¼1表示æé®æä¸ï¼Color为BUTTONçèæ¯è²ã
设置æé®æä¸ææ¯æ²¡ææä¸æ¶ï¼æé®ä¸çæåçé¢è²ï¼
BUTTON_SetTextColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color)
hObj为BUTTONé¨ä»¶å¥æï¼Index为索å¼ï¼0表示æé®æ²¡ææä¸ï¼1表示æé®æä¸ï¼Color为æåé¢è²ã
常ç¨LISTBOX设置å½æ°å¦ä¸ã
设置LISTBOXæ¾ç¤ºå 容çåä½ï¼
LISTBOX_SetFont(LISTBOX_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont)
hObj为LISTBOXé¨ä»¶å¥æï¼pFont为å¨LISTBOXä¸æ¾ç¤ºå 容çåä½ï¼GUIé»è®¤åªæ¯æè±æï¼ä¸æåä½éè¦ç¨æ·èªå·±æ·»å ã
å¾LISTBOXä¸æ·»å å 容ï¼
LISTBOX_AddString (LISTBOX_Handle hObj, const char* s);
hObj为LISTBOXé¨ä»¶å¥æï¼*s为è¦æ·»å çå 容ï¼ä¸è¬ä¸ºå符串ã
é«äº®LISTBOXä¸çä¸ä¸ä¸ªç®å½ï¼
LISTBOX_DecSel (LISTBOX_Handle hObj);
é«äº®LISTBOXä¸çä¸ä¸ä¸ªç®å½ï¼
LISTBOX_IncSel (LISTBOX_Handle hObj);
hObj为LISTBOXé¨ä»¶å¥æã
è·åLISTBOXä¸é«äº®ç®å½ï¼
LISTBOX_GetSel (LISTBOX_Handle hObj);
hObjï¼LISTBOXé¨ä»¶å¥æï¼è¿åçæ¯è¯¥ç®å½å¨LISTBOXä¸çåºå·ãè·åLISTBOXä¸é«äº®ç®å½çå 容
LISTBOX_GetItemText (LISTBOX_Handle hObj, unsigned Index, char * pBuffer, int MaxSize);
hObj为LISTBOXé¨ä»¶å¥æï¼Index为é«äº®ç®å½å¨LISTBOXä¸çåºå·ï¼* pBuffer为该ç®å½å 容çç¼ååºï¼MaxSize为é«äº®ç®å½æ大åèæ°ã
设置LISTBOXçæ°´å¹³èªå¨æ»å¨æ¥è¿ï¼
LISTBOX_SetAutoScrollH (LISTBOX_Handle hObj, int OnOff);
hObj为LISTBOXé¨ä»¶å¥æï¼OnOff为ç¹å»LISTBOXæ»å¨æ¡æ¶ï¼çªå£ç®å½èªå¨æ°´å¹³æ»å¨æ¥è¿ç大å°ã
设置LISTBOXçåç´èªå¨æ»å¨æ¥è¿ï¼
LISTBOX_SetAutoScrollV (LISTBOX_Handle hObj, int OnOff);
hObj为LISTBOXé¨ä»¶å¥æï¼OnOff为ç¹å»LISTBOXæ»å¨æ¡æ¶ï¼çªå£ç®å½èªå¨åç´æ»å¨æ¥è¿ç大å°ã
设置LISTBOXç®å½æ°´å¹³å·å¨æ¥è¿ï¼
LISTBOX_SetScrollStepH (LISTBOX_Handle hObj, int Value);
hObj为LISTBOXé¨ä»¶å¥æï¼Value为æ¥è¿å¤§å°ã
å¨æ§è¡åè°å½æ°ä¸ååºæºçªå£ä¸çå个é¨ä»¶å¨ä½çæ¶åï¼ä¸è¬æ¯å¨WM_NOTIFY_PARENTæ¶æ¯ä¸æ¥è¿è¡ãå¨WM_NOTIFY_PARENTæ¶æ¯ä¸ï¼è·åæºçªå£å个é¨ä»¶çID以åçªå£é¨ä»¶çæ°å¼ã
å¦å¾æ示ï¼å å¤æç®æ çªå£è¿åçæ¶æ¯æ¯å¦æ¯WM_NOTIFY_PARENTï¼å¦ææ¯åè·åæºçªå£è¿åçIdåæ¶æ¯çæ°å¼ãæ ¹æ®æ¶æ¯çæ°å¼åå»å¤æIdå±äºåªä¸ªé¨ä»¶ï¼ç¶åæ ¹æ®é¨ä»¶çå¨ä½ï¼å®ç°ä¸åçæä½ã
2 主èåä¸åèåçæ·»å ä¸åè½è®¾ç½®
2.1建ç«èå
MENU_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id)
x0ï¼y0ï¼èåèµ·å§åæ ï¼
xSizeï¼ySizeï¼èåæ¡ç宽度ä¸é«åº¦ï¼
hParentï¼èåæå¨ç¶çªå£å¥æï¼
WinFlagsï¼èåæ¾ç¤ºå±æ§ï¼
ExFlagsï¼èåæ¡å±æ§ï¼
Idï¼èåæ¡IDï¼
å å©ç¨ç´æ¥å»ºç«èåå½æ°å»ºç«ä¸ä¸ªç©ºèåæ¡ï¼ç¶ååå¾ç©ºèåæ¡ä¸æ·»å åèåï¼æ¥å®ç°ä¸ä¸ªèåæ ä¸æå¤çº§åèåçææã
å¨ä¸»èåæ ä¸æ·»å åèåå®ç°æ¹æ³
å 建ç«ä¸ä¸ªèåæ ç»æä½(MENU_ITEM_DATA 为èåç»æä½)ï¼ç¶å对ç»æä½å çå个æååå§åèµå¼å³å¯ã
hMenuï¼ ä¸ºä¸»èåå¥æï¼å³è¯¥åèåæå¨çèåæ çå¥æã
hSubmenuï¼ä¸ºè¯¥åèåçå¥æã
*pTextï¼ ä¸ºåèåå称ã
Idï¼ ä¸ºå½ååèåçIDã
Flagsï¼ ä¸ºå½ååèåçéå å±æ§ã
常ç¨å»ºç«æ·»å æåèåæ çèåæ æ¹æ³
å 建ç«ä¸ä¸ªä¸»èåï¼ç¶åå¨è¯¥ä¸»èåæ ä¸æ·»å åèåå³å¯å®ç°ãæ·»å å®åèåä¹åï¼ç¨æ·åªéè¦ç¹å»ç¸åºçèå该èåä¸çåèåä¼èªå¨å¼¹åºï¼æ éç¨æ·èªå·±åå¼¹åºå½æ°ã
å¨åä¸åèåä¸åä¸åèåä¹é´å ä¸æ¡åé线ï¼
_AddTaskMenuItem(hMenuStart,0,0,0,MENU_IF_SEPARATOR);
å°å·²ç»åå¤å¥½çèåç²è´´å°æå®ççªå£ä¸ï¼
MENU_Attach(MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags)
hObjï¼èåå¥æã
hDestWinï¼çªå£å¥æã
xï¼yï¼xSizeï¼ySizeï¼ä¸ºèåå¨çªå£ä¸çä½ç½®åèåçé«åº¦ä¸å®½åº¦ã
Flagsï¼èåæ¾ç¤ºå±æ§ã
2.2 èååè°å½æ°
èååè°å½æ°é常åæ³
èå建ç«ä¹åè¿åçæ¶æ¯
MENU_ON_ITEMSELECTï¼å½è¯¥èå被éæ©æ¶ææ¶å°çæ¶æ¯ã
MENU_ON_INITMENUï¼å¯¹å»ºç«çèååå§åã
MENU_ON_ITEMSELECTï¼å½åèå被éæ©æ¶ææ¶å°çæ¶æ¯ï¼æ ¹æ®è¯¥æ¶æ¯åæ¥å¤æ该èåä¸åèåçIDã
1 建ç«UCGUI主èå
1.1 å©ç¨å»ºç«çªå£å½æ°æ¥å»ºç«ä¸»èåçé¢
ç¨æ·éè¿å©ç¨UCGUIä¸WM_CreateWindowå½æ°å»ºç«ä¸ä¸ªæå®å¤§å°ççªå£ã
çªå£å¯¹è¯æ¡å»ºç«å½æ°
GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0)
paWidgeï¼å¯¹è¯æ¡ä¿¡æ¯ç»æä½ï¼å å«äºå¯¹è¯æ¡ææçä¿¡æ¯ï¼å¯¹è¯æ¡ä¸çå个é¨ä»¶é½å¨è¯¥ä¿¡æ¯ç»æä½ä¸è¢«è®¾ç½®å¥½ã
NumWidgetsï¼å¯¹è¯æ¡ä¸ææé¨ä»¶ç个æ°ã
cbï¼çªå£åè°å½æ°ã
hParentï¼çªå£ç¶çªå£çå¥æã
x0ï¼y0ï¼çªå£å»ºç«æ¶èµ·å§ä½ç½®ã
æ©å±åçªå£å¯¹è¯æ¡å»ºç«å½æ°ï¼
GUI_ExecDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget,int NumWidgets, WM_CALLBACK* WM_HWIN hParent, int x0, int y0)
paWidgetï¼çªå£ä¿¡æ¯ã
NumWidgetsï¼çªå£é¨ä»¶æ°ç®ã
cb,ï¼çªå£åè°å½æ°ã
hParentï¼ç¶çªå£å¥æã
x0ï¼y0ï¼çªå£å»ºç«æ¶èµ·å§ä½ç½®ã
1.2 åè°å½æ°
ä¸è¬æ¥è¯´ï¼æ¯ä¸ä¸ªçªå£ç建ç«é½ä¼é带æä¸ä¸ªå±äºè¯¥çªå£çåè°å½æ°ï¼å©ç¨åè°å½æ°æ¥å®æ¶æ´æ°çªå£çå 容ã
UCGUIä¸ä¸ºçªå£åçªå£å¯¹è±¡ï¼æ§ä»¶ï¼æä¾çåè°æºå¶å®è´¨ä¸æ¯ä¸ä¸ªäºä»¶é©±å¨ç³»ç»ãæ£å¦å¨å¤§å¤æ°è§çªç³»ç»ä¸ä¸æ ·ï¼ååæ¯æ§å¶æµç¨ä¸åªæ¯ä»ç¨æ·ç¨åºå°å¾å½¢ç³»ç»ï¼ç¨æ·ç¨åºè°ç¨å¾å½¢ç³»ç»å½æ°æ¥æ´æ°çªå£ï¼ï¼èä¸å¯ä»¥ä»ç¨æ·ç¨åºå°å¾å½¢ç³»ç»ï¼åæ¶ä¹å¯ä»¥ä»å¾å½¢ç³»ç»åå°ç¨æ·ç¨åºï¼æææ¯å¾å½¢ç³»ç»ä¹å¯ä»¥è°ç¨ç¨æ·ç¨åºæä¾çåè°å½æ°æ¥è¾¾å°æ´æ°çªå£çç®çãè¿ç§æºå¶å¸¸å¸¸è¡¨ç°å¥½è±åæ³åçç¹ç¹ï¼âä¸è¦æçµè¯ç»æ们ï¼æ们ä¼æçµè¯ç»ä½ âï¼---主è¦æ¯è§çªç®¡çå¨ä¸ºäºå¯å¨çªå£éç»çéè¦ãä¸ä¼ ç»ç¨åºæ¯è¾æå·®å¼ï¼ä½å®ä½¿å¯¹è§çªç®¡çå¨çæ æé»è¾å¼åæ为å¯è½ã
åè°å½æ°çæ§è¡è¡ä¸ºä¾èµäºå®æ¶å°çæ¶æ¯ç±»åãä¸é¢çå½æ°ååé常带æä¸ä¸ªå¼å ³å£°æï¼ç¨äºå®ä¹äºå¯¹äºä¸åç使ç¨ä¸ä¸ªæè æ´å¤çäºä»¶å£°æçæ¶æ¯æéç¨çä¸åçå¤çæ¹å¼ï¼å ¸åçè³å°æ对WM_PAINTï¼ï¼çå¤çï¼ã
åè°å½æ°éè¦è·å¾çä¿¡æ¯å æ¬æï¼ç®æ çªå£ãç®æ çªå£çæ¶æ¯ãæºçªå£ãæºçªå£ä¸é¨ä»¶çIDçä¿¡æ¯ã
åè°å½æ°ä¸å¯ä»¥éè¿è·åç®æ çªå£ï¼ç¶åå¨è·åç®æ çªå£ä¸çå个é¨ä»¶çIDï¼è¿æ¶å¯ä»¥æ ¹æ®çªå£çæ¶æ¯ç±»åæ¥åå§åå个é¨ä»¶ï¼å¦æ¶æ¯æ¯WM_INIT_DIALOGæ¶ï¼å¯ä»¥ç´æ¥å¯¹çªå£è¿è¡åå§å设置ï¼ä¾å¦è®¾ç½®æé®æä¸ä¹åçèæ¯è²ã设置çªå£çåä½å¤§å°çãå¦æè¦ä½¿ç¨åè°å½æ°å®æ¶æ´æ°å个çªå£ï¼å¿ é¡»è¦è¿è¡GUI_Exec()æWM_Execå½æ°ã
1.3 常ç¨çªå£åå§åå½æ°è§£æ
çªå£åå§åæ¹å¼æ两ç§ï¼ä¸ç§æ¯å¨æ°å»ºçªå£æ¶åå§åï¼ç¬¬äºç§åæ¯å©ç¨åè°å½æ°åå§åçªå£ã使ç¨å¨æ°å»ºçªå£æ¶åå§åçæ¹æ³ä¸åè°å½æ°ä¸åå§åçªå£å·®ä¸å¤ï¼å¨æ°å»ºçªå£æ¶ç»çªå£ä¸ä¸ªæå®çå¥æï¼å¨å©ç¨å¸¸ç¨ççªå£åå§åå½æ°å¯¹çªå£å¥æè¿è¡åå§åå³å¯ã
å¨åè°å½æ°ä¸å¯¹çªå£åå§ååºè¯¥æ³¨æï¼è¿å ¥åè°å½æ°å°±ç«å³è·åçªå£å¥æï¼åæ¶å¿ é¡»è¦ç¨ç¼åä¿åä»çªå£ä¸è·åçå个é¨ä»¶çIDã
è·åçªå£é¨ä»¶å½æ°å¦ä¸ï¼
WM_HWIN _GetDialogItem(WM_HWIN hWin, int Id)å½æ°ä»çªå£ä¸è·åå个é¨ä»¶çIDã
hWinï¼ä¸ºé¨ä»¶æå¨çªä½çæºçªå£å¥æï¼Id为建ç«æ§ä»¶æ¶ä¸ºæ§ä»¶è®¾ç½®çIDãå¨çªä½åè°å½æ°ä¸å¿ é¡»è¦æ³¨æWM_HWIN _GetDialogItemå½æ°è°ç¨çä½ç½®ï¼å¨WN_INIT_DIALOGåè°ç¨è¿æ¯å¨å ¶åè°ç¨æå¾å°çç»æä¸åãéè¿è°æ´è¯¥å½æ°å¨åè°å½æ°ä¸æå¨çä½ç½®æ¥ç¡®å®ç¨åºè½å¦æ£å¸¸è¿è¡ã
对äºçªå£åç设置ç¨FRAMEWINçç¸å ³å½æ°ã常ç¨çå½æ°ååå¦ä¸æï¼
设置çªå£æ é¢çåä½å¤§å°å½æ°ï¼
FRAMEWIN_SetFont(FRAMEWIN_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont)ã
FRAMEWIN_Handleï¼ä¸ºæ建ç«ççªå£çå¥æï¼ä¸éè¦è°ç¨çªå£é¨ä»¶è·åå½æ°å»è·åå ¶é¨ä»¶IDï¼åªéè¦å¨è¿å ¥åè°å½æ°æ¶è°ç¨è·åæºçªå£å¥æå½æ°(pMsg->hWin)å³å¯å®ç°ã
* pFont为çªå£æ é¢çåä½ï¼ä¸è¬ç¨GUI.Hä¸UCGUIèªå¸¦çåä½å³å¯ï¼ç¨æ·ä¹å¯èªå®ä¹GUIæ¯æçåä½ï¼GUIèªå¸¦çåä½åªæ¯æè±æçï¼ä¸æ¯æä¸æåä½ï¼å¦æéè¦æ¾ç¤ºä¸æåä½ï¼ç¨æ·è¦ç¨GUIååºçæ软件çæï¼å¨æ·»å è¿å·¥ç¨æè¡ã
设置çªå£æ é¢åä½æ¾ç¤ºç对é½æ¹å¼å½æ°ï¼
FRAMEWIN_SetTextAlign(FRAMEWIN_Handle hObj, int Align)
hObj为æºçªå£å¥æï¼Align为çªä½æ é¢æ¾ç¤ºå¯¹é½æ¹å¼ï¼å ¶åå¼ä¸è¬æï¼å·¦å¯¹é½ï¼å³å¯¹é½ï¼å± ä¸çï¼è¿äºåæ°å¨GUI.Hå½æ°ä¸å·²ç»è¢«å®ä¹ä¸ºå®ï¼ç¨æ·æ ¹æ®éè¦ç´æ¥ä½¿ç¨å³å¯ã
设置çªå£æ é¢çæ¾ç¤ºé¢è²ï¼
FRAMEWIN_SetTextColor (FRAMEWIN_Handle hObj, GUI_COLOR Color);
hObj为æºçªå£å¥æï¼Color为æ é¢é¢è²ï¼åæ°å¨GUI.Hä¸è¢«å®ä¹ä¸ºå®ã
设置çªå£æ é¢æ é«åº¦ï¼
FRAMEWIN_SetTitleHeight (FRAMEWIN_Handle hObj, int Height);
hObj为çªå£å¥æï¼Height为æ é¢æ é«åº¦
为çªå£ä¸æ·»å å ³éçªå£æé®ï¼
FRAMEWIN_AddCloseButton(FRAMEWIN_Handle hObj, int Flags, int Off)ã
hObj为è¦æ·»å æé®ççªå£å¥æãFlags为添å çæé®çæ¾ç¤ºæ¹å¼ï¼åºæ¬åæ°ä¸ºFRAMEWIN_BUTTON_RIGHTæFRAMEWIN_BUTTON_LEFTï¼å³å°è¯¥å ³éçªå£æé®æ¾ç¤ºå¨çªå£çæ左端ææ¯æå³ç«¯ã
为çªå£æ·»å æ大åæ¾ç¤ºæé®ï¼
FRAMEWIN_AddMaxButton(FRAMEWIN_Handle hObj, int Flags, int Off)ä¸ä¸è¿°æ·»å å ³éçªå£æé®åçç¸åã
为çªå£æ·»å æå°åæé®ï¼
FRAMEWIN_AddMinButton(FRAMEWIN_Handle hObj, int Flags, int Off)ï¼å¦ä¸åçãä¸è¬æ åµä¸ï¼è¿ä¸ä¸ªå½æ°å¨çªä½åå§åæ¶åæ¶ä½¿ç¨ã
çªå£BUTTONé¨ä»¶å¸¸ç¨è®¾ç½®å½æ°å¦ä¸ï¼
设置æé®æ¾ç¤ºçåä½
BUTTON_SetFont(BUTTON_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont)
hObj为BUTTONé¨ä»¶å¥æï¼å¨è®¾ç½®ä¹ååºè¯¥ä»çªå£ä¸è·åï¼pfontæé®æ¾ç¤ºåä½ï¼GUIé»è®¤åªè½æ¯æè±æã
设置æé®æä¸æ没ææä¸æ¶çèæ¯è²
BUTTON_SetBkColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color)
hObj为BUTTONé¨ä»¶å¥æï¼Index为索å¼ï¼0表示æé®æ²¡ææä¸ï¼1表示æé®æä¸ï¼Color为BUTTONçèæ¯è²ã
设置æé®æä¸ææ¯æ²¡ææä¸æ¶ï¼æé®ä¸çæåçé¢è²ï¼
BUTTON_SetTextColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color)
hObj为BUTTONé¨ä»¶å¥æï¼Index为索å¼ï¼0表示æé®æ²¡ææä¸ï¼1表示æé®æä¸ï¼Color为æåé¢è²ã
常ç¨LISTBOX设置å½æ°å¦ä¸ã
设置LISTBOXæ¾ç¤ºå 容çåä½ï¼
LISTBOX_SetFont(LISTBOX_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont)
hObj为LISTBOXé¨ä»¶å¥æï¼pFont为å¨LISTBOXä¸æ¾ç¤ºå 容çåä½ï¼GUIé»è®¤åªæ¯æè±æï¼ä¸æåä½éè¦ç¨æ·èªå·±æ·»å ã
å¾LISTBOXä¸æ·»å å 容ï¼
LISTBOX_AddString (LISTBOX_Handle hObj, const char* s);
hObj为LISTBOXé¨ä»¶å¥æï¼*s为è¦æ·»å çå 容ï¼ä¸è¬ä¸ºå符串ã
é«äº®LISTBOXä¸çä¸ä¸ä¸ªç®å½ï¼
LISTBOX_DecSel (LISTBOX_Handle hObj);
é«äº®LISTBOXä¸çä¸ä¸ä¸ªç®å½ï¼
LISTBOX_IncSel (LISTBOX_Handle hObj);
hObj为LISTBOXé¨ä»¶å¥æã
è·åLISTBOXä¸é«äº®ç®å½ï¼
LISTBOX_GetSel (LISTBOX_Handle hObj);
hObjï¼LISTBOXé¨ä»¶å¥æï¼è¿åçæ¯è¯¥ç®å½å¨LISTBOXä¸çåºå·ãè·åLISTBOXä¸é«äº®ç®å½çå 容
LISTBOX_GetItemText (LISTBOX_Handle hObj, unsigned Index, char * pBuffer, int MaxSize);
hObj为LISTBOXé¨ä»¶å¥æï¼Index为é«äº®ç®å½å¨LISTBOXä¸çåºå·ï¼* pBuffer为该ç®å½å 容çç¼ååºï¼MaxSize为é«äº®ç®å½æ大åèæ°ã
设置LISTBOXçæ°´å¹³èªå¨æ»å¨æ¥è¿ï¼
LISTBOX_SetAutoScrollH (LISTBOX_Handle hObj, int OnOff);
hObj为LISTBOXé¨ä»¶å¥æï¼OnOff为ç¹å»LISTBOXæ»å¨æ¡æ¶ï¼çªå£ç®å½èªå¨æ°´å¹³æ»å¨æ¥è¿ç大å°ã
设置LISTBOXçåç´èªå¨æ»å¨æ¥è¿ï¼
LISTBOX_SetAutoScrollV (LISTBOX_Handle hObj, int OnOff);
hObj为LISTBOXé¨ä»¶å¥æï¼OnOff为ç¹å»LISTBOXæ»å¨æ¡æ¶ï¼çªå£ç®å½èªå¨åç´æ»å¨æ¥è¿ç大å°ã
设置LISTBOXç®å½æ°´å¹³å·å¨æ¥è¿ï¼
LISTBOX_SetScrollStepH (LISTBOX_Handle hObj, int Value);
hObj为LISTBOXé¨ä»¶å¥æï¼Value为æ¥è¿å¤§å°ã
å¨æ§è¡åè°å½æ°ä¸ååºæºçªå£ä¸çå个é¨ä»¶å¨ä½çæ¶åï¼ä¸è¬æ¯å¨WM_NOTIFY_PARENTæ¶æ¯ä¸æ¥è¿è¡ãå¨WM_NOTIFY_PARENTæ¶æ¯ä¸ï¼è·åæºçªå£å个é¨ä»¶çID以åçªå£é¨ä»¶çæ°å¼ã
å¦å¾æ示ï¼å å¤æç®æ çªå£è¿åçæ¶æ¯æ¯å¦æ¯WM_NOTIFY_PARENTï¼å¦ææ¯åè·åæºçªå£è¿åçIdåæ¶æ¯çæ°å¼ãæ ¹æ®æ¶æ¯çæ°å¼åå»å¤æIdå±äºåªä¸ªé¨ä»¶ï¼ç¶åæ ¹æ®é¨ä»¶çå¨ä½ï¼å®ç°ä¸åçæä½ã
2 主èåä¸åèåçæ·»å ä¸åè½è®¾ç½®
2.1建ç«èå
MENU_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id)
x0ï¼y0ï¼èåèµ·å§åæ ï¼
xSizeï¼ySizeï¼èåæ¡ç宽度ä¸é«åº¦ï¼
hParentï¼èåæå¨ç¶çªå£å¥æï¼
WinFlagsï¼èåæ¾ç¤ºå±æ§ï¼
ExFlagsï¼èåæ¡å±æ§ï¼
Idï¼èåæ¡IDï¼
å å©ç¨ç´æ¥å»ºç«èåå½æ°å»ºç«ä¸ä¸ªç©ºèåæ¡ï¼ç¶ååå¾ç©ºèåæ¡ä¸æ·»å åèåï¼æ¥å®ç°ä¸ä¸ªèåæ ä¸æå¤çº§åèåçææã
å¨ä¸»èåæ ä¸æ·»å åèåå®ç°æ¹æ³
å 建ç«ä¸ä¸ªèåæ ç»æä½(MENU_ITEM_DATA 为èåç»æä½)ï¼ç¶å对ç»æä½å çå个æååå§åèµå¼å³å¯ã
hMenuï¼ ä¸ºä¸»èåå¥æï¼å³è¯¥åèåæå¨çèåæ çå¥æã
hSubmenuï¼ä¸ºè¯¥åèåçå¥æã
*pTextï¼ ä¸ºåèåå称ã
Idï¼ ä¸ºå½ååèåçIDã
Flagsï¼ ä¸ºå½ååèåçéå å±æ§ã
常ç¨å»ºç«æ·»å æåèåæ çèåæ æ¹æ³
å 建ç«ä¸ä¸ªä¸»èåï¼ç¶åå¨è¯¥ä¸»èåæ ä¸æ·»å åèåå³å¯å®ç°ãæ·»å å®åèåä¹åï¼ç¨æ·åªéè¦ç¹å»ç¸åºçèå该èåä¸çåèåä¼èªå¨å¼¹åºï¼æ éç¨æ·èªå·±åå¼¹åºå½æ°ã
å¨åä¸åèåä¸åä¸åèåä¹é´å ä¸æ¡åé线ï¼
_AddTaskMenuItem(hMenuStart,0,0,0,MENU_IF_SEPARATOR);
å°å·²ç»åå¤å¥½çèåç²è´´å°æå®ççªå£ä¸ï¼
MENU_Attach(MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags)
hObjï¼èåå¥æã
hDestWinï¼çªå£å¥æã
xï¼yï¼xSizeï¼ySizeï¼ä¸ºèåå¨çªå£ä¸çä½ç½®åèåçé«åº¦ä¸å®½åº¦ã
Flagsï¼èåæ¾ç¤ºå±æ§ã
2.2 èååè°å½æ°
èååè°å½æ°é常åæ³
èå建ç«ä¹åè¿åçæ¶æ¯
MENU_ON_ITEMSELECTï¼å½è¯¥èå被éæ©æ¶ææ¶å°çæ¶æ¯ã
MENU_ON_INITMENUï¼å¯¹å»ºç«çèååå§åã
MENU_ON_ITEMSELECTï¼å½åèå被éæ©æ¶ææ¶å°çæ¶æ¯ï¼æ ¹æ®è¯¥æ¶æ¯åæ¥å¤æ该èåä¸åèåçIDã
温馨提示:答案为网友推荐,仅供参考