mfc中如何弹出一个新窗口 我想实现一个类似于acdsee的功能,也就是双击acdsee主界面上某张图的缩略图,会弹出一个新窗口显示该图的大图,请问这种弹出的新窗口该怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通常是构建对话框类的对象,然后调用DoModal:CYourDlg dlg;dlg.DoModal(); 楼上的是做了一个模态对话框!不知楼主需要什么样的对话框?(1)创建一非模态对话框CMyDlg* pMainWnd = new CMyDlg;pMainWnd->Create();(2)创建一模态对话框CMyDlg dlg;dlg.Domdal();非模态的对话框是独立的,就是说和主程序可以同时交换数据,而模态的对话框则只能和自己交换。还有一个区别在于内存分配,new在堆中,另一在栈中,一般说两者一样,但如果你在对话框中开了很大的空间做成员,第二种就会有问题了,因为栈空间是受限的。但据说解决栈溢出用static申明,在全局数据区分配内存就可以了(我没试过)!模态消息不进message loop;非模态消息进入message loop。 pMainWnd->Create();之后还要pMainWnd->ShowWindow(TRUE); 用非模态对话框,create,然后ShowWindow(TRUE); 1 如果是弹出对话框 创建一非模态对话框 CNewDlg* pNewDlg = new CNewDlg; pNewDlg->Create(); pNewDlg->ShowWindow(TRUE); 创建一模态对话框 CNewDlg dlg;dlg.Domdal(); 2 类似ACDSEE切换视图,在新视图中处理 CView* pOldActiveView=GetActiveView(); CCreateContext context; context.m_pCurrentDoc=GetActiveDocument(); context.m_pNewViewClass=(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CFirstView))?RUNTIME_CLASS(CSecondView):RUNTIME_CLASS(CFirstView); //create the new view CView* pNewView=STATIC_DOWNCAST(CView,CreateView(&context)); if(pNewView!=NULL) { pNewView->ShowWindow(SW_SHOW); pNewView->OnInitialUpdate(); SetActiveView(pNewView); RecalcLayout(); //finally destroy the old view... pOldActiveView->DestroyWindow(); } vc6 + directX 9.0开发的程序,WIN7运行有问题! NAT以及内外网IP地址问题,高手进啊 vc6.0的数组问题 创建新文件夹 有没有函数可以得知当前系统是从那个磁盘设备上启动的 能用WinInet(还有什么办法?)通过URL获取web服务器上相应文件的最近更新日期吗? 什么时候用FREELIBRARY合适 关于向应用程序添加上下文菜单--简单的问题 哪位大师知道控制声音大小和左右声道的API函数 请教c primer 第四版中的一段话的含义 新手:问一个比较弱弱的问题!十分感谢! 进度条问题??
CYourDlg dlg;
dlg.DoModal();
不知楼主需要什么样的对话框?
(1)创建一非模态对话框
CMyDlg* pMainWnd = new CMyDlg;
pMainWnd->Create();
(2)创建一模态对话框
CMyDlg dlg;
dlg.Domdal();非模态的对话框是独立的,就是说和主程序可以同时交换数据,而模态的对话框则只能和自己交换。还有一个区别在于内存分配,new在堆中,另一在栈中,一般说两者一样,但如果你在对话框中开了很大的空间做成员,第二种就会有问题了,因为栈空间是受限的。但据说解决栈溢出用static申明,在全局数据区分配内存就可以了(我没试过)!模态消息不进message loop;非模态消息进入message loop。
之后还要pMainWnd->ShowWindow(TRUE);
创建一非模态对话框 CNewDlg* pNewDlg = new CNewDlg; pNewDlg->Create(); pNewDlg->ShowWindow(TRUE);
创建一模态对话框 CNewDlg dlg;dlg.Domdal();
2 类似ACDSEE切换视图,在新视图中处理
CView* pOldActiveView=GetActiveView(); CCreateContext context;
context.m_pCurrentDoc=GetActiveDocument();
context.m_pNewViewClass=(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CFirstView))?RUNTIME_CLASS(CSecondView):RUNTIME_CLASS(CFirstView); //create the new view
CView* pNewView=STATIC_DOWNCAST(CView,CreateView(&context));
if(pNewView!=NULL)
{
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
SetActiveView(pNewView);
RecalcLayout(); //finally destroy the old view...
pOldActiveView->DestroyWindow();
}