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

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

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






 利用资源编辑器修改IDD_CUSTOM1 对话窗画面 



     请参考第4章和第10 章,修改IDD_CUSTOM1 对话窗画面如下: 



     两个edit 控制组件的ID 如图15…4 所示。 



利用ClassWizard 修改IDD_CUSTOM1 对话窗的对应类别CCustom1Dlg 



     图15…4 列出每一个控制组件的类型、识别码及其对应的变量名称等资料。变量将做为 



     DDX 所用。修改动作如图15…5。 



                                                                           785 


…………………………………………………………Page 848……………………………………………………………

                 第篇    深入  MFC  程式設計 



                 control ID               名称              种类        变量类型 



                 IDC_EDIT_AUTHOR         m_szAuthor       Value        CString 



                 IDC_EDIT_MENT        m_szment      Value        CString 



                       图15…4 IDD_CUSTOM1 对话窗控制组件的类型、ID、对应的变量名称 



                          图15…5 利用ClassWizard 为IDD_CUSTOM1 对话窗的两个edit 控制 

                                 组件加上两个对应的变量m_szAuthor 和m_szment, 以为 

                                 DDX 所用。 



                  Custom AppWizard 为我们做出来的这个CCustom1Dlg 必定衍生自CAppWizStepDlg。 



                  你不会在MFC 类别架构档中发现CAppWizStepDlg,它是Visual C++  的mfcapwz。dll 



                  所提供的一个类别。此类别有一个虚拟函数OnDismiss,当AppWizard  的使用者选按 



                   【Back 】或【Next 】或【Finish 】钮时就会被唤起。如果它传回TRUE,AppWizard 就可 



786 


…………………………………………………………Page 849……………………………………………………………

                                                             15              AppWizard 

                                                          第 章 定製個 



     以切换对话窗;如果传回的是FALSE ,就不能。我们可以在这个函数中做数值检验的工 



     作,更重要的是做macros  的设定工作。 



改写OnDismiss 虚拟函数,在其中定义macros 



      前面我已经说过,macros  的定义储存在一个Map 结构中。它在哪里? 



     整个Top Studio AppWizard    (以及其它所有的custom AppWizard )的主类别系衍生自系 



     统提供的CCustomAppWiz : 



     // in Top StudioAw。h 

     class CTopStudioAppWiz : public CCustomAppWiz 

     { 

         。。。。 

     }; 



     // in 〃Top StudioAw。cpp〃 

     CTopStudioAppWiz TopStudioaw;  //类似application object。 

                                         //对象命名规则是〃项目名称〃 + 〃aw〃。 



     你不会在MFC 类别架构档中发现CCustomAppWiz ,它是Visual C++  的mfcapwz。dll 



     所提供的一个类别。此类别拥有一个CMapStringToString 对象,名为m_Dictionary,所 



     以TopStudioaw  自然就继承了m_Dictionary。这便是储存macros 定义的地方。我们可 



     以利用TopStudioaw。m_Dictionary'xxx' = xxx  的方式来加入一个个的macros 。 



     现在,改写OnDismiss 虚拟函数如下: 



     #0001  // This is called whenever the user presses Next; Back; or Finish with this step 

     #0002  //  present。  Do all validation & data exchange from the dialog in this function。 

     #0003  BOOL CCustom1Dlg::OnDismiss() 

     #0004  { 

     #0005      if (!UpdateData(TRUE)) 

     #0006          return FALSE; 

     #0007 

     #0008      if( m_szAuthor。IsEmpty() == FALSE ) 

     #0009          TopStudioaw。m_Dictionary'〃PROJ_AUTHOR〃' = m_szAuthor; 

     #0010      else 



                                                                                            787 


…………………………………………………………Page 850……………………………………………………………

                   第篇    深入  MFC  程式設計 



                   #0011          TopStudioaw。m_Dictionary'〃PROJ_AUTHOR〃' = 〃〃; 

                   #0012 

                   #0013      if( m_szment。IsEmpty() == FALSE ) 

                   #0014          TopStudioaw。m_Dictionary'〃PROJ_MENT〃' = m_szment; 

                   #0015      else 

                   #0016          TopStudioaw。m_Dictionary'〃PROJ_MENT〃' = 〃〃; 

                   #0017 

                   #0018      CTime date = CTime::GetCurrentTime(); 

                   #0019      CString szDate = date。Format( 〃%A; %B %d; %Y〃 ); 

                   #0020      TopStudioaw。m_Dictionary'〃PROJ_DATE〃' = szDate; 

                   #0021 

                   #0022      return TRUE;  // return FALSE if the dialog shouldn't be dismissed 

                   #0023  } 



                  这么一来我们就定义了三个macros : 



                   macro 名称                               macro 内容 



                   PROJ_AUTHOR                            m_szAuthor 



                   PROJ_DATE                              szDate 



                   PROJ_MENT                           m_szment 



             修改  text template 



                  现在,为Top Studio AppWizard  的template 子目录中的每一个。H 档和。CPP 档增加 



                  一小段码,放在文件最前端: 



                   /* 

                     This project was created using the Top Studio AppWizard 



                     PROJ_MENT 



                     Project: Root 

                     Author : PROJ_AUTHOR 

                     Date   : PROJ_DATE 

                   */ 



788 


…………………………………………………………Page 851……………………………………………………………

                                                    15             AppWizard 

                                                  第 章 定製個 



Top Studio AppWizard执行结果  



      重新编译联结,然后使用Top Studio AppWizard 产生一个项目。第7个步骤的画面如下: 



      由Top Studio AppWizard 产生出来的程序代码中,每一个。CPP 和。H 档最前面果然有 



      下面数行文字,大功告成。 



                                                                               789 


…………………………………………………………Page 852……………………………………………………………

                 第篇    深入  MFC  程式設計 



            更多的信息 



                 我在本章中只是简单示范了一下「继承自原有之Wizard ,再添加新功能」的作法。这该 



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