C++ WinApi 选项卡帮助调用主静态栏

C++ WinApi Tab Help Calling Main Static Bar

本文关键字:静态 调用 帮助 WinApi 选项 C++      更新时间:2023-10-16

大家好,我希望有人能帮助我,我正在开发一个简单的应用程序,该应用程序使用选项卡控件,我已经设置好了并且工作正常。我的第二个对话框选项卡的处理程序如下所示,其中包含一个弹出窗口,用于确认单击了该按钮,该按钮工作正常。

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(。一旦向上是选项卡控件,另一个向上是您的主对话框。