社区
界面
帖子详情
请问怎样从一个对话框启动另一个非模态对话框
goodqjf
2003-08-19 11:24:23
help
...全文
27
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
多
模态
人物识别技术及其在视频场景中的应用
本次分享将介绍爱奇艺人物识别及相关的应用,多
模态
的进展、难点、可落地的点,卡通角色识别的难点、应用中所要解决的问题,AIWWorks智能创作的技术架构、所利用到的AI技术总览、AI所擅长的及AI所不能及的创作点。
用户
模态
对话框
内子视图(子窗口)的预览和打印
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
非
模态
对话框
做
启动
窗口 适用于简单程序的模板 自用
源码
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章