C ++ WinApi Tab Help Вызов главной статической панели - PullRequest
0 голосов
/ 25 февраля 2012

Привет всем. Надеюсь, кто-то может мне помочь. Я работаю над простым приложением, использующим элементы управления вкладками, которое я настроил и работает нормально.Мои обработчики для второй вкладки диалогового окна находятся ниже и содержат всплывающее окно, подтверждающее, что кнопка была нажата, которая работает нормально.

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 ниже.спасибо всем помощникам.

1 Ответ

0 голосов
/ 25 февраля 2012

Заменить

HWND hwndStatic = GetDlgItem(hwndDlg, IDC_STATIC1);

на

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

GetDlgItem получает управление только в том окне, которое вы ему даете.hwndDlg в этом контексте это диалог внутри вкладки.Но чтобы получить дескриптор hwndStatic для статической панели основного диалога, вам нужно подняться на два уровня (через GetParent API).Как только вверху находится элемент управления вкладкой, другой вверх - это ваш главный диалог.

...