利用MFC在运行中动态创建新窗口.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用MFC在运行中动态创建新窗口

利用MFC 在运行中动态创建新窗口   在程序运行中,经常要利用对话框来给出某些提示,或者接收用户的反馈。然而在莫些场合下,仅仅利用对话框的方式是不够的。我们可能需要弹出一个新窗口,它包含自己的菜单条,对话框和状态条;当然,我们可以在对话框里加入菜单条,对话框和状态条,这在技术上是完全可行的,然而为何不直接创建新的窗口呢?本文给出了在MFC下的一种方法。   我们知道,Windows编程下,创建新窗口包括两个步骤:   (1)注册相应的Windows窗口类;   (2)根据注册的窗口类,生成某个窗口。   然而如果在MFC下,想要利用C++和MFC的特性,我们最好利用现成的MFC类,从其继承过来,并加以改造,以添加我们必须的元素。   以下给出具体例子,主窗口显示一个矩形图形,在主窗口单击,将弹出包含编辑控件的新窗口。注意可以创建多个新窗口,当主窗口关闭时,所有新窗口也随之关闭。                                         步骤一,创建一个SDI工程Test。     编辑CtestView:OnDraw函数,在客户区画一个矩形: void CTestView::OnDraw(CDC* pDC) {  CTestDoc* pDoc = GetDocument();  ASSERT_VALID(pDoc);  // TODO: add draw code for native data here  // Draw a rectangle in Client  pDC-Rectangle( 50, 50, 200, 200);  pDC-TextOut( 10, 10, 在窗口单击鼠标左键,创建新窗口); }                                                                              步骤二:利用ClassWizard从CframeWnd继承新窗口的类CnewFrame:   在资源里资源:               简单起见,工具栏仍然采用主窗口的工具栏和状态条。   在CNewFrame.H的类声明中插入工具栏和状态栏对象的声明: protected: // control bar embedded members  CStatusBar m_wndStatusBar;  CToolBar m_wndToolBar;   在CNewFrame响应WM_CREATE消息,在CNewFrame::OnCreate中装载工具栏和状态条: int CNewFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {  if (CFrameWnd::OnCreate(lpCreateStruct) == -1)   return -1;  // TODO: Add your specialized creation code here  if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP   | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||   !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))   // 简单起见,仍然装载主窗口的工具栏   // 用户也可装载自己的工具栏  {   TRACE0(Failed to create toolbarn);   return -1; // fail to create  }  if (!m_wndStatusBar.Create(this) ||    !m_wndStatusBar.SetIndicators(indicators,     sizeof(indicators)/sizeof(UINT)))  {   TRACE0(Failed to create status barn);   return -1; // fail to create  }  // TODO: Delete these three lines if you dont want the toolbar to  // be dockable  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);  EnableDocking(CBRS_ALIGN_ANY);  DockControlBar(m_wndToolBar);  static int s_nNewFrameID = 0;  s_n

文档评论(0)

yaobanwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档