如何把dll中弹出的对话框,作为exe中属性页的一个页面?

sungengyu 2006-03-07 09:58:13
手中有一个别人封装好的动态库,导出一个函数,函数主要功能是弹出一个对话框,如下:
BOOL WINAPI RptShowSnapshot(LPCTSTR szFileName,HWND hwndParent)
{
CPreviewDlg dlgPreview(CWnd::FromHandle(hwndParent));
dlgPreview.m_strFileName=szFileName;
dlgPreview.DoModal();

return TRUE;
}

现在想把该对话框(在 dll 中)作为属性页(在 exe 中)的一个页面使用。

我不知道怎么弄,高手帮忙!
...全文
116 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2006-03-07
  • 打赏
  • 举报
回复
看看这个有没有帮助
Inserting a CFormView into a CPropertySheet
http://www.codeguru.com/cpp/controls/propertysheet/article.php/c607/
boluoCTO 2006-03-07
  • 打赏
  • 举报
回复
CPropertySheet 的扩展性不是很好,我以前做过一个,可以使用主Dialog里面套子Dialog的方法。一样可以达到CPropertySheet的效果。你用Spy++看PropertySheet,他其实也是用的这个方法,只不过他封装了而已。
sungengyu 2006-03-07
  • 打赏
  • 举报
回复
rageliu :并不是 DoModal 或者 Create 的问题。我有全部的源码,但是我想做最小的修改。
CPropertySheet 需要的是 CPropertyPage ,而动态库中的是 CDialog 。我想把 CDialog 替代 CpropertyPage ,放到 CPropertySheet 中。当然不是一定要用 CPropertySheet ,只要能用现有的 CDialog 实现属性页,怎么做都行。
rageliu 2006-03-07
  • 打赏
  • 举报
回复
再有请参考:
http://vckbase.com/document/viewdoc/?id=605
rageliu 2006-03-07
  • 打赏
  • 举报
回复
看上面楼主的函数里面是DoModal方式的,应该不能做为一个child窗体使用了。

请使用Create()方式后ShowWindow()后才可以
Atomictry 2006-03-07
  • 打赏
  • 举报
回复
估计楼主问不捷径。
我曾经这样搞过:
HWND hWnd = ::FindWindow(NULL, "某个已在运行的程序标题");
if (NULL != hWnd)
::SetParent(hWnd, this->m_hWnd);

这样的后果是,子窗口是被直接导致父窗口的窗口里,但是子窗口所在的区域无法得到刷新,没有任何响应。
he_sl 2006-03-07
  • 打赏
  • 举报
回复
这样不需要动别人的类的层次关系
只需要改弹出方式
he_sl 2006-03-07
  • 打赏
  • 举报
回复
改成非模态,然后将它加到一个CPropertyPage对话框上
没试过
rageliu 2006-03-07
  • 打赏
  • 举报
回复
up

非child的还domodal一定不行的
kugou123 2006-03-07
  • 打赏
  • 举报
回复
最好是把DLL的对话框改成child风格,弹出的时候用非模态方式.并把Tab设置为父窗口
bohlee 2006-03-07
  • 打赏
  • 举报
回复
MARK

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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