>_<" 模式窗口,只有结束该窗口时才能聚焦到其他的窗口上~

  1 //
  2 //全局函数
  3 //
  4 static void _cbDialog0(WM_MESSAGE * pMsg);
  5 static void _cbDialog1(WM_MESSAGE * pMsg);
  6 static void _cbDialog2(WM_MESSAGE * pMsg);
  7 //
  8 //变量
  9 //
 10 WM_HWIN hWin_p,hWin_c_AdjZero,hWin_c_AdjValue;
 11 //
 12 //宏定义
 13 //窗口0:是主界面窗口
 14 //窗口1:是调零窗口
 15 //窗口2:是校准窗口
 16 //命名规则:P表示父窗口,C表示子窗口;
 17 //当存在同一级的相同控件时要在后面加上各自的名字区分
 18 //ID_控件类型_父窗口还是子窗口_一级区分_二级区分...
 19 //
 20 #define ID_FRAMEWIN_P              (GUI_ID_USER + 0x0E)
 21 #define ID_BUTTON_P_AdjZero       (GUI_ID_USER + 0x18)
 22 #define ID_BUTTON_P_AdjValue       (GUI_ID_USER + 0x19)
 23
 24 #define ID_FRAMEWIN_C_AdjZero   (GUI_ID_USER + 0x21)
 25 #define ID_BUTTON_C_AdjZero       (GUI_ID_USER + 0x22)
 26 #define ID_TEXT_C_AdjZero       (GUI_ID_USER + 0x25)
 27 #define ID_MULTIEDIT_C_AdjZero  (GUI_ID_USER + 0x26)
 28
 29 #define ID_FRAMEWIN_C_AdjValue  (GUI_ID_USER + 0x27)
 30 #define ID_BUTTON_C_AdjValue      (GUI_ID_USER + 0x28)
 31 #define ID_MULTIEDIT_C_AdjValue (GUI_ID_USER + 0x29)
 32 #define ID_SLIDER_C_AdjValue      (GUI_ID_USER + 0x30)
 33 #define ID_TEXT_C_AdjValue      (GUI_ID_USER + 0x31)
 34 #define ID_EDIT_C_AdjValue      (GUI_ID_USER + 0x35)
 35 //
 36 //资源列表
 37 //窗口0:是主界面窗口
 38 //窗口1:是调零窗口
 39 //窗口2:是校准窗口
 40 //
 41 static const GUI_WIDGET_CREATE_INFO _aDialogCreate0[] = {
 42   { FRAMEWIN_CreateIndirect, "Framewin",ID_FRAMEWIN_P , 0, -1, 800, 480, 0, 0 },
 43   { BUTTON_CreateIndirect, "ZERO", ID_BUTTON_P_AdjZero, 725, 344, 60, 55, 0, 0 },
 44   { BUTTON_CreateIndirect, "VALUE",ID_BUTTON_P_AdjValue, 725, 404, 60, 55, 0, 0},
 45 };
 46 static const GUI_WIDGET_CREATE_INFO _aDialogCreate1[] = {
 47   { FRAMEWIN_CreateIndirect, "Adjust Zero",ID_FRAMEWIN_C_AdjZero, 250, 155, 225, 193, 0, 0},
 48   { BUTTON_CreateIndirect, "Button",ID_BUTTON_C_AdjZero, 153, 16, 50, 45, 0, 0},
 49   { TEXT_CreateIndirect, "Text",ID_TEXT_C_AdjZero, 29, 28, 102, 28, 0, 100},
 50   { MULTIEDIT_CreateIndirect, "Multiedit",ID_MULTIEDIT_C_AdjZero, 4, 88, 207, 81, 0, 0},
 51 };
 52 static const GUI_WIDGET_CREATE_INFO _aDialogCreate2[] = {
 53   { FRAMEWIN_CreateIndirect, "Adjust Value",ID_FRAMEWIN_C_AdjValue, 250, 154, 225, 193, 0, 0},
 54   { BUTTON_CreateIndirect, "Button",ID_BUTTON_C_AdjValue, 172, 8, 40, 39, 0, 0},
 55   { MULTIEDIT_CreateIndirect, "Multiedit",ID_MULTIEDIT_C_AdjValue, 4, 88, 207, 81, 0, 0},
 56   { SLIDER_CreateIndirect, "Slider",ID_SLIDER_C_AdjValue, 2, 61, 178, 20, 0, 0},
 57   { TEXT_CreateIndirect, "Text",ID_TEXT_C_AdjValue, 10, 20, 80, 20, 0, 100},
 58   { EDIT_CreateIndirect, "Edit",ID_EDIT_C_AdjValue, 184, 60, 26, 20, 0, 100},
 59 };
 60 //
 61 //回调函数
 62 //窗口0:是主界面窗口
 63 //窗口1:是调零窗口
 64 //窗口2:是校准窗口
 65 //
 66 static void _cbDialog0(WM_MESSAGE * pMsg) {
 67   WM_HWIN hItem;
 68   int Id, NCode;
 69   // USER START (Optionally insert additional variables)
 70   // USER END
 71
 72   switch (pMsg->MsgId) {
 73   case WM_INIT_DIALOG://初始化建立2个非阻塞的基于主窗口的子窗口
 74       break;
 75   case WM_NOTIFY_PARENT:
 76     Id    = WM_GetId(pMsg->hWinSrc);
 77     NCode = pMsg->Data.v;
 78     switch(Id) {
 79     case ID_BUTTON_P_AdjZero: // Notifications sent by 'SET'
 80       switch(NCode) {
 81       case WM_NOTIFICATION_CLICKED:
 82         break;
 83       case WM_NOTIFICATION_RELEASED:
 84           hWin_c_AdjZero=GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1),&_cbDialog1, 0, 0, 0);
 85         //模式化并聚焦窗口
 86         WM_MakeModal(hWin_c_AdjZero);/*此函数使窗口在“模态”模式下作业。这意味着指针设备输入
 87                                         将仅发送到“模态”窗口,或者如果输入位置在模态窗口的矩形内则仅发送到其子窗口。*/
 88         WM_SetFocus(hWin_c_AdjZero);    //将输入焦点设置到指定窗口
 89         WM_InvalidateWindow(hWin_c_AdjZero);//使窗口无效
 90         break;
 91       }
 92       break;
 93     case ID_BUTTON_P_AdjValue: // Notifications sent by 'CHECK'
 94       switch(NCode) {
 95       case WM_NOTIFICATION_RELEASED:
 96         //模式化并聚焦窗口
 97           hWin_c_AdjValue=GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),&_cbDialog2, 0, 0, 0);
 98         WM_MakeModal(hWin_c_AdjValue);/*此函数使窗口在“模态”模式下作业。这意味着指针设备输入
 99                                         将仅发送到“模态”窗口,或者如果输入位置在模态窗口的矩形内则仅发送到其子窗口。*/
100         WM_SetFocus(hWin_c_AdjValue);    //将输入焦点设置到指定窗口
101         WM_InvalidateWindow(hWin_c_AdjValue);//使窗口无效
102         break;
103       }
104       break;
105     }
106     break;
107   default:
108     WM_DefaultProc(pMsg);
109     break;
110   }
111 }
112
113 static void _cbDialog1(WM_MESSAGE * pMsg) {
114   WM_HWIN hItem;
115   int Id, NCode;
116
117   switch (pMsg->MsgId) {
118   case WM_INIT_DIALOG:
119     //
120     // Initialization of 'Button'
121     //
122     hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_C_AdjZero);
123     BUTTON_SetText(hItem, "OK");
124     //
125     // Initialization of 'Text'
126     //
127     hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_C_AdjZero);
128     TEXT_SetText(hItem, "Adjustment Zero");
129     //
130     // Initialization of 'Multiedit'
131     //
132     hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_C_AdjZero);
133     MULTIEDIT_SetText(hItem, "     make the machine zero load,and then click the OK button!");
134     MULTIEDIT_SetReadOnly(hItem,1);
135     MULTIEDIT_SetWrapWord(hItem);
136     // USER START (Optionally insert additional code for further widget initialization)
137     // USER END
138     break;
139   case WM_NOTIFY_PARENT:
140     Id    = WM_GetId(pMsg->hWinSrc);
141     NCode = pMsg->Data.v;
142     switch(Id) {
143     case ID_BUTTON_C_AdjZero: // Notifications sent by 'Button'
144       switch(NCode) {
145       case WM_NOTIFICATION_RELEASED:    //释放按钮相应
146         GUI_EndDialog(hWin_c_AdjZero,0);
147         break;
148       }
149       break;
150     case ID_MULTIEDIT_C_AdjZero: // Notifications sent by 'Multiedit'
151       switch(NCode) {
152       case WM_NOTIFICATION_CLICKED:
153         break;
154       case WM_NOTIFICATION_RELEASED:
155         break;
156       case WM_NOTIFICATION_VALUE_CHANGED:
157         break;
158       }
159       break;
160     }
161     break;
162   default:
163     WM_DefaultProc(pMsg);
164     break;
165   }
166 }
167
168 static void _cbDialog2(WM_MESSAGE * pMsg) {
169   WM_HWIN hItem;
170   int Id, NCode;
171
172   switch (pMsg->MsgId) {
173   case WM_INIT_DIALOG:
174     //
175     // Initialization of 'Button'
176     //
177     hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_C_AdjValue);
178     BUTTON_SetText(hItem, "OK");
179     //
180     // Initialization of 'Multiedit'
181     //
182     hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_C_AdjValue);
183     MULTIEDIT_SetText(hItem, "     make the machine load above half measuring range ,and then slide the slider to meet the current percentage, last click the OK button!");
184     MULTIEDIT_SetReadOnly(hItem,1);
185     MULTIEDIT_SetWrapWord(hItem);
186     //
187     // Initialization of 'Text'
188     //
189     hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_C_AdjValue);
190     TEXT_SetText(hItem, "Adjust Value");
191     //
192     // Initialization of 'Edit'
193     //
194     hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_C_AdjValue);
195     EDIT_SetText(hItem, "123");
196
197     break;
198   case WM_NOTIFY_PARENT:
199     Id    = WM_GetId(pMsg->hWinSrc);
200     NCode = pMsg->Data.v;
201     switch(Id) {
202     case ID_BUTTON_C_AdjValue: // Notifications sent by 'Button'
203       switch(NCode) {
204       case WM_NOTIFICATION_RELEASED://释放按钮时相应
205           GUI_EndDialog(hWin_c_AdjValue,0);
206         break;
207       }
208       break;
209     case ID_MULTIEDIT_C_AdjValue: // Notifications sent by 'Multiedit'
210       switch(NCode) {
211       case WM_NOTIFICATION_CLICKED:
212         break;
213       case WM_NOTIFICATION_RELEASED:
214         break;
215       case WM_NOTIFICATION_VALUE_CHANGED:
216         break;
217       }
218       break;
219     case ID_SLIDER_C_AdjValue: // Notifications sent by 'Slider'
220       switch(NCode) {
221       case WM_NOTIFICATION_CLICKED:
222         break;
223       case WM_NOTIFICATION_RELEASED:
224         break;
225       case WM_NOTIFICATION_VALUE_CHANGED:
226         break;
227       }
228       break;
229     case ID_EDIT_C_AdjValue: // Notifications sent by 'Edit'
230       switch(NCode) {
231       case WM_NOTIFICATION_CLICKED:
232         break;
233       case WM_NOTIFICATION_RELEASED:
234         break;
235       case WM_NOTIFICATION_VALUE_CHANGED:
236         break;
237       }
238       break;
239     }
240     break;
241   default:
242     WM_DefaultProc(pMsg);
243     break;
244   }
245 }
246
247 //
248 //主函数
249 //
250 void Fun(void) {
251     GUI_Init();                    //ucgui初始化
252     GUI_ExecDialogBox(_aDialogCreate0, GUI_COUNTOF(_aDialogCreate0),&_cbDialog0, 0, 0, 0);
253 }
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3934563.html,如需转载请自行联系原作者

[ucgui] 对话框7——按钮触发与模式窗口相关推荐

  1. 多个按钮触发同一个Bootstrap自适应模态窗口

    在项目中可能会面对这样的一个场景: 界面上有多个按钮,我们希望点击这些按钮弹出同一个模态窗口,但希望模态窗口的内容是动态生成的,即,点击每个按钮弹出的模态窗口内容不同. 通常情况下,一个按钮对应一个模 ...

  2. 模式窗口window.open造成Session丢失的解决方法

    从 HTML 模式或无模式对话框可能没有打开同一进程中 InternetExplorer 窗口中打开,因此模式窗口中调用 window.open()方法打开具体页面,可能造成session 丢失.例如 ...

  3. MFC软件工程架构模型-模式窗口-非模式窗口

    1. SDI单文档界面: MDI多文档界面.有多个"关闭-最大化-最小化"等这样的窗口嵌套 基于对话框的软件模型 2.模式对话框和非模式对话框 模式对话框:使用DoMoel(),弹 ...

  4. 模式窗口showModalDialog的用法总结

    最近几天一直在处理模式窗口的问题,索性写了这篇总结,以供参考: 1.打开窗口: var handle = window.showModalDialog(url, objects, feathers); ...

  5. 如何在网页中弹出的模式窗口,就像C/S中的SHOWMODAL类型窗口

    在网页中弹出的模式窗口的函数为:  window.showModalDialog(sURL   [,   vArguments]   [,   sFeatures]) 1.模态窗口的打开,model ...

  6. 模式窗口window.showModalDialog()的用法

    模式窗口的用法 一.问题: 我想弹出一个窗口,然后在弹出的窗口里,选择或输入一些信息,要求这些信息返回到父页面. 建立父页面:a.htm <html> <head>     & ...

  7. 模式窗口 window.showmodaldialog 总结

    就是要在一个图像插件上面,需要弹出一个窗口,在弹出的窗口之上又的弹出一个模式窗口.然后我用到了window.showmodaldialog 方法 1.参数 showModalDialog("子页面地址 ...

  8. html弹出非模式窗口,JavaScript模态窗口和非模态窗口(转)

    JavaScript中弹出的窗口有模态窗口和非模态窗口.模态窗口就是打开一个子窗口,如果这个子窗口不关闭,就不能操作它的父窗口,原来程序暂停执行,直到这个模态窗口关闭 后才回到原来程序继续.非模态的就 ...

  9. js按钮触发网页提醒_js触发asp.net的Button的Onclick事件应用

    在asp.net引入事件驱动之后,在一个页面上很容易解决多个按钮触发不同事件的问题,避免了在asp中需要多个form或者通过js脚本来控制的麻烦. asp.net带来便利的同时,也带来一个问题.在实际 ...

最新文章

  1. ASP.Net4中实现自定义的请求验证(转贴)
  2. mfc编译html,自己编译 MFC 库
  3. 备考3次终于过信息系统项目管理师长篇心路历程
  4. ACCESS在哪输入SQL语句
  5. python写sql语句_Python操作文件模拟SQL语句功能
  6. python备份目录下文件夹_Python备份目录及目录下的全部内容的实现方法
  7. C 中细节问题的试题
  8. Linux环境下软件安装
  9. 瑞昱rtl8197fs芯片怎么样_代理台湾瑞昱芯片路由器芯片RTL8197FS-VE4-CG和VE5-CG
  10. mac adobe flash builder 4.7 刚装起不来,求助
  11. SDL —— SDL_ttf
  12. PAT乙级10019题——C语言
  13. win10取消文件的默认打开方式
  14. Pyinstaller 详解多种打包过程(去坑,填坑)。
  15. 基于STM32的超声波雷达项目【可拟合构建平面地图】(代码开源)
  16. 哈工大2020春软件构造实验二实验报告
  17. Altium Designer15通用规则设置
  18. 统计qq一天中每秒在线人数
  19. 终于结束了TensorFlow的安装。我不会但是我jio的要记录下来
  20. RFID ACCESS CONTROL门禁密码修改

热门文章

  1. python 多种图片数据格式互转
  2. 大数据分布式集群搭建(5)
  3. Codewars Vasya - Clerk--6 kyu--Python解法
  4. Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符
  5. Debian/Ubuntu/Raspbian 时间同步
  6. 计算机毕业论文过程管理手册,毕业论文过程管理手册(修改)-陈亚琴.doc
  7. LeetCode-笔记-48.旋转图像
  8. 日周月筛选器_天谕2.09月3日周版本更新维护内容预告
  9. golang json 获取所有key_Golang —— JSON 大法
  10. java 苹果vcf解析_VCF文件格式解析