|
发表于 2017-7-6 01:33:23
|
显示全部楼层
回 wendell.sun 的帖子
wendell.sun:
这样的 创建两个窗口 W1 W2
先创建W1,再创建W2 这时候点击W1 按键之后 W2接到信息之后可以正常显示,这时候再次点击按键,W2 实际上已经响应,做出了动作,但是无法显示。
如果先创建W2 再创建W1 W1怎么操作,W2的内容都可以完整显示出来……
我猜测是窗口z轴的问题 具体解决办法还在找,刚开始研究这玩意 还需多多看看 你觉得呢
.......  也没有问题的,我简单的做了个累加计数,点击一次按钮,做一次累加:
可以直接在模拟器上面跑的代码:- /*********************************************************************
- * *
- * SEGGER Microcontroller GmbH & Co. KG *
- * Solutions for real time microcontroller applications *
- * *
- **********************************************************************
- * *
- * C-file generated by: *
- * *
- * GUI_Builder for emWin version 5.32 *
- * Compiled Oct 8 2015, 11:59:02 *
- * (c) 2015 Segger Microcontroller GmbH & Co. KG *
- * *
- **********************************************************************
- * *
- * Internet: www.segger.com Support: support@segger.com *
- * *
- **********************************************************************
- */
- // USER START (Optionally insert additional includes)
- // USER END
- #include "DIALOG.h"
- WM_HWIN _WinTop;
- WM_HWIN _WinBot;
- #define ID_TEXT_1 (GUI_ID_USER + 0x01)
- #define ID_TEXT_2 (GUI_ID_USER + 0x02)
- #define ID_BUTTON_1 (GUI_ID_USER + 0x03)
- void _cbTopWindow(WM_MESSAGE *pMsg)
- {
- WM_HWIN hItem;
- int NCode;
- int Id;
- WM_MESSAGE msg;
- switch (pMsg->MsgId)
- {
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch(Id)
- {
- case ID_BUTTON_1:
- switch(NCode)
- {
- case WM_NOTIFICATION_CLICKED:
- break;
- case WM_NOTIFICATION_RELEASED:
- msg.MsgId = WM_PAINT;
- msg.Data.v = 1;
- WM_SendMessage(_WinBot,&msg);
- break;
- default:
- break;
- }
- break;
- }
- break;
- /* 重绘消息*/
- case WM_PAINT:
- GUI_SetBkColor(GUI_BLUE);
- GUI_Clear();
- break;
-
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- void _cbBotWindow(WM_MESSAGE *pMsg)
- {
- WM_HWIN hItem;
- int NCode;
- int Id;
- static int count = 0;
- char buf[20];
- switch (pMsg->MsgId)
- {
- case WM_INIT_DIALOG:
- break;
- case WM_NOTIFY_PARENT:
- break;
- /* 重绘消息*/
- case WM_PAINT:
- GUI_SetBkColor(GUI_RED);
- GUI_Clear();
- if(pMsg->Data.v == 1)
- {
- sprintf(buf, "count = %d", count++);
- TEXT_SetText(WM_GetDialogItem(pMsg->hWin,ID_TEXT_2), buf);
- }
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- static void _cbButton(WM_MESSAGE *pMsg)
- {
- GUI_RECT Rect;
- WM_HWIN hWin;
- hWin = pMsg->hWin;
- switch(pMsg->MsgId)
- {
- case WM_PAINT:
- WM_GetClientRect(&Rect);
- if(BUTTON_IsPressed(hWin))
- {
- GUI_SetColor(GUI_DARKGRAY);
- GUI_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
- GUI_SetBkColor(GUI_DARKGRAY);
- GUI_SetColor(GUI_WHITE);
- }
- else
- {
- GUI_SetBkColor(GUI_TRANSPARENT);
- GUI_ClearRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1);
-
- }
- GUI_SetFont(&GUI_Font16_ASCII);
- GUI_DispStringInRect("test", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
- break;
- default:
- BUTTON_Callback(pMsg);
- break;
- }
- }
- void CreateTopWindow(void)
- {
- WM_HWIN hItem;
- _WinTop = WM_CreateWindowAsChild(0,0,320,30,WM_GetDesktopWindowEx(1),WM_CF_SHOW,_cbTopWindow,0);
- hItem = TEXT_CreateEx(0,0,30,30,_WinTop, WM_CF_SHOW|WM_CF_MEMDEV, GUI_TA_LEFT|TEXT_CF_VCENTER, ID_TEXT_1, "1111");
-
- hItem=BUTTON_CreateEx(35,0,30,30,_WinTop,WM_CF_SHOW|WM_CF_MEMDEV,0,ID_BUTTON_1);
- WM_SetCallback(hItem, _cbButton);
-
- }
- void CreateBotWindow(void)
- {
- WM_HWIN hItem;
- _WinBot = WM_CreateWindowAsChild(0,31,320,210,WM_GetDesktopWindowEx(1),WM_CF_SHOW,_cbBotWindow,0);
- hItem = TEXT_CreateEx(0,50,100,30,_WinBot, WM_CF_SHOW|WM_CF_MEMDEV, GUI_TA_LEFT|TEXT_CF_VCENTER, ID_TEXT_2, "2222");
- }
- void TestWindow(void)
- {
- CreateTopWindow();
- CreateBotWindow();
- }
- // USER START (Optionally insert additional public code)
- // USER END
- /*************************** End of file ****************************/
- /*********************************************************************
- *
- * MainTask
- */
- void MainTask(void)
- {
- /* 初始化 */
- GUI_Init();
- /* 窗口自动使用存储设备 */
- WM_SetCreateFlags(WM_CF_MEMDEV);
- /* 创建对话框,使用GUIBulder5.32生成的对话框创建函数 */
- TestWindow();
- while(1)
- {
- GUI_Delay(50);
- }
- }
复制代码 |
|