|
主要功能:按键控件按下,改变窗口的背景颜色。
现象:按键按下,颜色不改变,通过打印发现并没有发送WM_PAINT。拖动窗口,可以触发重绘,颜色变化正常。
代码如下:
- static void _cbDialog(WM_MESSAGE * pMsg) {
- int NCode;
- int Id;
- switch (pMsg->MsgId) {
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch(Id) {
- case ID_BUTTON_0: // Notifications sent by 'Button'
- switch(NCode) {
- case WM_NOTIFICATION_CLICKED:
- g_iOffColor++;
- if (g_iOffColor == 3)
- {
- g_iOffColor = 0;
- }
- printf("g_iOffColor = %d, pMsg->hWin = %d\n", g_iOffColor, pMsg->hWin);
- WM_InvalidateWindow(pMsg->hWin); // 窗口无效
- break;
- case WM_NOTIFICATION_RELEASED:
- break;
- }
- break;
- }
- break;
- // USER START (Optionally insert additional message handling)
- case WM_PAINT: // 重绘
- printf("WM_PAINT\n");
- GUI_SetBkColor(g_auicolor[g_iOffColor]);
- GUI_Clear();
- break;
- // USER END
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- WM_HWIN CreateFramewin(void) {
- WM_HWIN hWin;
- hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
- printf("hWin = %d\n", hWin);
- return hWin;
- }
复制代码
|
|