关于属性页的问题,强人帮忙啊!!!

baidiaohappy 2009-03-21 10:15:26
小弟我在做一个基于对话框的程序,但我在里面加了另外两个对话框(其基类是CPropertyPage),然后我又添加了一个类(基类是CPropertySheet),目的是把整个程序做成属性页的模式。为了把主对话框去掉,启动时只显示基类是CPropertyPage对话框,我在App类的InitInstance里修改了如下代码:

CTestDlg dlg;//CTestDlg dlg是原来的主对话框
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();

改为
CSheet dlg("Start");//CSheet的基类是CPropertySheet
m_pMainWnd = &dlg;
dlg.Create();
int nResponse = dlg.DoModal();

但在运行时,这个程序直接就崩掉了。请问这个问题该如何解决?
...全文
107 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hangyu628 2009-03-21
  • 打赏
  • 举报
回复
楼主这种想法用CProSheet 的DoModal不可能实现,你自己跟踪进去CPropSheet的DoModal看看就清楚了.


ASSERT_VALID(this);
ASSERT(m_hWnd == NULL);

// register common controls
VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTLS_REG));
AfxDeferRegisterClass(AFX_WNDCOMMCTLSNEW_REG);

// finish building PROPSHEETHEADER structure
BuildPropPageArray();

// allow OLE servers to disable themselves
CWinApp* pApp = AfxGetApp();
if (pApp != NULL)
pApp->EnableModeless(FALSE);

// find parent HWND
HWND hWndTop;
HWND hWndParent = CWnd::GetSafeOwner_(m_pParentWnd->GetSafeHwnd(), &hWndTop);
AFX_OLDPROPSHEETHEADER* psh = GetPropSheetHeader();
psh->hwndParent = hWndParent;
BOOL bEnableParent = FALSE;
if (hWndParent != NULL && ::IsWindowEnabled(hWndParent))
{
::EnableWindow(hWndParent, FALSE);
bEnableParent = TRUE;
}
HWND hWndCapture = ::GetCapture();
if (hWndCapture != NULL)
::SendMessage(hWndCapture, WM_CANCELMODE, 0, 0);

// setup for modal loop and creation
m_nModalResult = 0;
m_nFlags |= WF_CONTINUEMODAL;

// hook for creation of window
AfxHookWindowCreate(this);
psh->dwFlags |= PSH_MODELESS;
m_nFlags |= WF_CONTINUEMODAL;
HWND hWnd = (HWND)::PropertySheet((PROPSHEETHEADER*)psh);

到上面的最后一句就异常了...
hangyu628 2009-03-21
  • 打赏
  • 举报
回复
楼主这种想法用CProSheet 的DoModal不可能实现,你自己跟踪进去CPropSheet的DoModal看看就清楚了.


ASSERT_VALID(this);
ASSERT(m_hWnd == NULL);

// register common controls
VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTLS_REG));
AfxDeferRegisterClass(AFX_WNDCOMMCTLSNEW_REG);

// finish building PROPSHEETHEADER structure
BuildPropPageArray();

// allow OLE servers to disable themselves
CWinApp* pApp = AfxGetApp();
if (pApp != NULL)
pApp->EnableModeless(FALSE);

// find parent HWND
HWND hWndTop;
HWND hWndParent = CWnd::GetSafeOwner_(m_pParentWnd->GetSafeHwnd(), &hWndTop);
AFX_OLDPROPSHEETHEADER* psh = GetPropSheetHeader();
psh->hwndParent = hWndParent;
BOOL bEnableParent = FALSE;
if (hWndParent != NULL && ::IsWindowEnabled(hWndParent))
{
::EnableWindow(hWndParent, FALSE);
bEnableParent = TRUE;
}
HWND hWndCapture = ::GetCapture();
if (hWndCapture != NULL)
::SendMessage(hWndCapture, WM_CANCELMODE, 0, 0);

// setup for modal loop and creation
m_nModalResult = 0;
m_nFlags |= WF_CONTINUEMODAL;

// hook for creation of window
AfxHookWindowCreate(this);
psh->dwFlags |= PSH_MODELESS;
m_nFlags |= WF_CONTINUEMODAL;
HWND hWnd = (HWND)::PropertySheet((PROPSHEETHEADER*)psh);

到上面的最后一句就异常了...

CPropSheet是需要父窗口的
baidiaohappy 2009-03-21
  • 打赏
  • 举报
回复
说了半天,我就是希望他能不现实主对话框,或是把主对话框改为我设定的属性页
baidiaohappy 2009-03-21
  • 打赏
  • 举报
回复
说了半天,我就是希望他能不现实主对话框,或是把主对话框改为我设定的属性页
mengde007 2009-03-21
  • 打赏
  • 举报
回复
基类对话框是附属于主对话框的,必须先启动主对话框,然后可以启动CPropertyPage对话框
baidiaohappy 2009-03-21
  • 打赏
  • 举报
回复
哦。那就是说只有保存原来的主对话框了?
内容概要:本文系统研究了基于模型预测控制(MPC)滚动优化的微电网多时间尺度能量管理调度方法,提出了一种结合多时间尺度协调机制与MPC滚动优化框架的调度模型,旨在应对可再生能源出力波动性和负荷不确定性带来的运行挑战。研究详细构建了包含风光储等多种分布式能源的微电网系统架构,设定了以运行成本最小化、碳排放降低和系统稳定性提升为核心的多目标优化函数,并充分考虑设备运行约束、功率平衡约束及储能动态特性等关键因素。文中给出了完整的Python代码实现方案,涵盖模型搭建、优化求解与结果可视化全过程,支持读者复现、验证并进一步拓展算法。该方法有效提升了微电网在复杂运行环境下的经济性、可靠性和低碳化水平。; 适合人群:具备一定电力系统分析基础和Python编程能力,从事微电网、综合能源系统、智能配电网、优化调度等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握MPC在微电网能量管理中的建模思想与实现流程;② 复现并改进多时间尺度调度模型,服务于学术论文撰写或实际项目开发;③ 深入理解滚动优化、预测误差修正与多时间尺度协调控制的技术内涵与工程价值。; 阅读建议:建议读者结合所提供的Python代码逐模块学习,理解各时间尺度(如日前、日内、实时)之间的衔接逻辑,配合优化理论与电力系统运行知识进行深入分析,鼓励在仿真平台中调整参数、设置不同场景以测试模型鲁棒性,从而全面提升对先进能量管理系统的设计与应用能力。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧