Доступ к элементам управления в окне свойств - PullRequest
0 голосов
/ 07 февраля 2019

Я создаю приложение для Windows, используя PropertySheet (тип Wizard97), но мне неясно, как получить доступ к элементам управления из обратного вызова диалога.

Сначала я настраиваю таблицу свойств.

psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_HIDEHEADER ;
psp[1].hInstance = g_hInst;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_SETUP);
psp[1].pszIcon = NULL;
psp[1].pfnDlgProc = (DLGPROC)ButtonsDlgProc;
psp[1].lParam = 0;

Так что в ButtonsDlgProc я не могу получить доступ к элементам управления, которые я добавил в диалог.

LRESULT CALLBACK ButtonsDlgProc(HWND hdlg,
      UINT uMessage,
      WPARAM wParam,
      LPARAM lParam)
{
CButton * button;

switch (uMessage)
{
    case WM_COMMAND:
    switch (wParam)
    {
        case IDC_CHECK1:
            button = (CButton *)GetDlgItem(hdlg, IDC_CHECK1);
            button1IsChecked = button->GetCheck();
            break;

GetDlgItem возвращает дескриптор, но при вызове button-> GetCheck () я получаю исключение.Это правильный способ доступа к элементам управления доступом?

1 Ответ

0 голосов
/ 07 февраля 2019

Самый простой способ достичь этого будет

button = (CButton *)CWnd::FromHandle(::GetDlgItem(hdlg, IDC_CHECK1));
...