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

深入浅出MFC第2版(PDF格式)-第104章

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






                   序移动鼠标,看看lCount 会不会重设为0 。 



                  我如何改写Hello 呢?下面是几个步骤: 



                  1。 在CMyWinApp 中增加OnIdle 函数的声明: 



                      class CMyWinApp : public CWinApp 

                      { 

                     public: 

                      virtual BOOL InitInstance(); // 每一个应用程序都应该改写此函数 



                      virtual BOOL OnIdle(LONG lCount); // OnIdle 用来处理空闲时间(idle time) 

                      }; 



                   2。 在CMyFrameWnd 中增加一个IdleTimeHandler  函数声明。这么做是因为我希 



                   望在窗口中显示lCount 值, 所以最好的作法就是在OnIdle 中调用 



                   CMyFrameWnd 成员函数,这样才容易获得绘图所需的DC 。 



                      class CMyFrameWnd : public CFrameWnd 

                      { 

                     public: 

                        CMyFrameWnd();            // constructor 

                        afx_msg void OnPaint();   // for WM_PAINT 

                        afx_msg void OnAbout();   // for WM_MAND  (IDM_ABOUT) 

                        void IdleTimeHandler(LONG lCount);  // we want it call by CMyWinApp::OnIdle 

                        。。。 

                      }; 



                    3。 在HELLO。CPP  中定义CMyWinApp::OnIdle 函数如下: 



404 


…………………………………………………………Page 467……………………………………………………………

                                                 第6章    MFC 程式的生死因果 



 BOOL CMyWinApp::OnIdle(LONG lCount) 

 { 

    CMyFrameWnd* pWnd = (CMyFrameWnd*)m_pMainWnd; 

    pWnd…》IdleTimeHandler(lCount); 



    return TRUE; 

 } 



4。 在HELLO。CPP  中定义CMyFrameWnd::IdleTimeHandler  函数如下: 



 void CMyFrameWnd::IdleTimeHandler(LONG lCount) 

 { 

   CString str; 

   CRect rect(10;10;200;30); 

   CDC* pDC = new CClientDC(this); 



   str。Format(〃%010d〃; lCount); 

   pDC…》DrawText(str; ▭ DT_LEFT | DT_TOP); 

 } 



为了输出lCount,我又动用了三个MFC 类别:CString、CRect 和CDC。前两者非常 



简单,只是字符串与四方形结构的一层C++ 包装而且,后者是在Windows 系统中绘图所 



必须的DC     (Device Context )的一个包装。 



新版Hello 执行结果如下。左上角的lCount  以飞快的速度更迭。移动鼠标看看,看 



lCount 会不会重置为0 。 



                                                                              405 


…………………………………………………………Page 468……………………………………………………………

                    第篇    湷觥 FC  程式設計 



              Dialog 与 Control 



                    回忆SDK 程序中的对话框作法:RC 文件中要准备一个对话框的Template,C 程序中要 



                   设计一个对话框函数。MFC 提供的CDialog 已经把对话框的窗口函数设计好了,因此 



                   在MFC 程序中使用对话框非常地简单: 



                                                                            WM_MAND 

                                                                            (IDM_ABOUT) 

                                                    HELLO。CPP 



                                                    void CMyFrameWnd::OnAbout() 

                                                    { 

                                                       CDialog about(〃AboutBox〃; this); 

                                                       about。DoModal(); 

                                                    } 



                                                                              HELLO。RC 



                     AboutBox DIALOG DISCARDABLE  34; 22; 147; 55 

                     STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 

                     CAPTION 〃About Hello〃 

                     { 

                       ICON          〃JJHouRIcon〃;IDC_STATIC;11;17;18;20 

                       LTEXT         〃Hello MFC 4。0〃;IDC_STATIC;40;10;52;8 

                       LTEXT         〃Copyright 1996 Top Studio〃;IDC_STATIC;40;25;100;8 

                       LTEXT         〃J。J。Hou〃;IDC_STATIC;40;40;100;8 

                       DEFPUSHBUTTON 〃OK〃;IDOK;105;7;32;14;WS_GROUP 

                     } 



                    当使用者按下【File/About  】菜单, 根据Message Map 的设定,WM_MAND 



                     (IDM_ABOUT )被送到OnAbout 函数去。我们首先在OnAbout 中产生一个CDialog 物 



                   件,名为about 。CDialog 构造式容许两个参数,第一个参数是对话框的模板资源,第二 



                   个参数是about 对象的主人。由于我们的〃About〃 对话框是如此地简单,不需要改写 



                    CDialog 中的对话框函数,所以接下来直接调用CDialog::DoModal ,对话框就开始运作 



                    了。 



406 


…………………………………………………………Page 469……………………………………………………………

                                                                         第6章    MFC 程式的生死因果 



通用对话框(mon Dialogs) 



       有些对话框,例如【File Open 】或【Save As】对话框,出现在每一个程序中的频率是如 



       此之高,使微软公司不得不面对此一事实。于是,自从Windows 3。1 之后,Windows API 



        多了一组通用对话框( mon Dialogs  ) API  函数, 系统也多了一个对应的 



       MDLG。DLL          (32 位版则为DLG32。DLL )。 



        MFC 也支持通用对话框,下面是其类别与其类型: 



        类别                                     类型 



        CmonDialog                                          以下各类别的父类别 



        CFileDialog                                                 File 对话框(Open 或Save As ) 



        CPrintDialog                                               Print 对话框 



        CFindReplaceDialog                                    Find and Replace 对话框 



        CColorDialog                                               Color  对话框 



        CFontDialog                                                Font 对话框 



        CPageSetupDialog                                       Page Setup 对话框(MFC 4。0 新增) 



        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 】 

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