@2018-08-28
【小记】
在 case WM_INIT_DIALOG: 中使用 CHECKBOX_SetState()函数改变了复选框状态,就会产生 WM_NOTIFICATION_VALUE_CHANGED 通知代码,则在 case WM_NOTIFY_PARENT: 中就会进入该分支
【调试记录】
下段代码的执行顺序 ①——⑤——②——⑥——③——⑦——④,这都是因使用了函数 CHECKBOX_SetState() 引起的
case WM_INIT_DIALOG:
//
// Initialization of 'opt1-Checkbox'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_0);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt1]);
CHECKBOX_SetFont(hItem, GUI_FONT_16B_1);
CHECKBOX_SetTextColor(hItem, GUI_MAKE_COLOR(0x00FF0000));
CHECKBOX_SetState(hItem, ttEnableOpt1); // --①
//
// Initialization of 'opt2-Checkbox'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_1);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt2]);
CHECKBOX_SetFont(hItem, GUI_FONT_16B_1);
CHECKBOX_SetTextColor(hItem, GUI_MAKE_COLOR(0x00FF0000));
CHECKBOX_SetState(hItem, ttEnableOpt2); // --②
//
// Initialization of 'opt3-Checkbox'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_2);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt3]);
CHECKBOX_SetFont(hItem, GUI_FONT_16B_1);
CHECKBOX_SetTextColor(hItem, GUI_MAKE_COLOR(0x00FF0000));
CHECKBOX_SetState(hItem, ttEnableOpt3); // --③
// USER START (Optionally insert additional code for further widget initialization)
// --④
WM_MakeModal(pMsg->hWin);
initFlag = ; // USER END
break; case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_CHECKBOX_0: // Notifications sent by 'opt1-Checkbox'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_VALUE_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// --⑤
if( == initFlag)
{
ttEnableOpt1 = !ttEnableOpt1;
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_0);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt1]);
} // USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_CHECKBOX_1: // Notifications sent by 'opt2-Checkbox'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_VALUE_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// --⑥
if( == initFlag)
{
ttEnableOpt2 = !ttEnableOpt2;
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_1);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt2]);
} // USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_CHECKBOX_2: // Notifications sent by 'opt3-Checkbox'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_VALUE_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// --⑦
if( == initFlag)
{
ttEnableOpt3 = !ttEnableOpt3;
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_2);
CHECKBOX_SetText(hItem, ttEnable[ttEnableOpt3]);
} // USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
// USER START (Optionally insert additional code for further Ids)
// USER END
}
break;