2012-02-24 60 views
0

大家好,我希望有人可以幫助我我正在使用一個簡單的應用程序,它使用選項卡控件我已經設置好並且工作正常。第二個對話框的處理程序位於下方,幷包含一個彈出窗口,用於確認單擊該按鈕的工作正常。C++ WinApi選項卡幫助調用主靜態條

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示例。感謝所有的幫手。

回答

0

更換

HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1); 

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

GetDlgItem只讓你給它的窗口內的控件。在該上下文中是hwndDlg是選項卡內的對話框。但要獲取主對話框的靜態欄的句柄,您必須啓動兩個級別(通過GetParent API)。 一旦是選項卡控件,另一個是您的主對話框。

+0

感謝Pezcode它的工作。你讓我如此開心就要把整件事都收拾起來。還有路斯坎和Gunner thx頂級球員。 – 2012-02-25 02:13:37