CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

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

楼主sungengyu(快乐机器)2006-03-07 09:58:13 在 VC/MFC / 界面 提问

手中有一个别人封装好的动态库,导出一个函数,函数主要功能是弹出一个对话框,如下:  
  BOOL   WINAPI   RptShowSnapshot(LPCTSTR   szFileName,HWND   hwndParent)  
  {  
  CPreviewDlg   dlgPreview(CWnd::FromHandle(hwndParent));  
  dlgPreview.m_strFileName=szFileName;  
  dlgPreview.DoModal();  
   
  return   TRUE;  
  }  
   
  现在想把该对话框(在   dll   中)作为属性页(在   exe   中)的一个页面使用。  
   
  我不知道怎么弄,高手帮忙! 问题点数:200、回复次数:11Top

1 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-07 10:18:12 得分 0

看上面楼主的函数里面是DoModal方式的,应该不能做为一个child窗体使用了。  
   
  请使用Create()方式后ShowWindow()后才可以Top

2 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-07 10:21:34 得分 0

再有请参考:  
              http://vckbase.com/document/viewdoc/?id=605Top

3 楼sungengyu(快乐机器)回复于 2006-03-07 10:35:31 得分 0

rageliu   :并不是   DoModal   或者   Create   的问题。我有全部的源码,但是我想做最小的修改。  
                      CPropertySheet   需要的是   CPropertyPage   ,而动态库中的是   CDialog   。我想把   CDialog   替代   CpropertyPage   ,放到   CPropertySheet   中。当然不是一定要用   CPropertySheet   ,只要能用现有的   CDialog   实现属性页,怎么做都行。Top

4 楼boluoCTO(菠萝项目经理)回复于 2006-03-07 10:45:38 得分 50

CPropertySheet   的扩展性不是很好,我以前做过一个,可以使用主Dialog里面套子Dialog的方法。一样可以达到CPropertySheet的效果。你用Spy++看PropertySheet,他其实也是用的这个方法,只不过他封装了而已。Top

5 楼laiyiling(陌生人[MVP])回复于 2006-03-07 11:15:09 得分 25

看看这个有没有帮助  
  Inserting   a   CFormView   into   a   CPropertySheet  
  http://www.codeguru.com/cpp/controls/propertysheet/article.php/c607/  
  Top

6 楼bohlee(我心澎湃)回复于 2006-03-07 14:04:47 得分 25

MARKTop

7 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2006-03-07 17:36:45 得分 50

最好是把DLL的对话框改成child风格,弹出的时候用非模态方式.并把Tab设置为父窗口Top

8 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-07 18:16:25 得分 0

up  
   
  非child的还domodal一定不行的Top

9 楼he_sl(he_sl)回复于 2006-03-07 18:23:25 得分 0

改成非模态,然后将它加到一个CPropertyPage对话框上    
  没试过Top

10 楼he_sl(he_sl)回复于 2006-03-07 18:24:17 得分 0

这样不需要动别人的类的层次关系  
  只需要改弹出方式Top

11 楼Atomictry(天影)回复于 2006-03-07 18:33:22 得分 50

估计楼主问不捷径。  
  我曾经这样搞过:  
          HWND   hWnd   =   ::FindWindow(NULL,   "某个已在运行的程序标题");  
          if   (NULL   !=   hWnd)  
                  ::SetParent(hWnd,   this->m_hWnd);  
   
  这样的后果是,子窗口是被直接导致父窗口的窗口里,但是子窗口所在的区域无法得到刷新,没有任何响应。Top

相关问题

  • 怎么在DLL中弹出对话框?急!!!!
  • 修改对话框属性???
  • 如何在对话框中弹出打印对话框...?
  • dll中显示对话框
  • dll中的对话框
  • 关于对话框的ModalResult属性?
  • 对话框属性设置问题
  • 关于对话框中弹出菜单问题
  • 请问如何从NT Service中弹出一个对话框?
  • 如何在JSP中弹出对话框提示错误???

关键词

  • 属性
  • 函数
  • dll
  • 对话框
  • cpropertysheet
  • dlgpreview
  • cpropertypage
  • 属性页
  • domodal
  • 弹出

得分解答快速导航

  • 帖主:sungengyu
  • boluoCTO
  • laiyiling
  • bohlee
  • kugou123
  • Atomictry

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo