利用mfc在运行中动态创建新窗口

利用mfc在运行中动态创建新窗口

ID:34745371

大小:73.68 KB

页数:9页

时间:2019-03-10

利用mfc在运行中动态创建新窗口_第1页
利用mfc在运行中动态创建新窗口_第2页
利用mfc在运行中动态创建新窗口_第3页
利用mfc在运行中动态创建新窗口_第4页
利用mfc在运行中动态创建新窗口_第5页
资源描述:

《利用mfc在运行中动态创建新窗口》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、利用MFC在运行中动态创建新窗口  在程序运行中,经常要利用对话框来给出某些提示,或者接收用户的反馈。然而在莫些场合下,仅仅利用对话框的方式是不够的。我们可能需要弹出一个新窗口,它包含自己的菜单条,对话框和状态条;当然,我们可以在对话框里加入菜单条,对话框和状态条,这在技术上是完全可行的,然而为何不直接创建新的窗口呢?本文给出了在MFC下的一种方法。  我们知道,Windows编程下,创建新窗口包括两个步骤:  (1)注册相应的Windows窗口类;  (2)根据注册的窗口类,生成某个窗口。  然而如果在MFC下,想要利用C++和MFC的特

2、性,我们最好利用现成的MFC类,从其继承过来,并加以改造,以添加我们必须的元素。  以下给出具体例子,主窗口显示一个矩形图形,在主窗口单击,将弹出包含编辑控件的新窗口。注意可以创建多个新窗口,当主窗口关闭时,所有新窗口也随之关闭。                                      步骤一,创建一个SDI工程Test。   编辑CtestView:OnDraw函数,在客户区画一个矩形:voidCTestView::OnDraw(CDC*pDC){ CTestDoc*pDoc=GetDocument(); ASSERT_

3、VALID(pDoc); //TODO:adddrawcodefornativedatahere //DrawarectangleinClient pDC->Rectangle(50,50,200,200); pDC->TextOut(10,10,"在窗口单击鼠标左键,创建新窗口");}                                                                           步骤二:利用ClassWizard从CframeWnd继承新窗口的类CnewFrame:  在资源里资源: 

4、           简单起见,工具栏仍然采用主窗口的工具栏和状态条。  在CNewFrame.H的类声明中插入工具栏和状态栏对象的声明:protected://controlbarembeddedmembers CStatusBarm_wndStatusBar; CToolBarm_wndToolBar;  在CNewFrame响应WM_CREATE消息,在CNewFrame::OnCreate中装载工具栏和状态条:intCNewFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){ if(CFram

5、eWnd::OnCreate(lpCreateStruct)==-1)  return-1; //TODO:Addyourspecializedcreationcodehere if(!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD

6、WS_VISIBLE

7、CBRS_TOP  

8、CBRS_GRIPPER

9、CBRS_TOOLTIPS

10、CBRS_FLYBY

11、CBRS_SIZE_DYNAMIC)

12、

13、  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))  //简单起见

14、,仍然装载主窗口的工具栏  //用户也可装载自己的工具栏 {  TRACE0("Failedtocreatetoolbarn");  return-1;//failtocreate } if(!m_wndStatusBar.Create(this)

15、

16、   !m_wndStatusBar.SetIndicators(indicators,    sizeof(indicators)/sizeof(UINT))) {  TRACE0("Failedtocreatestatusbarn");  return-1;//failtocreate }

17、 //TODO:Deletethesethreelinesifyoudon''''twantthetoolbarto //bedockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); staticints_nNewFrameID=0; s_nNewFrameID++; CStringstr; str.Format("第%d号新窗口",s_nNewFrameID); Set

18、WindowText(str);//设置新窗口的标题 return0;}  步骤三:窗口的销毁的处理。如果我们能确保只创建一个新窗口的话,那么这个步骤可以跳过,我们无须额外的代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。