友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

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

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


              其實,程式碼是贅餘還是適得其所,完全視讀者的個情況而定。 



              Scribble  範例程式從第4章的  Step0  出發之後,陸陸續續只有片片斷斷的個個函式 



              碼。我認為有必要把本書所涵蓋的最後個版本  Step5  的完整原始碼列出,以為  Step0 



              之比對。 



              它來了。 



              抱怨程式碼太多的,可能是認為頁數多寡會反應在書籍售價。有些書是這樣。但這 



              本書,真的,我說,1000  頁或700  頁,都不會影響它的價格(與價值)。 



872 


…………………………………………………………Page 935……………………………………………………………

                                  附錄B    Scribble Step5  完整原始碼 



附錄B 



              Scribble Step 5 

                  完整原始碼 



Scribble Step 5  是個擁有如功能的  MDI  塗鴉程式: 



       選單              利用滑鼠做塗鴉動作, 

             工具列       繪圖內容可存檔,亦可自檔案讀出。 



 子視窗縮小為圖示 同份 Document 開啟兩個 View 視窗    狀態列    分裂視窗 



                                                         873 


…………………………………………………………Page 936……………………………………………………………

                  第五篇    附錄  



                    對話盒可設定繪筆粗細 



                         列印與預樱А              №撌住                ”眍^       Document 內容 



                  SCRIBBLE。H 



                  #0001  #ifndef __AFXWIN_H__ 

                  #0002          #error include 'stdafx。h' before including this file for PCH 

                  #0003  #endif 

                  #0004 

                  #0005  #include 〃resource。h〃       // main symbols 

                  #0006 

                  #0007  ///////////////////////////////////////////////////////////////// 

                  #0008  // CScribbleApp: 



874 


…………………………………………………………Page 937……………………………………………………………

                                                   附錄B    Scribble Step5  完整原始碼 



#0009  // See Scribble。cpp for the implementation of this class 

#0010  // 

#0011 

#0012  class CScribbleApp : public CWinApp 

#0013  { 

#0014  public: 

#0015          CScribbleApp(); 

#0016 

#0017  // Overrides 

#0018          // ClassWizard generated virtual function overrides 

#0019          //{{AFX_VIRTUAL(CScribbleApp) 

#0020          public: 

#0021          virtual BOOL InitInstance(); 

#0022          //}}AFX_VIRTUAL 

#0023 

#0024  // Implementation 

#0025 

#0026          //{{AFX_MSG(CScribbleApp) 

#0027          afx_msg void OnAppAbout(); 

#0028              // NOTE the ClassWizard will add and remove member functions here。 

#0029              //    DO NOT EDIT what you see in these blocks of generated code ! 

#0030          //}}AFX_MSG 

#0031          DECLARE_MESSAGE_MAP() 

#0032  }; 



SCRIBBLE。CPP 



#0001  #include 〃stdafx。h〃 

#0002  #include 〃Scribble。h〃 

#0003 

#0004  #include 〃MainFrm。h〃 

#0005  #include 〃ChildFrm。h〃 

#0006  #include 〃ScribDoc。h〃 

#0007  #include 〃ScribVw。h〃 

#0008 

#0009  #ifdef _DEBUG 

#0010  #define new DEBUG_NEW 

#0011  #undef THIS_FILE 

#0012  static char THIS_FILE'' = __FILE__; 

#0013  #endif 

#0014 

#0015  ///////////////////////////////////////////////////////////////// 

#0016  // CScribbleApp 

#0017 

#0018  BEGIN_MESSAGE_MAP(CScribbleApp; CWinApp) 

#0019          //{{AFX_MSG_MAP(CScribbleApp) 



                                                                                     875 


…………………………………………………………Page 938……………………………………………………………

                   第五篇    附錄  



                   #0020          ON_MAND(ID_APP_ABOUT; OnAppAbout) 

                   #0021             // NOTE the ClassWizard will add and remove mapping macros here。 

                   #0022             //    DO NOT EDIT what you see in these blocks of generated code! 

                   #0023          //}}AFX_MSG_MAP 

                   #0024          // Standard file based document mands 

                   #0025          ON_MAND(ID_FILE_NEW; CWinApp::OnFileNew) 

                   #0026          ON_MAND(ID_FILE_OPEN; CWinApp::OnFileOpen) 

                   #0027          // Standard print setup mand 

                   #0028          ON_MAND(ID_FILE_PRINT_SETUP; CWinApp::OnFilePrintSetup) 

                   #0029  END_MESSAGE_MAP() 

                   #0030 

                   #0031  ///////////////////////////////////////////////////////////////// 

                   #0032  // CScribbleApp construction 

                   #0033 

                   #0034  CScribbleApp::CScribbleApp() 

                   #0035  { 

                   #0036          // TODO: add construction code here; 

                   #0037          // Place all significant initialization in InitInstance 

                   #0038  } 

                   #0039 

                   #0040  ////////////////////////////////////////////////////////////// 

                   #0041  // The one and only CScribbleApp object 

                   #0042 

                   #0043  CScribbleApp theApp; 

                   #0044 

                   #0045  //////////////////////////////////////////////////////////////// 

                   #0046  // CScribbleApp initialization 

                   #0047 

                   #0048  BOOL CScribbleApp::InitInstance() 

                   #0049  { 

                   #0050          // Standard initialization 

                   #0051          // If you are not using these features and wish to reduce the size 

                   #0052          //  of your final executable; you should remove from the following 

                   #0053          //  the specific initialization routines you do not need。 

                   #0054 

                   #0055  #ifdef _AFXDLL 

                   #0056          Enable3dControls();  // Call this when using MFC in a shared DLL 

                   #0057  #else 

                   #0058          Enable3dControlsStatic();  // Call this when linking to MFC statically 

                   #0059  #endif 

                   #0060 

                   #0061         LoadStdProfileSettings();  // Load standard INI file options (including MRU) 

                   #0062 

                   #0063 

                   #0064          // Register the application's document templates。  Document templates 

                   #0065          //  serve as the connection between documents; frame windows and views。 



876 


…………………………………………………………Page 939……………………………………………………………

                                                   附錄B    Scribble Step5  完整原始碼 



#0066 

#0067          CMultiDocTemplate* pDocTemplate; 

#0068          pDocTemplate = new CMultiDocTemplate( 

#0069                  IDR_SCRIBBTYPE; 

#0070                  RUNTIME_CLASS(CScribbleDoc); 

#0071                  RUNTIME_CLASS(CChildFrame); // custom MDI child frame 

#0072                  RUNTIME_CLASS(CScribbleView)); 

#0073 

#0074          AddDocTemplate(pDocTemplate); 

#0075 

#0076          // create main MDI Frame window 

#0077          CMainFrame* pMainFrame = new CMainFrame; 

#0078          if (!pMainFrame…》LoadFrame(IDR_MAINFRAME)) 

#0079                  return FALSE; 

#0080          m_pMainWnd = pMainFrame; 

#0081 

#0082          // Enable drag/drop open。  We don't call this in Win32; since a 

#0083          //  document file extension wasn't chosen while running AppWizard。 

#0084          m_pMainWnd…》DragAcceptFiles(); 

#0085 

#0086          // Enable DDE Execute open 

#0087          EnableShellOpen(); 

#0088          RegisterShellFileTypes(TRUE); 

#0089 

#0090          // Parse mand line for standard shell mands; DDE; file open 

#0091          CmandLineInfo cmdInfo; 

#0092          ParsemandLine(cmdInfo); 

#0093 

#0094          // Dispatch mands specified on the mand line 

#0095          if (!ProcessShellmand(cmdInfo)) 

#0096                  return FALSE; 

#0097 

#0098 

#0099          // The main window has been initialized; so show and update it。 

#0100          pMainFrame…》ShowWindow(m_nCmdShow); 

#0101          pMainFrame…》UpdateWindow(); 

#0102 

#0103          return TRUE; 

#0104  } 

#0105 

#0106  ///////////////////////////////////////////////////////////////// 

#0107  // CAboutDlg dialog used for App About 

#0108 

#0109  class CAboutDlg : public CDialog 

#0110  { 

#0111  public: 



                                                                                     877 


…………………………………………………………Page 940……………………………………………………………

                   第五篇    附錄  



                   #0112          CAboutDlg(); 

                   #0113 

                   #0114  // Dialog Data 

                   #0115          //{{AFX_DATA(CAboutDlg) 

                   #0116          enum { IDD = IDD_ABOUTBOX }; 

                   #0117          //}}AFX_DATA 

                   #0118 

                   #0119          // ClassWizard generated virtual function overrides 

                   #0120          //{{AFX_VIRTUAL(CAboutDlg) 

                   #0121          protected: 

                   #0122          virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 

                   #0123          //}}AFX_VIRTUAL 

                   #0124 

                   #0125  // Implementation 

                   #0126  protected: 

                   #0127          //{{AFX_MSG(CAboutDlg) 

                   #0128                  // No message handlers 

                   #0129          //}}AFX_MSG 

                   #0130          DECLARE_MESSAGE_MAP() 

                   #0131  }; 

                   #0132 

                   #0133  CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 

                   #0134  { 

                   #0135          //{{AFX_DATA_INIT(CAboutDlg) 

                   #0136          //}}AFX_DATA_INIT 

                   #0137  } 

                   #0138 

                   #0139  void CAboutDlg::DoDataExchange(CDataExchange* pDX) 

                   #0140  { 

                   #0141          CDialog::DoDataExchange(pDX); 

                   #0142          //{{AFX_DATA_MAP(CAboutDlg) 

                   #0143          //}}AFX_DATA_MAP 

                   #0144  } 

                   #0145 

                   #0146  BEGIN_MESSAGE_MAP(CAboutDlg; CDialog) 

                   #0147          //{{AFX_MSG_MAP(CAboutDlg) 

                   #0148                  // No message handlers 

                   #0149          //}}AFX_MSG_MAP 

                   #0150  END_MESSAGE_MAP() 

                   #0151 

                   #0152  // App mand to run the dialog 

                   #0153  void CScribbleApp::OnAppAbout() 

                   #0154  { 

                   #0155          CAboutDlg aboutDlg; 

                   #0156          aboutDlg。DoModal(); 

                   #0157  } 

返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!