OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6180|回复: 4

关于emwin的对话框和窗口

[复制链接]

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
发表于 2016-5-25 18:23:25 | 显示全部楼层 |阅读模式
10金钱
小弟有一个问题没搞明白。
用GUI_Builder做出来的界面,首先要有一个Window或者Framewin,这里将这个必要的Window定义为Win1。


/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 50, 50, 300, 400, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 250, 116, 80, 20, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;

  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Window'
    //
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, GUI_GREEN);    //
    // Initialization of 'Button'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
    BUTTON_SetText(hItem, "haha");


(后面的不重要就不截了)

/*********************************************************************
*
*       CreateWindow
*/

WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;
  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}

假设自己定义一个变量 Dialog_Hwin = CreateWindow();// 用来表示创建出的Dialog句柄。
针对上述的程序,我想问这个Dialog对话框和Win1是什么关系??在运行GUI_CreateDialogBox函数时候我们把_cbDialog当成了是Dialog的过程函数,那就是说明这个函数的目标窗口是Dialog了?可是为什么我贴的第二段注释程序的 hItem = pMsg->hWin;返回的句柄会是Win1而不是Dialog_Hwin ?难道这里的pMsg->hWin就是Dialog_Hwin吗,Dialog完全等价于Win1吗?然后按钮的句柄是从 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);函数返回的,如果Dialog不等于Win1的话,那么这个BUTTON的父窗口是Win1还是Dialog?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-5-25 20:18:11 | 显示全部楼层
回复

使用道具 举报

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
 楼主| 发表于 2016-5-26 12:21:20 | 显示全部楼层
有人看见嘛,手册里面“WINDOW 小工具的作用是从资源表创建对话框窗口。”这样描述的,所以我当这个WINDOW就是Dialog了,目前使用还没有问题~
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-5-26 17:50:52 | 显示全部楼层
句柄才是唯一,可以创建多个相同窗口
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
 楼主| 发表于 2016-5-28 02:48:20 | 显示全部楼层
emWin 发表于 2016-5-26 17:50
句柄才是唯一,可以创建多个相同窗口

你好,你的意思是Dialog和Win1是相同的窗口,可是它们有不同的句柄?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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