- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用MFC在运行中动态创建新窗口.doc
利用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
您可能关注的文档
最近下载
- 第五届国家级新区经开区高新区班组长管理技能大赛备赛试题库-上(单选题汇总).docx VIP
- 第五届国家级新区经开区高新区班组长管理技能大赛试题库(浓缩500题).docx VIP
- 肝硬化腹水病人的护理.pptx VIP
- 第21课 五四运动与中国共产党的诞生 教学设计-统编版(2019)高中历史必修中外历史纲要上册.doc VIP
- 大庆油田生产经营管理与辅助决策系统设计与实施.pdf VIP
- 公司行政人事部年终工作总结PPT.pptx VIP
- 宝宝家庭护理要点.pptx VIP
- 借条-借条模板.docx VIP
- 万元分利借条范本.docx VIP
- 2024-2025学年人教版数学五年级上册月考试卷(1-2单元)含答案.pdf VIP
文档评论(0)