硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2426|回复: 5
收起左侧

[emWin] 在WINDOWS中创建FRAMEWIN

[复制链接]

15

主题

56

回帖

101

积分

初级会员

积分
101
发表于 2018-7-2 14:42:59 | 显示全部楼层 |阅读模式
如下,我在window中创建frame控件,为什么没有显示出来
  1. <font color="#0000ff">static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {</font>
  2.         { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
  3.         // USER START (Optionally insert additional widgets)
  4.         // USER END
  5. <font color="#0000ff">};</font>

  6. WM_HWIN hhhWin;
  7. <font color="#0000ff">static void </font><font color="#ff0000">_cbFrame</font><font color="#0000ff">(WM_MESSAGE * pMsg) {</font>
  8.         WM_SCROLL_STATE ScrollState;
  9.         WM_HWIN         hDlg;
  10.         int             xPos;
  11.         int             yPos;

  12.         hDlg = pMsg->hWin;
  13.         switch (pMsg->MsgId) {
  14.         default:
  15.                 WM_DefaultProc(pMsg);
  16.         }
  17. <font color="#0000ff">}</font>

  18. <font color="#0000ff">static void _cbDialog(WM_MESSAGE * pMsg) {</font>
  19.         WM_HWIN hItem;
  20.         // USER START (Optionally insert additional variables)
  21.         int x, y;
  22.         WM_HWIN hFrameWin;
  23.         // USER END

  24.         switch (pMsg->MsgId) {
  25.         case WM_INIT_DIALOG:
  26.                 //
  27.                 // Initialization of 'Window'
  28.                 //
  29.                 hItem = pMsg->hWin;
  30.                 WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(GUI_RED));
  31.                 // USER START (Optionally insert additional code for further widget initialization)
  32.                 // USER END
  33.                 break;
  34.                 // USER START (Optionally insert additional message handling)
  35.                 //x = WM_GetWindowSizeX(pMsg->hWin);
  36.                 //y = WM_GetWindowSizeY(pMsg->hWin);
  37. <font color="#ff0000">                hFrameWin = FRAMEWIN_CreateEx(0, 0, 100, 100, hhhWin, WM_CF_SHOW , 0, 0, "WINDOW POP UP", _cbFrame);</font>
  38.                 WM_ShowWindow(hFrameWin);
  39.         case WM_PAINT:
  40.                 GUI_SetBkColor(GUI_BLUE);
  41.                 GUI_Clear();
  42.                 break;
  43.                 // USER END
  44.         default:
  45.                 WM_DefaultProc(pMsg);
  46.                 break;
  47.         }
  48. <font color="#0000ff">}</font>

  49. WM_HWIN CreateWindow(void);
  50. <font color="#0000ff">WM_HWIN CreateWindow(void) {</font>
  51.        

  52.         hhhWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  53.         return hhhWin;
  54. <font color="#0000ff">}</font>
复制代码


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-2 15:40:39 | 显示全部楼层
程序里面有两个问题
1、你的WM_INIT_DIALOG消息里面不可以调用2D操作,要放在WM_PAINT消息里面,比如你的
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();

2、你的消息WM_INIT_DIALOG执行的时候,看下你的对话框句柄hhhWin是不是还没有还没有返回,也就是此时这个句柄还不是有效的。
回复

使用道具 举报

15

主题

56

回帖

101

积分

初级会员

积分
101
 楼主| 发表于 2018-7-2 15:44:43 | 显示全部楼层
eric2013 发表于 2018-7-2 15:40
程序里面有两个问题
1、你的WM_INIT_DIALOG消息里面不可以调用2D操作,要放在WM_PAINT消息里面,比如你的
...

找到问题了,居然把创建写在了INIT分支的break下面
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-2 15:53:41 | 显示全部楼层
drifting1024 发表于 2018-7-2 15:44
找到问题了,居然把创建写在了INIT分支的break下面

break;太隐蔽了额,我还以为你没写呢,那就不存在第1个问题了。

不过我说的第2条,应该是存在这个问题,你的FrameWIN父窗口不是对话框。
回复

使用道具 举报

15

主题

56

回帖

101

积分

初级会员

积分
101
 楼主| 发表于 2018-7-2 16:08:16 | 显示全部楼层
eric2013 发表于 2018-7-2 15:53
break;太隐蔽了额,我还以为你没写呢,那就不存在第1个问题了。

不过我说的第2条,应该是存在这个 ...

正常了顺便吐槽下回复框贴代码的功能,我看上面有文本颜色修改,用了之后再上传代码就变成上面那样了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-2 16:19:06 | 显示全部楼层
drifting1024 发表于 2018-7-2 16:08
正常了顺便吐槽下回复框贴代码的功能,我看上面有文本颜色修改,用了之后再上传代码就变成上面那样了

discuz论坛不支持引用代码里面再设置颜色。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 07:28 , Processed in 0.498270 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表