为什么点击了主界面的OK按钮,CPropertySheet弹不出模态对话框!!?
急急急,请大神指教!
MFC关于CPropertySheet和CPropertyPage弹不出窗口的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 你知我知皆知 2024-07-29 13:15关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是由于在
CPropertySheet
的构造函数中设置了一个dwFlags
标志位,使得其没有被初始化为默认值。这导致了OnActive()
方法无法正确地获取父窗体,并试图设置wizardButtons
属性。解决方案是在构造函数中初始化
dwFlags
标志位,使其具有正确的值:CPropertySheet::CPropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) { m_psh.dwFlags &= ~PSH_NOAPPLYNOW; m_psh.dwFlags |= PSH_HASHELP; m_psh.dwFlags |= PSH_NOHELP; m_psh.dwFlags |= PSH_WIZARDMODE; // Set the wizard buttons for this page. if (iSelectPage == 1) { m_psh.wizardButtons = PSWIZB_NEXT; } else if (iSelectPage == 2) { m_psh.wizardButtons = PSWIZB_BACK | PSWIZB_FINISH; } }
然后,在
OnActive()
方法中,只需设置wizardButtons
即可:void CMyPropertySheet::CMyPropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) { CPropertySheet::CMyPropertySheet(nIDCaption, pParentWnd, iSelectPage); // Set the wizard buttons for this page. if (iSelectPage == 1) { m_psh.wizardButtons = PSWIZB_NEXT; } else if (iSelectPage == 2) { m_psh.wizardButtons = PSWIZB_BACK | PSWIZB_FINISH; } // Call the base class's implementation of OnActive(). return CPropertySheet::OnActive(); }
现在,当您点击主界面的“OK”按钮时,将显示一个包含两个页面的模态对话框。
解决 无用评论 打赏 举报
悬赏问题
- ¥20 MATLAB仿真三相桥式全控整流电路
- ¥15 EDA技术关于时序电路设计
- ¥15 百度文心一言流式返回sse失败
- ¥15 由于远程方已关闭传输流,身份验证失败
- ¥15 rt-detr,PCB,目标检测
- ¥15 有偿求指导实证代码。cfps清洗合并后,无论是构建平衡面板还是非平衡面板,都是只剩几百个样本量。求指导一下哪里出问题了,不要潦草回复
- ¥15 mutlinichenet
- ¥50 Qt5.14.2怎样使用qlistwidget存储指针类数据并更新?
- ¥15 STM32多路复用器ADC采样
- ¥20 Linux(ubuntu)操作相关问题