4.21 的一些特性,我就不废话了,大家应该看看。 这一章节主要介绍了 MFC 库的优点, 其实我本人认为在某些特定环境下其实 MFC 不一定就象说的那样好。 我想不会有人用纯 VC 做 MIS 系统吧, 太累了。 我是这样理解编程序的, 如果把学编程看成学武的话, C/C++ 语言及编程思想(OOP)是内功,API 是基本功(编程思想是内功、API 是基本功这适用于任何 WIN32 编 程,不论 Visual C++、
Delphi、C++Builder、
VB......) ,VC/MFC 应该不同武功其中的一种,不同的学习方 法效果不一样,只要下工夫也都可以达到一定的境界。真正的高手是有着深厚的内功,扎实的基本功,至 于武功招数无所谓了,随便一站不丁不八全无破绽,无招胜有招了。对不住扯远了。
C++可以通过类库来进行扩展,我们除了可以使用随编译器提供的类库外还可以很方便使用
软件公司销售 的类库产品,甚至可以自己开发。而应用程序框架是一种类库的超集,它定义了程序的结构。 下面给出两个示例程序(一个是书上的一个是我写的) : 雷神建议:虽然现在很多书都附 CD,CD 上有书中所有示例的源代码,但还是应该亲自在 VC6 用手敲进 去。这样可以加深印象以及感受一下编译除错后程序正确运行时的乐趣,因为是纯手工打造。自从我敲了 近一百个代码示例后,由于笔误的 BUG 就很少了,打字速度也提高了。而且最好在原示例代码的基础上做 些改动例如别千篇一律的显示 HELLO WORLD!换点别的,这样做也可以加深对示例程序的理解。 我的 HELLO WORLD 用 AppWizard
向导创建一个显示一个字符串的单
文档程序,只需要敲入一行语句, 主要是体验 MFC 的强大功能。 1、打开 VC++6 从菜单选择 NEW,给项目命名为”MyApp01“。 2、选择 MFC AppWizard[exe] 选项,除 STEP 1 选择单
文档外其他 STEP 缺省。 3、在 Class View 选择 CMyApp01View 类的 OnDraw()成员函数双击会在 C++编译器看到以下内容
void CMyApp01View::OnDraw(CDC* pDC) { CMyApp01Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } 在 // TODO: add draw code for native data here 的位置增加一行代码
void CMyApp01View::OnDraw(CDC* pDC) { CMyApp01Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC->TextOut(10,10,"雷神愿意和所有学 VC 的朋友共同进步!"); //<-----------增加的一行 // TODO: add draw code for native data here } 完了,就这么简单。编译运行。看到了吗?这个
程序具备 WINDOWS 程序的所有特性,例如有菜单、工具 条、状态栏、最大化、关闭、甚至还有关于对话框、打印预览.....全了,这就是 AppWizard 通过 MFC 动态 创建的一个应用程序。从这个小例子可以看出用 VC/MFC
设计 WINDOWS 程序多么方便。下面我们看看 书上的例子,以便更进一步了解应用程序框架。 书上的例子: 1、先建立一个 Win32 Application 的应用程序。
2、选择 Project->Add to project->Files,分别创建一个名为 MyApp.h 和一个名为 MyApp.cpp 的文件。 3、添加代码: (最好照敲以下代码到编译器,别用 Ctrl+C/Ctrl+V) //*********************************************** // MyApp.h //
class CMyApp:public CWinApp //见下② { public: virtual BOOL InitInstance(); };
class CMyFrame:public CFrameWnd { public: CMyFrame(); protected: afx_msg void OnLButtonDown(UINT nFlags,CPoint point); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() };
//***************************************************** // MyApp.cpp //
#include "afxwin.h" #include "myapp.h" CMyApp theApp;//建立一个 CMyAPP 对象见下②
BOOL CMyApp::InitInstance () { m_pMainWnd=new CMyFrame(); m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return TRUE; }
BEGIN_MESSA