【发布时间】:2013-06-01 01:12:30
【问题描述】:
我有一个由 3 个选项卡控件组成的 GUI 当我单击每个选项卡时,会出现该选项卡上的控件(单击该选项卡时显示的每个选项卡都有一个对话框) 该应用程序有另一个对话框,当我更改该对话框或任何其他窗口或程序的焦点并返回主程序时,我只能看到我之前留下的选项卡,而当我单击其他选项卡时它们不会显示。
我在WM_INITDIALOG 中初始化选项卡,并显示在WM_NOTIFY 中单击每个选项卡的时间,如下所示:
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case TCN_SELCHANGING:
{
// Return FALSE to allow the selection to change.
return FALSE;
}
break;
case TCN_SELCHANGE:
{
if( TabCtrl_GetCurSel( ( ( LPNMHDR ) lParam) -> hwndFrom ) == 0 ) {
ShowWindow( hwndTimeFrame, SW_HIDE );
ShowWindow( hwndAR, SW_HIDE );
ShowWindow( hwndInsFeed, SW_SHOW );
}
if( TabCtrl_GetCurSel( ( ( LPNMHDR ) lParam) -> hwndFrom ) == 1 )
{
ShowWindow( hwndInsFeed, SW_HIDE );
ShowWindow( hwndAR, SW_HIDE );
ShowWindow( hwndTimeFrame, SW_SHOW );
}
if( TabCtrl_GetCurSel( ( ( LPNMHDR ) lParam) -> hwndFrom ) == 2 )
{
ShowWindow( hwndInsFeed, SW_HIDE );
ShowWindow( hwndTimeFrame, SW_HIDE );
ShowWindow( hwndAR, SW_SHOW );
}
}
break;
}
break;
有什么建议吗?
【问题讨论】:
-
您是否确认您仍在接收
TCN_SELCHANGE通知并且TabCtrl_GetCurSel()没有失败? -
是的。我跟踪程序,每次我正确地通过每个“IF”但“ShowWindow”没有效果!
标签: c++ winapi user-interface