C++ WinApi 选项卡帮助调用主静态栏
C++ WinApi Tab Help Calling Main Static Bar
大家好,我希望有人能帮助我,我正在开发一个简单的应用程序,该应用程序使用选项卡控件,我已经设置好了并且工作正常。我的第二个对话框选项卡的处理程序如下所示,其中包含一个弹出窗口,用于确认单击了该按钮,该按钮工作正常。
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(。一旦向上是选项卡控件,另一个向上是您的主对话框。
相关文章:
- 如果 std::vector::clear() 不是静态的,如何在没有实例的情况下调用它?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 使用静态变量的递归调用的不同输出
- 如何通过命名空间调用非静态方法
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 调用在 HXX 文件中声明的静态数据成员
- 调用从模板派生的类的静态方法,而不指定模板
- 非静态成员失败的线程调用函数
- 如何在 c++ 中异步调用静态方法?
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 静态 std::map instatiation 在类的方法中调用构造函数吗?
- 调用模板提供的(静态)函数
- 从另一个标头中的标头调用静态方法
- 未调用的初始化静态thread_local结构的构造函数和析构函数
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 静态调用虚函数时
- 为什么 C++ 中的函数重载解析会考虑静态调用的非静态成员函数
- 是什么使编译器从第一个示例中的动态调用更改为第二个示例中的静态调用?
- 从静态调用非静态方法的实例