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

时间:2012-02-24 23:57:49

标签: c++ winapi tabs controls

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

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天不停,所以我想问专家。

非常感谢

UPDATE FIXED:请参阅下面的Pezcode示例。感谢所有帮助者。

1 个答案:

答案 0 :(得分:0)

替换

HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1);

HWND hwndStatic = GetDlgItem(GetParent(GetParent(hwndDlg)), IDC_STATIC1);

GetDlgItem仅在您提供给它的窗口内获得控件。该上下文中的hwndDlg是选项卡内的对话框。但要将hwndStatic句柄设置为主对话框的静态栏,您必须启动两个级别(通过GetParent API)。 一旦启动是选项卡控件,另一个是主对话框。