友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第18章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






          MDI 框架的客户区被另一个窗口的框架所覆盖,为了改变客户区的背景色,需要重画这个 



          客户窗口。为了做到这点,要处理消息 WM_ERASEBKND 产生一个新类,如从 CWnd 继 



          承一个新类,称为 CMDIClient,具体可见下面的代码片断。  



      



     实例 2…5 :改变 MDI 窗口框架的颜色。源代码在光盘中“02实例 2…5TestMDI ”目录下。  



     #include 〃MDIClient。h〃    



     class CMainFrame : public CMDIFrameWnd    



     {    



     。。。    



    protected:    



     CMDIClient m_wndMDIClient;    



     }  



     在 CMainFrame 中重载 CMDIFrameWnd::OnCreateClient    



                                                                                     ·31 ·  


…………………………………………………………Page 41……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



       BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs; CCreateContext* pContext)    



       {    



               if ( CMDIFrameWnd::OnCreateClient(lpcs; pContext) )    



               {    



                       m_wndMDIClient。SubclassWindow(m_hWndMDIClient);    



                       return TRUE;    



               }    



               else    



                       return FALSE;    



       }  



       //然后就可以加入对消息 WM_ERASEBKGND 的处理函数。  



       BOOL CMDIClient::OnEraseBkgnd(CDC* pDC)    



       {  



              CBrush brush(RGB(200;100;0));  



              CRect rect;  



              GetClientRect(&rect);  



              pDC…》FillRect(rect;&brush);  



              return TRUE;          



       }  



       程序运行结果如图 2…23 所示,其中框架颜色变成了橘红色,有关该技巧的源代码请参见 

附带光盘。  



                                                                                                                             



                                              图 2…23    改变 MDI 窗口的框架颜色  



 ·32 ·  


…………………………………………………………Page 42……………………………………………………………

                                                          第 2 章    应用程序基本框架  



2。5。3    工具栏  



    工具栏由一系列的按钮和间隔(Seperator )组成。一般功能相关的按钮组成一组,各组 

                                                                     MFC 中使 

按钮之间以一定的间隔分开 。通常,工具栏作为主框架窗口中的一个子窗口存在。 

用 CToolBar 类来封装工具条控件的各种操作,可以在资源编辑器的 ToolBar 上单击鼠标右键, 

选择 Insert  ToolBar  项,选中一个工具栏后,鼠标左键双击该工具栏就可以编辑,如图 2…24 

所示。  



                                                  



                          图 2…24    添加一个新的 ToolBar 资源  



    工具栏上所有按钮的图形在资源中实际上是以一个位图文件存在的。在利用 AppWizard 

创建的工程中,自动创建的工具栏位图文件名为 ResToolBar。bmp 。在位图中每个按钮占用一 

个宽为 16 像素、高为 15 像素的区域。可以用图形工具条及颜色盒绘制按钮的外表,它的属 

性包括 ID、长、宽及鼠标指向它时的说明。一般在 CMainFrame 中定义 CToolBar,其实现在 

CMainFrame 的 OnCreate 函数中完成,在该函数中用于创建工具栏的具体特征。  

    在工具栏中嵌入编辑框等控件,可以通过下面的方法:  

    o  定义一个编辑控件对象,不能是局部变量,否则会被释放掉;  

    o  调用 Create,惟一注意的是要在工具条中调用。  



    CRect rect;  



    m_wndToolBar。GetItemRect(1;&rect);  



    edit。Create(WS_CHILD|WS_VISIBLE;rect;&m_wndToolBar;ID_EDIT);  



    实例 2…6 :添加工具栏程序。源代码在光盘中“02实例 2…6MyToolBar ”目录下。  



    下面是一个 MyToolbar  的示例程序,集中演示了 ToolBar 在框架窗口中的应用。新建一 

个空的 Win32 Application 工程,然后加入下面的 MyToolBar。cpp 源文件,按照前面给出的步 

骤加入新的工具栏资源,这里工具栏的 ID 设置为 IDR_MYTOOL1 ,其属性如图 2…25 所示。  



                                                                          ·33 ·  


…………………………………………………………Page 43……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



                                                                                                     



                                                  图 2…25    工具栏属性对话框  



       #include     



       #include     



       #include 〃resource。h〃  



       class CMyApp:public CWinApp  



       {    



       public:    



                 virtual BOOL InitInstance();  



       };    



       class CMyWnd:public CFrameWnd  



       {    



       public:    



               ~CMyWnd();    



                 CToolBar MyToolBar;    



                 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);    



                 afx_msg void OnButton10();    



                 afx_msg void OnButton11();    



                 afx_msg void OnButton12();    



                 afx_msg void OnButton13();    



                 DECLARE_MESSAGE_MAP()    



       };    



       CMyApp MyApp;  



       BEGIN_MESSAGE_MAP(CMyWnd;CFrameWnd)    



                 ON_WM_CREATE()    



                 ON_MAND(ID_BUTTON40010;OnButton10)  



                 ON_MAND(ID_BUTTON40011;OnButton11)  



                 ON_MAND(ID_BUTTON40012;OnButton12)  



                 ON_MAND(ID_BUTTON40013;OnButton13)  



       END_MESSAGE_MAP()  



       BOOL CMyApp::InitInstance()  



       {    



                 CMyWnd* pCWindow=new CMyWnd;  



                 pCWindow…》LoadFrame(IDR_MYTOOLBAR1);//创建主窗口,加载菜单    



                 m_pMainWnd = pCWindow;    



 ·34 ·  


…………………………………………………………Page 44……………………………………………………………

                                                                                                    第 2 章    应用程序基本框架  



          pCWindow…》ShowWindow(m_nCmdShow);  



          pCWindow…》UpdateWindow();  



          return TRUE;    



}    



int CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)  



{    


返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!