八宝书库 > 文学其他电子书 > 深入浅出MFC第2版(PDF格式) >

第84部分

深入浅出MFC第2版(PDF格式)-第84部分

小说: 深入浅出MFC第2版(PDF格式) 字数: 每页4000字

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






        COleDialog                                                    Ole 相关对话框 



                                CObject 

                                 CObject 



                                    CCmdTarget 

                                     CCmdTarget 



                                        CWnd 

                                         CWnd 



                                             CDialog 

                                              CDialog 



                                                 CmonDialog 

                                                  CmonDialog 



                                                     CColorDialog 

                                                      CColorDialog 

                                                     CFileDialog 

                                                     CFindReplaceDialog 

                                                      CFindReplaceDialog 

                                                     CFontDialog 

                                                      CFontDialog 

                                                     COleDialog 

                                                      COleDialog 

                                                     CPageSetupDialog 

                                                      CPageSetupDialog 

                                                     CPrintDialog 

                                                      CPrintDialog 



                                                                                                              407 


…………………………………………………………Page 470……………………………………………………………

               第篇    湷觥 FC  程式設計 



               在C/SDK 程序中, 使用通用对话框的方式是, 首先填充一块特定的结构如 



               OPENFILENAME,然后调用API  函数如GetOpenFileName。当函数回返,结构中的某 



               些字段便持有了使用者输入的值。 



               MFC 通用对话框类别,使用之简易性亦不输Windows API 。下面这段码可以激活【Open 】 



               对话框并最后获得文件完整路径: 



                 char szFileters'' = 〃Text fiels (*。txt)|*。txt|All files (*。*)|*。*||〃 



                 CFileDialog opendlg (TRUE; 〃txt〃; 〃*。txt〃; 



                                    OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; szFilters; this); 



                 if (opendlg。DoModal() == IDOK) { 



                         filename = opendlg。GetPathName(); 



                 } 



               opendlg 构造式的第一个参数被指定为TRUE,表示我们要的是一个【Open 】对话框而 



               不是【Save As】对话框。第二参数〃txt〃 指定预设扩展名;如果使用者输入的文件没有 



               扩展名,就自动加上此一扩展名。第三个参数〃*。txt〃 出现在一开始的【file name】字段 



               中。OFN_ 参数指定文件的属性。第五个参数szFilters 指定使用者可以选择的文件型 



               态,最后一个参数是父窗口。 



               当DoModal  回返,我们可以利用CFileDialog 的成员函数GetPathName 取得完整的档 



               案路径。也可以使用另一个成员函数GetFileName 取其不含路径的文件名称,或 



               GetFileTitle 取得既不含路径亦不含扩展名的文件名称。 



               这便是MFC 通用对话框类别的使用。你几乎不必再从其中衍生出子类别,直接用就好 



               了。 



408 


…………………………………………………………Page 471……………………………………………………………

                                           第6章    MFC 程式的生死因果 



本章回顾 



   乍看MFC 应用程序代码,实在很难推想程序的进行。一开始是一个衍生自CWinApp 的全 



   域对象application object ,然后是一个隐藏的WinMain 函数,调用application object 的 



   InitInstance  函数,将程序初始化。初始化动作包括构造一个窗口对象(CFrameWnd 物 



   件),而其构造式又调用CFrameWnd::Create 产生真正的窗口(并在产生之前要求MFC 



   注册窗口类别)。窗口产生后WinMain 又调用Run 激活消息循环,将WM_MAND 



    (IDM_ABOUT )和WM_PAINT 分别交给成员函数OnAbout 和OnPaint 处理。 



    虽然刨根究底不易,但是我们都同意,MFC 应用程序代码的确比SDK 应用程序代码精简许 



    多。事实上,MFC 并不打算让应用程序代码比较容易理解,毕竟raw Windows API 才是 



   最直接了当的动作。许许多多细碎动作被包装在MFC 类别之中,降低了你写程序的负 



   担,当然,这必须建立在一个事实之上:你永远可以改变MFC  的预设行为。这一点是 



   无庸置疑的,因为所有你可能需要改变的性质,都被设计为MFC 类别中的虚拟函数了, 



   你可以从MFC 衍生出自己的类别,并改写那些虚拟函数。 



   MFC  的好处在更精巧更复杂的应用程序中显露无遗。至于复杂如OLE 者,那就更是非 



   MFC 不为功了。本章的Hello 程序还欠缺许多Windows 程序完整功能,但它毕竟是一 



   个好起点,有点晦涩但不太难。下一章范例将运用MDI 、Document/View 、各式各样的UI 



   对象。。。。 



                                                                 409 


…………………………………………………………Page 472……………………………………………………………

                第篇    湷觥 FC  程式設計 



410 


…………………………………………………………Page 473……………………………………………………………

                                   第7章    簡單而完整:MFC 骨幹程式 



   第7章 



         简单而完整:MFC 骨干程序 



                    当技术愈来愈复杂, 



                     入门愈来愈困难, 



                   我们的困惑愈来愈深, 



                      犹豫愈来愈多。 



   上一章的Hello 范例,对于MFC 程序设计导入很适合。但它只发挥了MFC  的一小部 



   份特性,只用了三个MFC 类别(CWinApp、CFrameWnd 和CDialog)。这一章我们要 



   看一个完整的MFC 应用程序骨干(注),其中包括丰富的UI 对象(如工具栏、状态 



   列)的生成,以及很重要的Document/View 架构观念。 



   注:我所谓的MFC 应用程序骨干,指的是由AppWizard 产生出来的MFC 程序,也 



   就是像第4章所产生的Scribble step0 那样的程序。 



不二法门:熟记MFC 类别阶层架构 



    我还是要重复这一句话:MFC 程序设计的第一要务是熟记各类别的阶层架构,并清楚了 



    解其中几个一定会用到的类别。一个MFC 骨干程序(不含ODBC 或OLE 支持)运用到 



    的类别如图7…1 所示,请与图6…1 做个比较。 



                                                           411 


…………………………………………………………Page 474……………………………………………………………

                   第篇    湷觥 FC  程式設計 



                    CObject 

                     CObject 



                        CCmdTarget 

                        CCmdTarget 



                           CWinThread 

                            CWinThread 



                               CWinApp 

                                CWinApp 



                                  CMyWinApp 

                                   CMyWinApp 



                           CWnd 

                            CWnd 



                               CView 

                                CView 



                                  CMyView 



                               CFrameWnd 

                                CFrameWnd 



                                  CMDIFrameWnd       CMyMDIFrameWnd 

                                   CMDIFrameWnd      CMyMDIFrameWnd 



                                  CMDIChildWnd       CMyMDIChildWnd 

                                   CMDIChildWnd      CMyMDIChildWnd 



                                                     CControlBar 

                           CDocument                 CControlBar 

                            CDocument 



                               CMyDoc                   CStatusBar 

                                                         CStatusBar 

                                CMyDoc 

                                                        CToolBar 

                           CDocTemplate                  CToolBar 

                            CDocTemplate 



                               CMultiDocTemplate     CDialog           CMyDialog 

                                CMultiDocTemplate     CDialog           CMyDialog 



                           图7…1 本章范例程序所使用的MFC 类别。请与图6…1 做比较。 



            MFC 程序的UI 新风貌 



                   一套好软件少不得一幅漂亮的使用者接口。图7…2 是信手拈来的几个知名Windows 软 



                   体,它们一致具备了工具栏和状态列等视觉对象,并拥有MDI 风格。利用MFC ,我们 



                   很轻易就能够做出同等级的UI 接口。 



                   第7章简单而完整:MFC 骨干程序 



412 


…………………………………………………………Page 475……………………………………………………………

                                      第7章    簡單而完整:MFC 骨幹程式 



图7…2a Microsoft Word for Windows,允许使用者同时编辑多份文件,每 



      一份文件就是所谓的document,这些document 窗口绝离不会脱 



      Word 主窗口的管辖。 



                                                                   413 


…………………………………………………………Page 476……………………………………………………………

                第篇    湷觥 FC  程式設計 



                图7…2b Microsoft Excel , 允许同时制作多份报表。每一份报表就是一份 



                       document。 



414 


…………………………………………………………Page 477……………………………………………………………

                                   第7章    簡單而完整:MFC 骨幹程式 



   图7…2c Microsoft PowerPoint 允许同时制作多份演示文稿资料,每一份演示文稿就 



        是一份document 

              。 



撰写MFC 程序,我们一定要放弃传统的「纯手工打造」方式,改用Visual C++ 提供的 



各种开发工具。AppWizard 可以为我们制作出MFC 程序骨干;只要选择某些按钮,不 



费吹灰之力你就可以获得一个很漂亮的程序。这个全自动生产线做出来的程序虽不具备 



任何特殊功能(那正是我们程序员的任务),但已经拥有以下的特征: 



                                                             415 


…………………………………………………………Page 478……………………………………………………………

              第篇    湷觥 FC  程式設計 



                标准的【File】菜单,以及对话框。 



                                              标准的【Edit】菜单(剪贴簿功能)。这 



                                              份菜单是否一开始就有功效,必须视你选 



                                

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的