0

我正在使用 PropertySheet(Wizard97 类型)创建一个 Windows 应用程序,但我不清楚如何从对话框回调中访问控件。

首先我设置属性表。

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() 时,我得到一个异常。这是访问控制成员的正确方法吗?

4

1 回答 1

1

实现它的最简单方法是

button = (CButton *)CWnd::FromHandle(::GetDlgItem(hdlg, IDC_CHECK1));
于 2019-02-07T10:34:13.560 回答