我正在使用 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/