Winapi 如何获取CPrintDialogEx中属性表的句柄
我试图向Winapi 如何获取CPrintDialogEx中属性表的句柄,winapi,visual-c++,mfc,Winapi,Visual C++,Mfc,我试图向CPrintDialogEx添加属性页,但失败惨重。我的代码目前是 PROPSHEETPAGE optionsPage1; HPROPSHEETPAGE hOptionsPage = NULL; memset(&optionsPage1, 0, sizeof(PROPSHEETPAGE)); optionsPage1.dwSize = sizeof(PROPSHEETPAGE); optionsPage1.dwFlags = PSP_DEFAULT | PSP_USETITLE
CPrintDialogEx
添加属性页,但失败惨重。我的代码目前是
PROPSHEETPAGE optionsPage1;
HPROPSHEETPAGE hOptionsPage = NULL;
memset(&optionsPage1, 0, sizeof(PROPSHEETPAGE));
optionsPage1.dwSize = sizeof(PROPSHEETPAGE);
optionsPage1.dwFlags = PSP_DEFAULT | PSP_USETITLE;
optionsPage1.hInstance = AfxGetInstanceHandle();
optionsPage1.pszTemplate = MAKEINTRESOURCE(IDD_QUICKREPORT_OPTIONS);
optionsPage1.hIcon = NULL;
optionsPage1.pszIcon = NULL;
optionsPage1.pszTitle = _T("Options");
optionsPage1.pfnDlgProc = (DLGPROC)CQuickReport::OptionsPropertyPageDlgProc;
optionsPage1.lParam = NULL;
m_pdex.nPropertyPages = 1;
hOptionsPage = CreatePropertySheetPage(&optionsPage1);
m_pdex.lphPropertyPages = &hOptionsPage;
INT_PTR nResult = CPrintDialogEx::DoModal();
属性页未显示,因此我想在
CPrintDialogEx
中的WM_INITDIALOG
之后添加它。属性表创建后,如何获取其句柄。如果有人有一个勇敢的方法来实现这一点,并且在调用DoModal
之前,应该添加属性表,将祖父母的txt设置为OnInitDialog中的对话框之外,将其命名为CPrintDialogEx
OnInitDialog
在DoModal
之后调用,因此初始化页面为时已晚
只需覆盖DoModal
:
class CMyPrintDialogEx : public CPrintDialogEx
{
public:
INT_PTR DoModal()
{
PROPSHEETPAGE optionsPage1;
memset(&optionsPage1, 0, sizeof(PROPSHEETPAGE));
optionsPage1.dwSize = sizeof(PROPSHEETPAGE);
optionsPage1.dwFlags = PSP_DEFAULT | PSP_USETITLE;
optionsPage1.hInstance = AfxGetInstanceHandle();
optionsPage1.pszTemplate = MAKEINTRESOURCE(IDD_QUICKREPORT_OPTIONS);
optionsPage1.pszTitle = _T("Options");
optionsPage1.pfnDlgProc = (DLGPROC)CQuickReport::OptionsPropertyPageDlgProc;
optionsPage1.lParam = NULL;
m_pdex.nPropertyPages = 1;
HPROPSHEETPAGE hOptionsPage = CreatePropertySheetPage(&optionsPage1);
m_pdex.lphPropertyPages = &hOptionsPage;
INT_PTR nResult = CPrintDialogEx::DoModal();
return nResult;
}
};
显示选项属性页DlgProc的定义
如何添加DlgProc。这太复杂了,我超过了327个字符的限制!单击编辑按钮并对问题进行更改。如果您有DLL,它取决于IDD\u QUICKREPORT\u OPTIONS
的位置。如果在错误的位置查找资源,则会出现1814错误。@user9778277我认为您试图将其添加为具有字符限制的注释。但要求您编辑问题本身。@user9778277 Barmak要求您提供cquickreport::OptionPropertyPageDlgProc的定义。请更新您的问题并提供足够的上下文来重现您的场景。LRESULT CQuickReport::optionPropertyPageDlgProc(HWND hWndDlg,UINT Msg,WPARAM WPARAM,LPARAM LPARAM);您已经显示了函数的声明,这不包含任何意外情况,也不会再现任何错误。我还必须添加它。在我将所有内容移动到DLL之前,它确实有效。不要在注释部分添加随机代码。改为编辑您的问题。您的IDD\u QUICKREPORT\u选项
资源可以存储在DLL或EXE文件中。在您的情况下,它存储在错误的位置,并导致1814错误。