大家好,我希望有人能帮助我,我正在开发一个简单的应用程序,该应用程序使用选项卡控件,我已经设置好了并且工作正常。我的第二个对话框选项卡的处理程序如下所示,其中包含一个弹出窗口,用于确认单击了该按钮,该按钮工作正常。
INT_PTR CALLBACK TabDialogTwo(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
break;
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDC_CHECK_ACCOUNT:
// This doesnt work
HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1);
Static_SetText(hwndStatic, "Button Works");
// This does as expected
MessageBox(hwndDlg,TEXT("User Account Selected"),TEXT("Button"),0);
break;
}
break;
}
}
return FALSE ;
}
我的问题是我的选项卡控件上的按钮不会使用此代码更新我的静态栏
// This doesnt work from inside the tab window but does work in my intial dialog function
HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1);
Static_SetText(hwndStatic, "Button Works???");
我需要将句柄更改为 hwnd->hwndDlg 吗? 这未定义为非。
我想要做的只是能够从选项卡控件中更改我的状态栏,这可能吗? 我已经不停地搜索了 8 天,所以我想我会问专家。
非常感谢
更新已修复:请参阅下面的 Pezcode 示例。 感谢所有助手。
替换
HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1);
跟
HWND hwndStatic = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_STATIC1);
GetDlgItem
仅在您提供给它的窗口中获取控件。 该上下文中的hwndDlg
是选项卡内的对话框。但是要获取主对话框静态栏的hwndStatic
句柄,您必须提升两个级别(通过GetParent
API(。一旦向上是选项卡控件,另一个向上是您的主对话框。