社区
界面
帖子详情
请问怎样从一个对话框启动另一个非模态对话框
goodqjf
2003-08-19 11:24:23
help
...全文
30
2
打赏
收藏
请问怎样从一个对话框启动另一个非模态对话框
help
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
joinrry
2003-08-20
打赏
举报
回复
agree
fengqinggao
2003-08-20
打赏
举报
回复
CYouModelessDlg *pYourDlg = new CYouModelessDlg;
pYourDlg->Create(IDD_YOUR_DIALOGID, this);
pYourDlg->ShowWindow(SW_SHOW);
非
模
态
对话框
数据回传(VC 6.0 源码)
1、主
对话框
启动
后,以
非
模
态
方式调出子
对话框
; 2、在子
对话框
输入数据,点击“确定” 3、数据回传到主
对话框
的Edit,并显示。 4、完成回传。
用户
模
态
对话框
内子视图(子窗口)的预览和打印(之二)
MFC的视图打印/预览功能基于CView::OnFilePrint和CView::OnFilePrintPreview这两个函数。 如果要对用户自定义
对话框
(
模
态
)内的子视图进行打印,直接调用该视图的CView::OnFilePrint即可,弹出的“选择打印机”
对话框
同样也是
模
态
对话框
,覆盖在用户
对话框
上。 如果要对用户
对话框
内的视图进行预览,直接调用该视图的CView::OnFilePrintPreview后,预览视图(MFC CPreviewView类实例)内虽然预览正常,但是挡住了用户
对话框
。由于用户
对话框
是
模
态
的,导致预览视图上的“打印...”、“上一页”、“下一页”、“放大”、“缩小”、“单页/双页”和“关闭”等按钮均无法响应鼠标点击,处于“假死”状
态
。 解决方法: 第一个解决方法是先关闭用户
对话框
,再
启动
预览,详见http://download.csdn.net/detail/oliver_zheng/7639379 第二个解决方法仍然保持用户
对话框
,但是由于
对话框
为
模
态
,无法利用主框架窗口CMainFrame作为预览框架,因此要另外创建并显示一个框架窗口(CFrameWnd的派生类),作为预览窗口。 另外创建的框架窗口类名为CPrintPreviewFrameWnd,其对应的单文档视图是CViewPrintPreview类,利用这些关联信息创建一个单文档
模
板,利用此单文档
模
板创建框架窗口,并在其内嵌视图(CViewPrintPreview类)中保存原主框架(CMainFrame)、用户
对话框
和其上需要打印的视图(CTestView)。然后基于CViewPrintPreview类
启动
预览和打印(具体过程详见第一个解决办法)。由于CViewPrintPreview的各个相关虚函数诸如OnPreparePrinting、OnBeginPrinting、OnPrepareDC、OnPrint和OnEndPrinting都被重载,用于调用真正需要打印的视图CTestView的各自函数,因此CViewPrintPreview实际上只是个“中介”视图,是连接预览视图(MFC CPreviewView类)和CTestView的桥梁。 当打印或者预览结束后,关闭自行创建的框架窗口CPrintPreviewFrameWnd,利用CViewPrintPreview类中实现保存的信息恢复主框架和用户
对话框
,恢复打印/预览前的环境。 代码(实现了第二个解决方法)在VC2010下编译通过。第一个解决方法的源码详见http://download.csdn.net/detail/oliver_zheng/7639379
用户
模
态
对话框
内子视图(子窗口)的预览和打印
MFC的视图打印/预览功能基于CView::OnFilePrint和CView::OnFilePrintPreview这两个函数 如果要对用户自定义
对话框
(
模
态
)内的子视图(以下简称A视图)进行打印,直接调用A视图的CView::OnFilePrint即可,弹出的“选择打印机”
对话框
同样也是
模
态
对话框
,覆盖在用户
对话框
上。 如果要对用户
对话框
内的A视图进行预览,直接调用A视图的CView::OnFilePrintPreview后,预览视图(MFC CPreviewView类实例)内虽然预览正常,但是挡住了用户
对话框
。由于用户
对话框
是
模
态
的,导致预览视图上的“打印...”、“上一页”、“下一页”、“放大”、“缩小”、“单页/双页”和“关闭”等按钮均无法响应鼠标点击,处于“假死”状
态
。 解决方法: 在调用A视图的CView::OnFilePrintPreview之前,先关闭用户
对话框
(CDialog::OnCancel),由于这时已不存在用于预览的A视图,再重新创建一个相同的视图(以下简称B视图),以B视图来
启动
OnFilePrintPreview进行预览。 MFC视图预览的原理是:以主框架窗口(CMainFrame)作为预览框架,隐藏原先的子视图(用CMainFrame::GetActiveView得到的那个,以下简称C视图),用CPreviewView类替换,同时创建包含“打印...”、“放大”、“关闭”等按钮的工具栏(CDialogBar类),最后将CPreviewView::m_pPreviewDC作为C视图OnDraw的CDC*参数传入,这样,虽然调用的是C视图的OnDraw函数,实际上却显示在了CPreviewView视图中,起到了“预览”的效果。在点击预览框架工具栏上的“打印...”按钮后, MFC体系将向原先的主框架(本例中和预览框架是同一个,都是CMainFrame)发送ID_FILE_PRINT的WM_COMMAND消息。在缺省的配置中,这将
启动
C视图的OnFilePrint,从而在打印机上打出C视图的内容。 在本例中,为了打印B视图,需要在CMainFrame中处理WM_COMMAND/ID_FILE_PRINT,加入额外的条件,来判断对按钮“打印...”的点击是来自B还是C视图的预览框架。在本例中用了一个变量CMainFrame::m_nPrintFrom。根据其取值(0或者1),分别
启动
B或者C视图的OnFilePrint。 使用方法: 程序示例在VC++2010上通过。主菜单项“打印预览测试”下,有两个子菜单项,“
对话框
用户视图的打印预览”用于B视图(画出一个圆);“单文档视图的打印预览”用于C视图(画出一个正方形),等同于“文件”主菜单项下的“打印预览(V)”。
VS2022 SDK CreateDialog
非
模
态
对话框
做
启动
窗口 适用于简单程序的
模
板 自用
源码
《Visual C++范例大全》随书光盘 第六章
第6章 实例116——创建
模
态
对话框
实例117——创建
非
模
态
对话框
实例118——
模
态
对话框
与应用程序之间的数据交换 实例119——
非
模
态
对话框
与应用程序之间的数据交换 实例120——使用MessageBox消息
对话框
实例121——使用AfxMessageBox消息
对话框
实例122——使用字体
对话框
更改文本的字体 实例123——使用颜色
对话框
选择颜色 实例124——使用文件
对话框
获取文件路径 实例125——使用多选文件
对话框
实例126——重载打开文件
对话框
,添加删除按钮 实例127——使用查找替换
对话框
实现查找替换功能 实例128——在程序中使用属性表
对话框
实例129——激活使用属性表
对话框
中的“应用”按钮 实例130——去除属性表
对话框
中的“应用”按钮 实例131——在
对话框
中使用属性表 实例132——创建向导
对话框
实例133——设置
对话框
的背景颜色 实例134——使用位图作为
对话框
背景 实例135——创建半透明
对话框
窗口 实例136——创建圆形
对话框
窗口 实例137——全屏幕显示
对话框
窗口 实例138——动
态
改变
对话框
窗口大小 实例139——按下Esc键,
对话框
不关闭 实例140——禁用
对话框
右上角的关闭按钮 实例141——可在
对话框
的任意位置拖动
对话框
实例142——为
对话框
程序制作
启动
画面 实例143——动
态
弹出、关闭
对话框
实例144——在
对话框
上动
态
创建视图
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章