static void _OnSkinChanged(WM_MESSAGE * pMsg,int val) { int i = 0; WM_MESSAGE myMsg; if(agentConf.Skin != val) { agentConf.Skin = val; pSkin = &(SysWinSkins[val]); WINDOW_SetBkColor(pMsg->hWin, pSkin->bkColor); for(i=0; i<SLD_NUM; i++) { HSD_SLIDER_SetBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetFocusBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetSlotColor(Slideres[i],pSkin->sldSlot); HSD_SLIDER_SetFocusSliderColor(Slideres[i], pSkin->sldFocusSlider); HSD_SLIDER_SetFocusSlotColor(Slideres[i], pSkin->sldSlot); } myMsg.hWin = WM_GetClientWindow(menuWin); myMsg.Data.v = val; myMsg.MsgId = USER_MSG_SKIN; WM_SendMessage (myMsg.hWin, &myMsg); myMsg.hWin = confirmWin; WM_SendMessage (myMsg.hWin, &myMsg); } }
static void _DrawNext(void) { int UpdateRem = 1; WM_HWIN iWin = (NextDrawWin == WM_HWIN_NULL) ? WM__FirstWin : NextDrawWin; GUI_CONTEXT ContextOld; GUI_SaveContext(&ContextOld); /* Make sure the next window to redraw is valid */ for (; (iWin!=WM_HWIN_NULL) && UpdateRem; ) { WM_Obj* pWin = WM_H2P(iWin); if (pWin->Status & WM_SF_INVALID) { U8 Status = (pWin->Status &= ~WM_SF_INVALID); /* Clear invalid flag */ WM__NumInvalidWindows--; /* Send WM_PAINT if window is visible and a callback is defined */ if ((pWin->cb != NULL) && (Status & WM_SF_ISVIS)) { WM_MESSAGE Msg; Msg.hWin = iWin; Msg.MsgId = WM_PAINT; Msg.Data.p = (GUI_RECT*)&pWin->InvalidRect; WM_SelectWindow(iWin); WM_SetDefault(); #if GUI_SUPPORT_MEMDEV if (Status & WM_SF_MEMDEV) { GUI_RECT r = pWin->InvalidRect; GUI_MoveRect (&r, pWin->Rect.x0, pWin->Rect.y0); GUI_MEMDEV_Draw(&r, cbPaint, &Msg, 0, (Status & WM_SF_HASTRANS) ? GUI_MEMDEV_HASTRANS : 0); } else #endif WM_SendMessage(iWin, &Msg); UpdateRem--; /* Only the given number of windows at a time ... */ } } iWin = pWin->hNextLin; } NextDrawWin = iWin; /* Remember the window */ GUI_RestoreContext(&ContextOld); }
/********************************************************************* * * Client Callback */ static void FRAMEWIN__cbClient(WM_MESSAGE* pMsg) { WM_HWIN hWin = pMsg->hWin; WM_HWIN hParent = WM_GetParent(pMsg->hWin); FRAMEWIN_Obj* pObj = FRAMEWIN_H2P(hParent); WM_CALLBACK* cb = pObj->cb; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(pObj->ClientColor); GUI_Clear(); if (pObj->cb) { WM_MESSAGE msg; msg.hWin = hWin; msg.MsgId = WM_PAINT; (*pObj->cb)(&msg); } return; case WM_GET_FOCUSSED_CHILD: pMsg->Data.v = pObj->hFocussedChild; return; case WM_SET_FOCUS: if (pMsg->Data.v) { /* Focus received */ if (pObj->hFocussedChild) { WM_SendMessage(pObj->hFocussedChild, pMsg); } else { pObj->hFocussedChild = WM_SetFocusOnNextChild(hWin); } } return; case WM_KEY: if ( ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) { int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key; switch (Key) { case GUI_KEY_TAB: pObj->hFocussedChild = WM_SetFocusOnNextChild(hWin); break; /* Send to parent by not doing anything */ } } break; case WM_NOTIFY_CHILD_HAS_FOCUS: pObj->hFocussedChild = pMsg->hWinSrc; if (pMsg->Data.v) { pObj->Widget.State |= WIDGET_STATE_CHILD_HAS_FOCUS; } else { pObj->Widget.State &= ~WIDGET_STATE_CHILD_HAS_FOCUS; } WM_InvalidateWindow(hParent); break; case WM_GET_BKCOLOR: pMsg->Data.Color = pObj->ClientColor; return; /* Message handled */ case WM_GETCLIENTRECT_ABS: /* return client window in absolute (screen) coordinates */ case WM_GET_CLIENT_WINDOW: /* return handle to client window. For most windows, there is no seperate client window, so it is the same handle */ WM_DefaultProc(pMsg); return; /* We are done ! */ } if (cb) { pMsg->hWin = hParent; (*cb)(pMsg); } }
/********************************************************************* * * WIDGET_SetEffect */ void WIDGET_SetEffect(WM_HWIN hObj, const WIDGET_EFFECT* pEffect) { WM_MESSAGE Msg; Msg.hWinSrc = 0; Msg.MsgId = WM_WIDGET_SET_EFFECT; Msg.Data.p = (const void*)pEffect; WM_SendMessage(hObj, &Msg); }
/******************************************************************* * * _ChangeInfoText Sends a message to the background window and invalidate it, so the callback of the background window display the new text. */ static void _ChangeInfoText(char* pStr) { WM_MESSAGE Message; Message.MsgId = MSG_CHANGE_TEXT; Message.Data.p = pStr; WM_SendMessage(WM_HBKWIN, &Message); WM_InvalidateWindow(WM_HBKWIN); }
/********************************************************************* * * WM_SetScrollState */ void WM_SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pState) { if (hWin && pState) { WM_MESSAGE Msg; Msg.MsgId = WM_SET_SCROLL_STATE; Msg.Data.p = (const void*)pState; WM_SendMessage(hWin, &Msg); } }
void WM__ReleaseCapture(void) { if (WM__hCapture) { WM_MESSAGE Msg; Msg.MsgId = WM_CAPTURE_RELEASED; WM_SendMessage(WM__hCapture, &Msg); WM__hCapture = 0; } }
/********************************************************************* * * WM_GetClientWindow */ WM_HWIN WM_GetClientWindow(WM_HWIN hObj) { WM_MESSAGE Msg; Msg.Data.v = 0; Msg.MsgId = WM_GET_CLIENT_WINDOW; WM_SendMessage(hObj, &Msg); return (WM_HWIN)Msg.Data.v; }
/********************************************************************* * * _cbFrameWinControl */ static void _cbFrameWinControl(WM_MESSAGE * pMsg) { WM_HWIN hItem; int xSize; int ySize; int NCode; int Id; switch (pMsg->MsgId) { case WM_KEY: WM_SendMessage(WM_HBKWIN, pMsg); break; case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_PROGBAR0); PROGBAR_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); PROGBAR_SetFont(hItem, &GUI_FontD6x8); hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_HALT); BUTTON_SetFocussable(hItem, 0); hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_NEXT); BUTTON_SetFocussable(hItem, 0); hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT0); TEXT_SetText(hItem, "Intro"); TEXT_SetFont(hItem, &GUI_Font8_ASCII); break; case WM_PAINT: xSize = WM_GetWindowSizeX(pMsg->hWin); ySize = WM_GetWindowSizeY(pMsg->hWin); GUI_DrawGradientV(0, 0, xSize - 1, ySize - 1, 0xFFFFFF, 0xDCCEC0); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_RELEASED: switch (Id) { case GUI_ID_HALT: if (_Halt) { _Halt = 0; _HaltTime = GUI_GetTime() - _HaltTimeStart; WM_MakeModal(0); } else { _Halt = 1; _HaltTimeStart = GUI_GetTime() - _HaltTime; WM_MakeModal(pMsg->hWin); } break; case GUI_ID_NEXT: _Next = 1; // Will be set to 0 by GUIDEMO_GetNextState() _ClearHalt(); // Clear _Halt, so the next sample demonstrates immediately break; } break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _IsInGroup */ static int _IsInGroup(WM_HWIN hWin, U8 GroupId) { if (GroupId) { WM_MESSAGE Msg; Msg.MsgId = WM_GET_RADIOGROUP; WM_SendMessage(hWin, &Msg); return (Msg.Data.v == GroupId); } return 0; }
void WM_Paint(WM_HWIN hObj) { WM_MESSAGE Msg; WM_SelectWindow(hObj); WM_ValidateWindow(hObj); WM_SetDefault(); Msg.MsgId = WM_PAINT; Msg.Data.p = NULL; WM_SendMessage(hObj, &Msg); }
/********************************************************************* * * WM_GetBkColor * Purpose: Return the clients background color. If a window does not define a background color, the default procedure returns GUI_INVALID_COLOR */ GUI_COLOR WM_GetBkColor(WM_HWIN hObj) { if (hObj) { WM_MESSAGE Msg; Msg.MsgId = WM_GET_BKCOLOR; WM_SendMessage(hObj, &Msg); return Msg.Data.Color; } return GUI_INVALID_COLOR; }
int WM_BroadcastMessage( WM_MESSAGE* pMsg) { WM_HWIN hWin; WM_LOCK(); for (hWin = WM__FirstWin; hWin; ) { WM_SendMessage(hWin, pMsg); hWin = WM_H2P(hWin)->hNextLin; } WM_UNLOCK(); return 0; }
/********************************************************************* * * WM__SetFocus Sets the focus to the specified child. It sends 2 messages: WM_SET_FOCUS(1) to window to receive focus WM_SET_FOCUS(0) to window to lose focus Return value: 0 on success (Focus could be set) !=0 on failure (Windows could not take the focus) */ int WM_SetFocus(WM_HWIN hWin) { int r; WM_MESSAGE Msg; WM_LOCK(); if ((hWin) && (hWin != WM__hWinFocus)) { Msg.MsgId = WM_SET_FOCUS; /* Send a "no more foucs" message to window losing focus */ Msg.Data.v = 0; WM_SendMessage(WM__hWinFocus, &Msg); /* Send "You have the focus now" message to the window */ Msg.Data.v = 1; WM_SendMessage(WM__hWinFocus = hWin, &Msg); r = Msg.Data.v; } else { r = 1; } WM_UNLOCK(); return r; }
/********************************************************************* * * _NotifyOwner * * Purpose: * Notify owner of the window. * If no owner is registered, the parent is considered owner. */ static void _NotifyOwner(WM_HWIN hObj, int Notification) { WM_MESSAGE Msg = {0}; WM_HWIN hOwner; LISTVIEW_Obj* pObj = LISTVIEW_H2P(hObj); hOwner = pObj->hOwner ? pObj->hOwner : WM_GetParent(hObj); Msg.MsgId = WM_NOTIFY_PARENT; Msg.Data.v = Notification; Msg.hWin = hObj; WM_SendMessage(hOwner, &Msg); }
/********************************************************************* * * WM_IsFocussable */ int WM_IsFocussable(WM_HWIN hWin) { int r = 0; if (hWin) { WM_MESSAGE Msg; Msg.Data.v = 0; Msg.MsgId = WM_GET_ACCEPT_FOCUS; WM_SendMessage(hWin, &Msg); r = Msg.Data.v; } return r; }
void WM_SendToParent(WM_HWIN hChild, WM_MESSAGE* pMsg) { if (pMsg) { WM_HWIN hParent; WM_LOCK(); hParent = WM_GetParent(hChild); if (hParent) { pMsg->hWinSrc = hChild; WM_SendMessage(hParent, pMsg); } WM_UNLOCK(); } }
/********************************************************************* * * _cbList * * Function description * Callback of the LISTVIEW widget. */ static void _cbList(WM_MESSAGE * pMsg) { int NCode; switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: NCode = pMsg->Data.v; if (NCode == WM_NOTIFICATION_CHILD_DELETED) { WM_SendMessage(WM_GetParent(pMsg->hWin), pMsg); break; } LISTVIEW_Callback(pMsg); break; default: LISTVIEW_Callback(pMsg); } }
static void sldListener(WM_MESSAGE * pMsg) { const WM_KEY_INFO * pInfo; WM_MESSAGE myMsg; switch(pMsg->MsgId) { case WM_KEY: pInfo = (WM_KEY_INFO*)(pMsg->Data.p); switch(pInfo->Key) { case GUI_KEY_PWM_INC: WM_SendMessageNoPara(subWins[3], USER_MSG_DIM); break; case GUI_KEY_BACKSPACE: if(Mem_isEqual(&SysConf, &agentConf, sizeof(SysConf)) ) { WM_SetFocus(Slideres[0]); WM_SetFocus(menuWin); } else { myMsg.hWin = WM_GetClientWindow(confirmWin); myMsg.hWinSrc = subWins[3]; myMsg.MsgId = USER_MSG_CHOOSE; myMsg.Data.v = SYS_SETTING; WM_SendMessage(myMsg.hWin, &myMsg); WM_BringToTop(confirmWin); WM_SetFocus(WM_GetDialogItem (confirmWin,GUI_ID_BUTTON0)); } break; default: HSD_SLIDER_Callback(pMsg); break; } break; default: HSD_SLIDER_Callback(pMsg); break; } }
/********************************************************************* * * _cbEdit */ static void _cbEdit(WM_MESSAGE * pMsg) { const WM_KEY_INFO * pInfo; WM_MESSAGE Msg; switch (pMsg->MsgId) { case WM_KEY: pInfo = pMsg->Data.p; if (pInfo->Key == GUI_KEY_ENTER) { if (pInfo->PressedCnt == 0) { Msg.MsgId = WM_APP_SHOW_TEXT; Msg.hWinSrc = pMsg->hWin; WM_SendMessage(WM_HBKWIN, &Msg); return; } } } EDIT_Callback(pMsg); }
/********************************************************************* * * _cbTransWindow */ static void _cbTransWindow(WM_MESSAGE* pMsg) { static GUI_PID_STATE StateOld; GUI_PID_STATE * pState; GUI_PID_STATE StateNew; GUI_PID_STATE State; WM_HWIN hBelow; WM_HWIN hWin; hWin = pMsg->hWin; GUI_PID_GetState(&StateNew); State = ((StateNew.x == -1) && (StateNew.y == -1)) ? StateOld : StateNew; StateOld = State; switch (pMsg->MsgId) { case WM_PAINT: State.x -= WM_GetWindowOrgX(hWin); State.y -= WM_GetWindowOrgY(hWin); _DrawEye(EYE_X1, EYE_Y, State.x, State.y, EYE_RX, EYE_RY); _DrawEye(EYE_X2, EYE_Y, State.x, State.y, EYE_RX, EYE_RY); break; case WM_TOUCH: if (pMsg->Data.p) { pState = (GUI_PID_STATE *)pMsg->Data.p; if (pState->Pressed) { if (!_ClickedOutsideArea(pState->x, pState->y) || WM_HasCaptured(hWin)) { WM_SetCaptureMove(hWin, pState, MIN_VISIBILITY, 0); } else { // // Transfer the message to the underlying window, since the transparent area has been clicked // hBelow = WM_Screen2hWinEx(hWin, State.x, State.y); if (hBelow) { pState->x = State.x - WM_GetWindowOrgX(hBelow); pState->y = State.y - WM_GetWindowOrgY(hBelow); WM_SendMessage(hBelow, pMsg); } } } } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbFrameWinInfo */ static void _cbFrameWinInfo(WM_MESSAGE * pMsg) { int xSize, ySize; switch (pMsg->MsgId) { case WM_KEY: WM_SendMessage(WM_HBKWIN, pMsg); break; case WM_CREATE: xSize = LCD_GetXSize(); WM_SetWindowPos(pMsg->hWin, xSize >> 1, 0, xSize >> 1, INFO_SIZE_Y); break; case WM_PAINT: xSize = WM_GetWindowSizeX(pMsg->hWin); ySize = WM_GetWindowSizeY(pMsg->hWin); GUI_DrawGradientV(0, 0, xSize - 1, ySize - 1, 0xFFFFFF, 0xDCCEC0); break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * WM_SetEnableState */ void WM_SetEnableState(WM_HWIN hWin, int State) { WM_Obj* pWin; U16 Status; WM_LOCK(); pWin = WM_H2P(hWin); Status = pWin->Status; if (State) { Status &= ~WM_SF_DISABLED; } else { Status |= WM_SF_DISABLED; } if (pWin->Status != Status) { WM_MESSAGE Msg; pWin->Status = Status; Msg.MsgId = WM_NOTIFY_ENABLE; Msg.Data.v = State; WM_SendMessage(hWin, &Msg); } WM_UNLOCK(); }
int IPC_Msg_SendMsg(tIPC_Client *Client, tAxWin_IPCMessage *Msg) { tIPCMsg_SendMsg *info = (void*)Msg->Data; tWindow *src, *dest; ASSERT(Msg->ID == IPCMSG_SENDMSG); // - Sanity checks if( Msg->Size < sizeof(tIPCMsg_SendMsg) ) return -1; if( Msg->Size < sizeof(tIPCMsg_SendMsg) + info->Length ) return -1; src = IPC_int_GetWindow(Client, Msg->Window); if(!src) return 1; dest = IPC_int_GetWindow(Client, info->Remote); if(!dest) return 1; WM_SendMessage(src, dest, info->ID, info->Length, info->Data); return 0; }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; WM_MESSAGE Msg; WM_HWIN hIteminfo; int i; int sel; uint8_t items; FRESULT res; // FILINFO fno; //DIR dir; // USER START (Optionally insert additional variables) // USER END hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_LIGHTGRAY); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); //WM_SetFocus(hItem); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetFont(hItem,&GUI_FontHZ_Song_12); TEXT_SetText(hItem, "自学习文件选择"); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hIteminfo,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hIteminfo,GUI_RED); TEXT_SetText(hIteminfo, (char *)"打开文件……"); WM_HideWindow(hIteminfo); // // Initialization of 'Dropdown' // hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); DROPDOWN_SetFont(hItem,&GUI_FontHZ_Song_12); DROPDOWN_AddString(hItem, "U盘"); DROPDOWN_AddString(hItem, "SD卡"); if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_SetSel(hItem,1); else DROPDOWN_SetSel(hItem,0); // // Initialization of 'Treeview' // store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } LISTBOX_SetFont(hItem,GUI_FONT_20_1); LISTBOX_SetSel(hItem,TestFolder.number_CurrentFile); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_GREEN); BUTTON_SetFocussable(hItem,0);//不接收焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_RED); BUTTON_SetFocussable(hItem,0);//不接收焦点 // USER START (Optionally insert additional code for further widget initialization) // USER END break; case MY_MESSAGE_CLICK: GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 break; case MY_MESSAGE_DOWN: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_IncSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel<1) { DROPDOWN_IncSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,0); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_UP: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_DecSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel>0) { DROPDOWN_DecSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,1); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_CANCEL://取消 GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_OK: hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetText(hIteminfo, (char *)"打开文件中……"); WM_ShowWindow(hIteminfo); GUI_Exec(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); TestFolder.number_CurrentFile=LISTBOX_GetSel(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestItem_Init((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]); //WT_TestFile_Write2Flash((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到Flash //WT_TestFiles_Write2card((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到SD card if(TestFile.file_status == 1)//文件读取OK { Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); } else { TEXT_SetText(hIteminfo, (char *)"读取文件错误!"); WM_ShowWindow(hIteminfo); } Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_BUTTONDELETE: hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); if(store_dev==0) //usb strcpy(filename,path_testfile); //f_opendir(&dir, path_testfile); if(store_dev==1) //sd strcpy(filename,path_testfile_sd); //f_opendir(&dir, path_testfile_sd); //res = f_opendir(&dir, "1:/LZY_WireTester/Test Files"); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); strcat(filename,"/"); sel = LISTBOX_GetSel(hItem); if(sel < 0) break; strcat(filename,(char *)TestFolder.FilesName[LISTBOX_GetSel(hItem)]); res=f_unlink((const TCHAR*)filename); if(res == FR_OK) { hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } WM_SetFocus(hItem); if(sel > 0) LISTBOX_SetSel(hItem,sel - 1); else LISTBOX_SetSel(hItem,0); } break; case WM_PAINT://绘制标题栏 GUI_SetColor(GUI_DARKBLUE); GUI_FillRect(0,0,380,22); GUI_SetColor(GUI_DARKGRAY); GUI_SetPenSize(8); GUI_DrawRect(0,0,378,220); break; default: WM_DefaultProc(pMsg); break; } }
/******************************************************************************************************* * * 函数名称: * * 函数功能: * * 入口参数: * * 出口参数: 无 * * 说明: * *******************************************************************************************************/ void _cbKBDlgCallback(WM_MESSAGE * pMsg) { int NCode; int id; int i; ///static U32 input_num ; WM_MESSAGE Msg = {0}; char str_buff[10]; WM_HWIN hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_CREATE: break; case WM_PAINT: //TextNumPaintDialog(pMsg); break; case WM_INIT_DIALOG: InitKBDlg(pMsg); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(pMsg->hWin, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(pMsg->hWin, 0); break; } break; case WM_NOTIFY_PARENT: id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_RELEASED: switch (id) { case GUI_ID_OK: GUI_EndDialog(hWin, 0); break; case GUI_ID_CANCEL: GUI_EndDialog(hWin, 0); break; case GUI_ID_BUTTON_OK: GUI_EndDialog(hWin, ParentParam); Msg.MsgId = WM_USER_SFKB_END; Msg.Data.v = BCD2UINT16(ParentParam); Msg.hWin = hMain; Msg.hWinSrc = hWin; WM_SendMessage(hMain, &Msg); break; case GUI_ID_BUTTON_CANCEL: GUI_EndDialog(hWin, -1); break; default: break; } break; case WM_NOTIFICATION_CLICKED: switch(id) { case GUI_ID_BUTTON_CLR: //清除 ParentParam = 0; goto update_edit; case GUI_ID_BUTTON_BK_SPC: //退格 ParentParam = ParentParam >> 4; goto update_edit; case GUI_ID_BUTTON_OK: //GUI_EndDialog(hWin, input_num); break; case GUI_ID_BUTTON_CANCEL: //GUI_EndDialog(hWin, -1); break; case GUI_ID_BUTTON_NUM1: case GUI_ID_BUTTON_NUM2: case GUI_ID_BUTTON_NUM3: case GUI_ID_BUTTON_NUM4: case GUI_ID_BUTTON_NUM5: case GUI_ID_BUTTON_NUM6: case GUI_ID_BUTTON_NUM7: case GUI_ID_BUTTON_NUM8: case GUI_ID_BUTTON_NUM9: case GUI_ID_BUTTON_NUM0: for (i = 0; i < 10; i++) //10个数字 { if (NumBtn09ID[i] == id) { ParentParam = (ParentParam << 4) + i; break; } } ParentParam &= 0xFFFFF; update_edit: sprintf(str_buff,"%x",ParentParam); EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT_KB_INPUT),str_buff); break; default: break; } break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * WM_GetInsideRectEx * Purpose: Return the inside rectangle in client coordinates. The inside rectangle is the client rectangle minus the effect, which typically reduces the rectangle by 0 - 3 pixels on either side (2 for the standard 3D effect). */ void WM_GetInsideRectEx(WM_HWIN hWin, GUI_RECT* pRect) { WM_MESSAGE Msg; Msg.Data.p = pRect; Msg.MsgId = WM_GET_INSIDE_RECT; WM_SendMessage(hWin, &Msg); }
void WM_GetScrollState(WM_HWIN hObj, WM_SCROLL_STATE* pScrollState) { WM_MESSAGE Msg; Msg.MsgId = WM_GET_SCROLL_STATE; Msg.Data.p = pScrollState; WM_SendMessage(hObj, &Msg); }
/**监控设置 LISTVIEW 的监听器(回调函数) * */ static void myListViewListener(WM_MESSAGE* pMsg) { const WM_KEY_INFO * pInfo; WM_HWIN thisListView = pMsg->hWin; WM_MESSAGE myMsg; int i = 0; MNT_BERTH * pIterator = NULL; int selectedRow = -1; int index = -1; switch(pMsg->MsgId) { case WM_SET_FOCUS: if(pMsg->Data.v) { if(LISTVIEW_GetNumRows(pMsg->hWin)) { LISTVIEW_SetSel(pMsg->hWin, 0); } if(pMntHeader) { myMsg.hWin = WM_GetClientWindow(mntSettingWin); myMsg.MsgId = USER_MSG_LV_MOVE; myMsg.Data.p = (void*)pMntHeader; WM_SendMessage(myMsg.hWin, &myMsg); } } LISTVIEW_Callback(pMsg); break; case WM_KEY: pInfo = (WM_KEY_INFO*)pMsg->Data.p; switch(pInfo->Key) { case GUI_KEY_PWM_INC: WM_SendMessageNoPara(subWins[3], USER_MSG_DIM); break; case GUI_KEY_UP: case GUI_KEY_DOWN: LISTVIEW_Callback(pMsg); selectedRow = LISTVIEW_GetSel(thisListView); pIterator = pMntHeader; for(index=0; index < selectedRow; index++) { pIterator = pIterator->pNext; } myMsg.hWin = WM_GetClientWindow(mntSettingWin); myMsg.MsgId = USER_MSG_LV_MOVE; myMsg.Data.p = (void*)pIterator; WM_SendMessage(myMsg.hWin, &myMsg); break; case GUI_KEY_RIGHT: if(pMntHeader) { selectedRow = LISTVIEW_GetSel(thisListView); pIterator = pMntHeader; for(index=0; index < selectedRow; index++) { pIterator = pIterator->pNext; } if(pIterator) { if(pIterator->chsState == MNTState_Monitored) { pIterator->chsState = MNTState_Choosen; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "吖"); } else if(pIterator->chsState == MNTState_None) { pIterator->chsState = MNTState_Default; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "吖"); } } // else // { // INFO("Err!"); // } myMsg.hWin = WM_GetClientWindow(mntSettingWin); myMsg.hWinSrc = pMsg->hWin; myMsg.Data.p = (void*)pIterator; myMsg.MsgId = USER_MSG_FOCUS; WM_SendMessage(myMsg.hWin, &myMsg); } // WM_SetFocus(mntSettingWin); break; case GUI_KEY_ENTER: selectedRow = LISTVIEW_GetSel(thisListView); pIterator = pMntHeader; for(index=0;index<selectedRow;index++) { pIterator = pIterator->pNext; } switch(pIterator->chsState) { case MNTState_Choosen: pIterator->chsState = MNTState_Monitored; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "啊"); break; case MNTState_Default: pIterator->chsState = MNTState_None; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "啊"); break; case MNTState_None: pIterator->chsState = MNTState_Default; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "吖"); break; default: pIterator->chsState = MNTState_Choosen; LISTVIEW_SetItemText(thisListView, 2, selectedRow, "吖"); break; } break; case GUI_KEY_BACKSPACE: if(pMntHeader) { pIterator = pMntHeader; while(pIterator) { pIterator->chsState = MNTState_Monitored; pIterator = pIterator->pNext; } myMsg.hWin = WM_GetClientWindow(menuWin); myMsg.MsgId = USER_MSG_DFULT_CNT; myMsg.Data.v = 0; WM_SendMessage(myMsg.hWin, &myMsg); } WM_SetFocus(menuWin); break; case GUI_KEY_MENU: WM_BringToTop(mapWin); WM_SetFocus(mapWin); break; default: LISTVIEW_Callback(pMsg); break; } break; default: LISTVIEW_Callback(pMsg); break; } }
int Decorator_HandleMessage(tWindow *Window, int Message, int Length, const void *Data) { static tWindow *btn1_down; static enum { BTN1_MOVE, BTN1_RLEFT, BTN1_RRIGHT, BTN1_RBOTTOM, } btn1_mode; switch(Message) { case WNDMSG_MOUSEMOVE: { const struct sWndMsg_MouseMove *msg = Data; if( Window && btn1_down == Window ) { switch(btn1_mode) { case BTN1_MOVE: // Move WM_MoveWindow(Window, Window->X + msg->dX, Window->Y + msg->dY); break; case BTN1_RLEFT: // Resize left if( Window->W + msg->dX > 50 ) { WM_MoveWindow(Window, Window->X + msg->dX, Window->Y); WM_ResizeWindow(Window, Window->W - msg->dX, Window->H); } break; case BTN1_RRIGHT: // Resize right if( Window->W + msg->dX > 50 ) { WM_ResizeWindow(Window, Window->W + msg->dX, Window->H); } break; case BTN1_RBOTTOM: // Resize bottom if( Window->H + msg->dY > 50 ) { WM_ResizeWindow(Window, Window->W, Window->H + msg->dY); } break; } return 0; } // TODO: Change cursor when hovering over edges if(msg->Y >= 0) return 1; // Pass // TODO: Handle return 0; } case WNDMSG_MOUSEBTN: { const struct sWndMsg_MouseButton *msg = Data; // TODO: Do something with other buttons // - Window menu for example if( msg->Button != 0 ) return 1; // pass on if( !msg->bPressed ) btn1_down = 0; #define HOTSPOTR(x,y,w,h) Decorator_INT_CoordInRangeR(msg->X, msg->Y, x, y, w, h) #define HOTSPOTA(sx,sy,ex,ey) Decorator_INT_CoordInRange(msg->X, msg->Y, sx, sy, ew, eh) // Left resize border if( msg->bPressed && HOTSPOTR(-ciSideBorderWidth, -ciTitlebarHeight, ciSideBorderWidth, ciTitlebarHeight+Window->H+ciBottomBorderWidth) ) { btn1_down = Window; btn1_mode = BTN1_RLEFT; return 0; } // Right resize border if( msg->bPressed && HOTSPOTR(Window->W, -ciTitlebarHeight, ciSideBorderWidth, ciTitlebarHeight+Window->H+ciBottomBorderWidth) ) { btn1_down = Window; btn1_mode = BTN1_RRIGHT; return 0; } // Bottom resize border if( msg->bPressed && HOTSPOTR(0, Window->H, Window->W, ciTitlebarHeight) ) { btn1_down = Window; btn1_mode = BTN1_RBOTTOM; return 0; } // Titlebar buttons if( msg->bPressed && Decorator_INT_CoordInRangeR(msg->X, msg->Y, BTN_CLOSE(Window)) ) { WM_SendMessage(NULL, Window, WNDMSG_CLOSE, 0, NULL); return 0; } // Titlebar - Move if( msg->bPressed && msg->Y < 0 ) { btn1_down = Window; btn1_mode = BTN1_MOVE; return 0; } #undef HOTSPOTR #undef HOTSPOTA return 1; } default: // Anything unhandled is passed on return 1; } }