|
我在对话框的WM_INIT_DIALOG中创建了一个子窗口Window,回调函数为_cbWindow,在回调中处理了两个消息类型:
1.WM_INIT_DIALOG
2.WM_PAINT
只有WM_PAINT消息会响应,在WM_INIT_DIALOG处设置断点,重启程序发现根本不会运行到这。
以下为代码:
- static void _cbDialog(WM_MESSAGE * pMsg) {
- WM_HWIN hItem;
- // USER START (Optionally insert additional variables)
- int x, y;
- // USER END
- switch (pMsg->MsgId) {
- case WM_INIT_DIALOG:
- //
- // Initialization of 'Window'
- //
- hItem = pMsg->hWin;
- WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(GUI_INVALID_COLOR));
- // USER START (Optionally insert additional code for further widget initialization)
- WM_EnableMemdev(pMsg->hWin);
- WIDGET_SetDefaultEffect(&WIDGET_Effect_3D);
- x = WM_GetWindowSizeX(hItem);
- y = WM_GetWindowSizeY(hItem);
- hWindow = WINDOW_CreateEx((x - x/2)/2, (y - y/2)/2, x/2, y/2, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, 0, 0, _cbWindow);
- //WM_SetHasTrans(hWindow);
- hTimer = GUI_TIMER_Create(_Timercb, GUI_GetTime() + 1000, 0, 0);
- // USER END
- break;
- // USER START (Optionally insert additional message handling)
- case WM_PAINT:
- GUI_DrawBitmap(&bm_bg,0,0);
- break;
- // USER END
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
复制代码- static void _cbWindow(WM_MESSAGE * pMsg) {
- WM_SCROLL_STATE ScrollState;
- WM_HWIN hDlg;
- int xPos;
- int yPos;
- int xSize;
- int ySize;
- hDlg = pMsg->hWin;
- switch (pMsg->MsgId) {
- case WM_INIT_DIALOG:
- xPos = WM_GetWindowOrgX(pMsg->hWin);
- yPos = WM_GetWindowOrgY(pMsg->hWin);
- xSize = WM_GetWindowSizeX(pMsg->hWin);
- ySize = WM_GetWindowSizeY(pMsg->hWin);
- hDlg = BUTTON_CreateEx(0, yPos+ySize-40, xSize/2, 40, pMsg->hWin, WM_CF_SHOW, 0, 0);
- break;
- case WM_PAINT:
- WM_EnableMemdev(pMsg->hWin);
- GUI_DrawBitmap(&bm_ADAS_sport, 0, 0);
- break;
- default:
- WM_DefaultProc(pMsg);
- }
- }
复制代码 不知道出了什么问题,WM_PAINT里面可以,但是INIT消息没有接收到 |
|