2012-02-24 15 views
0

こんにちは私は誰かが私を助けることを願っています私はこれを設定して正常に動作するタブコントロールを使用する単純なアプリケーションで作業しています。 2番目のダイアログボックスのハンドラの下には、ボタンがクリックされたことを確認するためのポップアップが含まれています。C++ WinApi Tabヘルプメインスタティックバーを呼び出す

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日間検索したので、専門家に尋ねると思った。

感謝

FIXED UPDATE:以下Pezcodeの例を参照してください。すべてのヘルパーに感謝します。

答えて

0

は、あなたがそれに与えるウィンドウ内のコントロールを取得します

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

GetDlgItem

HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1); 

を交換してください。そのコンテキスト内のhwndDlgは、タブ内のダイアログです。しかし、hwndStaticをメインダイアログの静的バーに合わせるには、2つのレベルを取得する必要があります(GetParent API経由)。 タブコントロールが上になると、もう1つ上のメインダイアログが表示されます。

+0

Pezcodeさん、ありがとう。あなたは私をとても幸せにしました。また、LuskanとGunnerはトップの男です。 –

関連する問題