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

 

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

  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 }

 

posted @ 2014-08-25 11:24  beautifulzzzz  阅读(1440)  评论(0编辑  收藏  举报