>_<" 上一节已经说过,创建过得窗口虽然可见,但是它们是以 “空”的形式出现的。这是因为对话框过程函数尚未包含初始化单个元素的代码。小工具的初始值、由它们所引起的行为以及它们之间的交互作用都需要在对话框过程中进行定义。这里在过程函数的WM_INIT_DIALOG消息下实现对小窗口初始化,然后在WM_NOTIFY_PARENT消息下实现对小工具的响应~

aaarticlea/png;base64,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" alt="" />

 /*********************************************************************
*
对话框可以基于阻塞(使用GUI_ExecDialogBox())或非阻塞(使用GUI_CreateDialogBox())
方式创建。必须首先定义一个资源表,以指定在对话框中所要包括的所有小工具。下面的示例说明了创
建资源表的方法:
对话框中所要包括的任何小工具都必须使用<WIDGET>_CreateIndirect()函数来间接创建。
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", , , , , , FRAMEWIN_CF_MOVEABLE, },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, , , , },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, , , , },
{ TEXT_CreateIndirect, "LText", , , , , , TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "RText", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, , , , , , },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT1, , , , , , },
{ TEXT_CreateIndirect, "Hex", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT2, , , , , , },
{ TEXT_CreateIndirect, "Bin", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT3, , , , },
{ LISTBOX_CreateIndirect, NULL, GUI_ID_LISTBOX0,, , , },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK0, , , , },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK1, , , , },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, , , , },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER1, , , , }
};
/*********************************************************************
*
对话框过程函数
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
int NCode, Id;
static const GUI_ConstString _apListBox[] = { //ListBox contant
"English", "Deutsch", "Fran?ais", "Japanese", "Italiano", NULL
};
WM_HWIN hEdit0, hEdit1, hEdit2, hEdit3, hListBox;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
/*用它们各自的初始值对小工具进行初始化。在对话框过程函数中,这是对WM_INIT_DIALOG
消息做出反应时的通常做法*/
case WM_INIT_DIALOG:
/* Get window handles for all widgets */
hEdit0 = WM_GetDialogItem(hWin, GUI_ID_EDIT0);
hEdit1 = WM_GetDialogItem(hWin, GUI_ID_EDIT1);
hEdit2 = WM_GetDialogItem(hWin, GUI_ID_EDIT2);
hEdit3 = WM_GetDialogItem(hWin, GUI_ID_EDIT3);
hListBox = WM_GetDialogItem(hWin, GUI_ID_LISTBOX0);
/* Initialize all widgets */
EDIT_SetText(hEdit0, "EDIT widget 0");
EDIT_SetText(hEdit1, "EDIT widget 1");
EDIT_SetTextAlign(hEdit1, GUI_TA_LEFT);
EDIT_SetHexMode(hEdit2, 0x1234, , 0xffff);
EDIT_SetBinMode(hEdit3, 0x1234, , 0xffff);
LISTBOX_SetText(hListBox, _apListBox);
WM_DisableWindow (WM_GetDialogItem(hWin, GUI_ID_CHECK1));
CHECKBOX_Check( WM_GetDialogItem(hWin, GUI_ID_CHECK0));
CHECKBOX_Check( WM_GetDialogItem(hWin, GUI_ID_CHECK1));
SLIDER_SetWidth( WM_GetDialogItem(hWin, GUI_ID_SLIDER0), );
SLIDER_SetValue( WM_GetDialogItem(hWin, GUI_ID_SLIDER1), );
break;
/*告知父窗口,其子窗口中发生了某些改变。上面是小工具的初始化,下面是过程中变化的处理*/
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc); /* Id of widget 获得小工具的ID*/
NCode = pMsg->Data.v; /* Notification code 通知消息代号*/
switch (NCode) {
case WM_NOTIFICATION_RELEASED:/* React only if released 此通知消息将在被点击的小工具已被释放时发送。*/
if (Id == GUI_ID_OK) { /* OK Button */
GUI_EndDialog(hWin, );
}
if (Id == GUI_ID_CANCEL) { /* Cancel Button */
GUI_EndDialog(hWin, );
}
break;
case WM_NOTIFICATION_SEL_CHANGED:/* Selection changed 此通知消息将在小工具选择已更改时发送。*/
FRAMEWIN_SetText(hWin, "Dialog - sel changed");
break;
default:
FRAMEWIN_SetText(hWin, "Dialog - notification received");
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* MainTask
*/
void Fun(void) {
//对于该示例,对话框显示时会有下列代码行:
GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),&_cbCallback, , , );
}

[ucgui] 对话框2——小窗口初始化与消息响应的更多相关文章

  1. 警告(alert 消息对话框) 如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是使用alert实现的

    警告(alert 消息对话框) 我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字.如果你不点击"确定",就不能对网页做任何操作,这个小窗口就是使用alert ...

  2. uCGUI窗口初始化过程

    一.相关结构体和变量 重要的uCGUI系统全局变量 NextDrawWin                      下一个需要重绘的窗口句柄 WM__NumWindows       系统当前的总共 ...

  3. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  4. [ucgui] 对话框1——创建对话框

    >_<" 小工具和对话框的区别: 小工具可以创建并独立使用,因为它们本质上就是窗口.但是,通常需要使用对话框,它是包含一个或多个小工具的窗口. 对话框通常是一个窗口,它在出现时会 ...

  5. 深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good

    笔记:争取不用看下面的内容,只看自己的笔记,就能记住这个流程,就算明白了: _tWinMain-->AfxWinMain,它调用四个函数: -->AfxWinInit用于做一些框架的初始化 ...

  6. 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口

    最近业务需求需要我们直播返回或者退出直播间时,开一个小窗口在全局继续直播视频,先看效果图. 调研了一下当下主流直播平台,斗鱼.BiliBili等app,都是用WindowManger做的(这个你可以在 ...

  7. ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_size zmq_msg_init_size(3) ØMQ Manual - ØMQ/3.2.5 ...

  8. 黑马程序员_Java基础:多功能小窗口,swing,io,net综合应用

    ------- android培训.java培训.期待与您交流! ---------- 概念原理的理解,不代表能熟练应用. 如果将多个知识点关联并应用起来,这能加快我们对知识的掌握. 作为一个初学者, ...

  9. 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo

    最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘. 3个消息分别是:WM_SIZE.WM_SIZING.WM_GETMINMAXINFO:分别对应相应的处理函数:OnSize.O ...

随机推荐

  1. Android 下拉刷新框架实现

    原文地址:http://blog.csdn.net/leehong2005/article/details/12567757 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些 ...

  2. 性能改善之For与Foreach

    关于For与Foreach的区别,博客园里已经有好多这样文章了,都分析的挺好:http://www.cnblogs.com/jobs/archive/2004/07/17/25218.aspx  不过 ...

  3. Android Studio鼠标悬停显示注释

    Android Studio鼠标悬停显示注释 在AS中配置 如果你想从网上查看注释,到这一步就操作完成. 下面说明让软件使用本地注释: 使用本地注释 以Windows为例: 找到下面文件 C:\Use ...

  4. Filter过滤器简单应用( 接口访问控制 )

    一.描述 在提供安卓.IOS客户端接口时,可以在登陆接口分配Session给客户端,用于判断其他接口是否是合法访问,以避免将所有的接口都暴露在web中可以由路径直接访问.但是最近的一个项目中的移动接口 ...

  5. 你必须了解的基础的 Linux 网络命令

    Linux 基础网络命令列表 我在计算机网络课程上使用 FreeBSD,不过这些 UNIX 命令应该也能在 Linux 上同样工作. 连通性 ping <host>:发送 ICMP ech ...

  6. [Ng]Angular应用点概览

      1. 使用模块化写法. var app = angular.module('myApp', []); app.controller('TextController', function($scop ...

  7. Github两步认证

    获取密钥:ssh-keygen -t rsa  切换到公钥所在路径:cd .ssh 查看该路径下的所有文件:ls 查看公钥:cat id_rsa.pub 获取密钥之后,去https://github. ...

  8. vb.net加密解密方法

    1.vb.net加密解密方法 Private Function getLicenseDate() As String Dim b() As Byte Dim path As String = Serv ...

  9. C#压缩文件 不压缩路径

    我想把 E:\\AA\BB\11.txt 压缩后存入 E:\\AA1\BB1\11.rar 但是当我解压( E:\\AA1\BB1\11.rar)的时候,发现:11.txt 不是在 E:\\AA1\B ...

  10. (转)四种常见的 POST 提交数据方式

    四种常见的 POST 提交数据方式(转自:https://imququ.com/post/four-ways-to-post-data-in-http.html) HTTP/1.1 协议规定的 HTT ...