在本篇文章中,我们主要介绍类参数的内容,自我感觉有个不错的建议和大家分享下
回想刚学习MFC编程的时候,打开《MFC windows程序设计》这本书,书中给的第一段代码就是一个Hello MFC的小程序。看得我头大,书中讲解的很详细,几乎每行代码都给了解释。但解释归解释,我一行一行的揣摩这些代码,还是不知道它们是什么意思。于是我把代码一行一行的敲到了编译器里,并找着书上的讲解,给每行代码都标上了长长的、详细的注释。尽管有的注释写上去后我还是不懂,但总算完成了这个HelloMFC 之疯狂注释版。明天翻出来,贴上来记念一下。
可以发明,Hello MFC的代码比Hello Win32的代码少了很多。不得不说MFC确实让我们开发Win32程序更便利。MFC的魅力在于对API的封装思惟。当初很多SDK开发包尤其是系统SDK,大部分都是基于C语言的相似windows API的形式。如果我们能学习MFC,把这些API以面向对象的形似封装成类库,使用起来会大大便利!面向对象就是好,MFC的亲兄弟ATL里和COM相干的智能类、STL里的迭代器的实现,都是值得我们学习的!
#include <afxwin.h> class CMyApp:public CWinApp //定义一个CMyApp类,用于创立程序本身,继承自CWinApp类 { virtual BOOL InitInstance(); //声明InitInstance函数为虚函数 }; class CMyWnd:public CFrameWnd //定义一个CMyWnd类,用于创立窗口,继承自CFrameWnd类 { public: CMyWnd(); //声明结构函数 protected: afx_msg void OnPaint(); //声明OnPaint函数,用于接到消息后重绘客户区 DECLARE_MESSAGE_MAP(); //声明消息映射 }; CMyApp myapp; //创立一个CMyApp类的对象myapp,在全局区实例化应用程序对象,一个程序至少有一个应用程序对象 BOOL CMyApp::InitInstance() //定义InitInstance函数,用于创立并表现窗口 { m_pMainWnd=new CMyWnd; //创立一个CMyWnd对象并把地址赋给CMyApp类的成员指针变量m_pMainWnd m_pMainWnd->ShowWindow(m_nCmdShow); //通过该成员指针调用ShowWindow函数来表现它,参数为WinMain函数穿过来的参数,决定窗口初始为最小化、最大化或正常化 m_pMainWnd->UpdateWindow(); //刷新窗口,同win32程序设计 return true; //初始化程序窗口正常,返回true使程序继续进行如果返回false则程序立即退出 } //一下三个函数为标识消息的宏 BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd) //开始消息映射,第一个参数为消息映射所属的类,第二个参数为该类的基类,有了基类名,MFC框架可以再必要时查找基类的消息映射 ON_WM_PAINT() //接收处理WM_PAINT类型的消息,该消息在拖动窗口边框,改变窗口大小,移动窗口等行为时触发 END_MESSAGE_MAP() //结束消息映射 CMyWnd::CMyWnd() //定义CMyWnd类的结构函数 { Create(NULL,_T("The Hello Application")); //创立CMyWnd类对象时执行该结构函数,第一个参数指定了窗口基于WNDCLASS类的名称,这里将其设定为NULL将创立一个基于由主结构注册的WNDCLASS类的默许框架窗口,第二个参数为在窗口标题栏涌现的文本 } void CMyWnd::OnPaint() //定义CMyWnd类的OnPaint函数,用于重绘客户区 { CPaintDC dc (this); //结构一个名为dc的CPaintDC对象,即设备环境对象,所有的图形输出都通过该类的对象来执行 CRect rect; //结构一个代表矩形的CRect对象rect GetClientRect(&rect); //调用winAPI函数GetClientRect以使用窗口的客户区坐标来初始化rect这个矩形 dc.DrawText(_T("Hello,MFC!"),-1,&rect, //调用CDC类的DrawText函数来在客户区旁边表现"Hello,MFC!"字符串,第一个参数为要表现的字符串,第二个参数为要表现的字符串中的字符数,这里是-1意味着不限定,该字符串是以NULL字符终止的。第三个参数为刚新建的CRect类的对象rect的地址,这里也可所以一个指定格式矩形的一个RECT结构 DT_SINGLELINE|DT_CENTER|DT_VCENTER); //第四个参数为输出选项,DT_SINGLELINE代表单行文本,DT_CENTER和DT_VCENTER代表在格式矩形中水平居中和垂直居中 }
文章结束给大家分享下程序员的一些笑话语录: 3G普不普及现在已经不是看终端了,而是看应用,有好的,便宜实用的应用,花1000多买个能用的智能手机应该不是什么难事。反过来说,你200元拿一个智能手机,没有好的应用,看个电影要几十元,也是没人用3G。
---------------------------------
原创文章 By
类和参数
---------------------------------