c++ - 访问属性表中的控件

标签 c++ visual-c++ mfc propertysheet

我正在使用 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() 时出现异常。这是访问控制成员的正确方法吗?

最佳答案

最简单的实现方式是

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

关于c++ - 访问属性表中的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566459/

相关文章:

c++ - 逗号作为分隔符和运算符

python - 如何将类成员方法的参数列表自动填充到可变参数中?

c++ - 从资源加载 png 文件(无需 MFC、ATL)

c++ - DWORD、LPTSR、LPBYTE、HANDLE 这些术语是什么意思?

c++ - alt-tab 中的 WS_EX_TOOLWINDOW

c++ - 将Mat中的RGB图像转换为MFC中的BYTE *

c++ - 如何以编程方式结束对话框(i.n 属性表)

c++ - 无法理解这个可变参数模板示例

C++ Dll 注入(inject)——Hello world dll 仅在注入(inject)到注入(inject)它的同一个 .exe 时才有效

C++通过函数指针错误调用成员函数