您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > MFC知识点(自己整理的-只供参考)
知识点:不是很全面,只供参考第一章Windows应用程序使用的界面是由各种图形元素组成的图形界面(GUI)。Windows提供了大量预定义的用C语言编写的函数,这些函数就叫做API(ApplicationProgrammingInterface)函数。在Windows应用程序中,存在着许多与DOS应用程序不同的复杂对象,例如窗口、按钮、滚动条等等。Windows把为这种复杂对象所定义的标识叫做句柄。常用的句柄类型:HWND窗口句柄,HDC图形设备环境句柄,HINSTANCE当前程序应用实例句柄,HBITMAP位图句柄,HICON图标句柄,HCURSOR光标句柄,HBRUSH画刷句柄,HPEN画笔句柄,HFONT字体句柄,HMENU菜单句柄,HFILE文件句柄事件的描述是一个消息消息的结构:typedefstructtagMSG{HWNDhwnd;//产生消息的窗口句柄UINTmessage;//消息的标识码WPARAMwParam;//消息的附加信息1LPARAMlParam;//消息的附加信息2DWORDtime;//消息进入消息队列的时刻POINTpt;//表示发送该消息时鼠标的位置}MSG;消息循环:while(GetMessage(&msg,NULL,NULL,NULL))//系统处理了消息后返回{TranslateMessage(&msg);//把键盘消息翻译成字符消息DispatchMessage(&msg);//把消息派发给Windows系统创建窗口的三个步骤:注册窗口类:RegisterClass(&wc);创建窗口:hwnd=CreateWindow(lpszClassName,Windows,WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hInstance,NULL);显示窗口:ShowWindow(hwnd,nCmdShow);UpdateWindow(hwnd);大题:用函数封装Windows程序(P16)第二章类封装:窗口类:classCFrameWnd{public:HWNDhWnd;///数据成员public:intRegisterWindow();//定义及注册窗口类voidCreate(LPCTSTRlpClassName,LPCTSTRlpWindowName);//创建窗口voidShowWindow(intnCmdShow);//显示与更新窗口voidUpdateWindow();};应用程序类:classCWinApp{public:CFrameWnd*m_pMainWnd;//以窗口类的对象作为数据成员public:BOOLInitInstance(intnCmdShow);//在初始化函数中创建及显示窗口intRun();//消息循环};窗口函数的封装——消息映射用DECLARE_MESSAGE_MAP来声明消息映射表用BEGIN_MESSAGE_MAPBEGIN_MESSAGE_MAP(类名称,基类名称)ON_XXXX例ON_WM_PAINT()END_MESSAGE_MAP来实现消息映射表大题:类封装Windows应用程序第三章应用程序的框架由两个对象组成:应用程序类CWinApp的派生类对象和框架窗口类CFrameWnd的派生类对象,后者作为一个成员对象嵌在前者之中。应用程序的文档/视图结构:MFC把早期窗口类的功能分解成:数据存储、管理部分,数据显示与用户交互部分,管理窗口框的大小、标题、菜单条、状态条的窗口部分,进而形成了三个类:文档类CDocument、视图类CView和窗口类CFrameWnd。这三个类统一由一个叫文档模板的对象来管理。应用程序类对象是上述所有对象的容器和消息传递中心。两种文档/视图结构:单文档界面(SDI)应用程序、多文档界面(MDI)应用程序视图类CView的派生类中连个重要的函数:GetDocumment()用于获得文档类对象的指针,是视图类对象与文档类对象进行联系的通道;OnDraw()用来更新视图的显示文档模板类CDocTemplate有两个派生类:单文档模板类和多文档模板类应用程序类的派生类:初始化BOOLCMyApp:InitInstance(){。。。。。CSingleDocTemplate*pDocTemplate,//声明文档模板指针pDocTemplate=newCSingleDocTemplate(//文档模板对象IDR_,MAINFRAME,//文档模板使用的资源IDRUNTIME_CLASS(CMyDoc),//创建文档对象如何关联RUNTIME_CLASS(CMainFrame),//创建SDI框架窗口对象RUNTIME_CLASS(CMyView));//创建视图对象AddDocTemplate(pDocTemplate);//将文档模板加入模板链表M_pMainWnd-ShowWindow(SW_SHOW);M_pMainWnd-UpdateWindow();ReturnTRUE;}第四章用来在显示设备硬件与程序员之间进行隔离的虚拟绘图环境叫做图形设备描述环境DC。它屏蔽了显示设备的特殊性,给程序员提供了一个统一的绘图界面。GDI(图形设备接口)是用户可以调用的一套用于绘图操作的函数集。DC的获取HDCGetDC(HWNDhWnd)//获取窗口DCintRelease(HWNDhWnd,HDChdc)//释放窗口DCCDC类:CDC类中的一些常用的成员函数:Arc()画圆弧、BitBlt()、Ellipse()、LineTo()、MoveTo()、Rectangle()画矩形、RoundRect()画圆角矩形、SelectObject()、SetTextColor()、StretchBlt()把一个DC中的位图复制到另一个DC中,但可以改变位图的长宽比、TextOut()CDC类派生了CClientDC(窗口客户区的设备描述环境)CMetaFileDC(图元文件的设备描述环境)CPaintDC(窗口用户区的设备描述环境)CWindowDC(整个窗口内绘图的设备描述环境)等在不同场合下应用的CDC类画笔是绘制线条的工具,它CPen类的对象。CPen类的构造函数为:CPen(intstyle,intwidth,COLORREFcolor);因此在使用自己定义的画笔时,要使用CDC的函数把默认画笔替换为自己定义的画笔,这个函数的原型为:CPen*SelectObject(CPen*pPen);使用画笔的代码片段为://创建新画笔CPennewPen(PS_SOLID,width,color);//载入新画笔并把旧画笔存入指针CPen*oldPen=pDC-SelectObject(&newPen);//绘图代码…………//在使用新画笔绘制线条之后,恢复原画笔pDC-SelectObject(oldPen);画刷是CBrush类的对象,是用来填充封闭图形内部的工具。CBrush类的构造函数有两个:CBrush(COLORREFcolor);CBrush(intstyle,COLORREFcolor);使用画刷的代码片段为://创建新画刷CBrushnewBrush(color);//载入新画刷并把旧画刷存入指针CBrush*oldBrush=pDC-SelectObject(&newBrush);//绘图代码…………//在使用新画刷绘制线条之后,恢复原画刷pDC-SelectObject(oldBrush);文本:文本显示:BOOLTextOut(....);设置文本颜色:virtualCOLORREFSetTextColor(。。。);//设置COLORREFGetTextColor();//获得VirtualCOLORREFSetBkColor(。。。);//设置背景颜色COLORREFGetBkColor();//获得设置文本字符间距:intSetTextCharacterExtra(。。。);intGetTextCharacterExtra();设置文本对齐方式:UNITSetTextAlign(TA_LEFT);TA_LEFT、TA_CENTER、TA_RIGHT、TA_TOP、TA_BOTTOM、TA_BASELINE第五章简单数据类:CPoint、CSize、CRect、字符串类CStringMFC用CPoint类来描述一个点。这个类常用的两个构造函数为:CPoint(intinitX,intinitY);CPoint(POINTinitPt);POINT是Windows定义的一个结构:typedefstructtagPOINT{LONGx;LONGy;}POINT;在MFC中,类CRect的对象可以描述一个矩形。CRect常用的两个构造函数为:CRect(intl,intt,intr,intb);CRect(constRECT&srcRect);在MFC中,用CSize类来描述一个矩形区域的大小。CSize类常用的两个构造函数为:CSize(intinitCX,intinitCY);CSize(SIZEinitSize);MFC把对字符串的处理方法封装在了类CString中,从而对字符串提供了强有力的支持。CString常用的构造函数为:CString();CString(constunsignedchar*psz);为了处理诸如数组、链表之类的群体数据,MFC在头文件afxtempl.h中提供了基于模板的群体数据类和非基于模板的群体数据类。基于模板的群体数据类有CArray、CList和CMap。用CArray类对象可以创建数组,由于这是一个类模板,因此可以对任意数据类型的数据进行处理。定义CArray类对象的语法如下:CArray数组元素的数据类型,成员函数形参的数据类型对象名;例如:CArrayCPoint,CPoint&m_P;即定义了一个数组对象m_P,数组元素的数据类型为CPoint,而数组对象成员函数的形参数据类型为CPoint&。第六章三个机会选择窗口样式:在MFCAppWizard-Step1时,可以选择SDI、MDI还是以对话框为界面的窗口样式。在MFCAppWizard-Step2(见图6-4)时,可以通过选项来确定窗口上是否需要工具条、状态条以及何种外观等一些选择。在MFCAppWizard-Step2在按下Advanced按钮后弹出的对话框中来选择窗口的样式。函数PreCreateWindow中修改窗口的样式。virtualBOOLPreCreateWindow(CREATESTRUCT&cs);在MFC中只有具有文档/视图结构的应用程序才可以设计可拆分窗口的界面,因为只有在这种结构中才能对同一个文档对象建立多个视图对象。拆分窗口的同步更新:MFC在文档类中设计了一个可以通知该文档所属全部窗口(视图)进行更新显示的函数UpdateAllViews。voidUpdateAllViews(CView*pSender,LPARAMlHint=0L,CObject*pHint=NULL);提高拆分窗口的同步更新效率:利用视图类的成员函数InvalidateRect来触发OnDraw函数对显示屏幕(无效显示区)进行重绘第七章根据产生鼠标消息时鼠标光标所处的位置,鼠标消息分为两类:客户区鼠标消息非客户区鼠标消息如果鼠标处在应用程序窗口之外,还希望可以接受鼠标消息的话,则必须调用捕获鼠标消息函数:CWnd*SetCapture();完成了所应该做的工作之后,应用程序应该及时释放鼠标:BOOLReleaseCapture();Windows对每个按键定义了与设备无关的编码,这种编码就叫做虚拟码。有了这个虚拟码,Windows程序员就可以不必理睬扫描码,而使用虚拟码来编写程序了一般按键消息:WM_CHAR(字符键被按下)、WM_KEYDOWN(任何键被按下,若为字符键还会产生字符消息)、WM_KEYUP(任何键被释放时)系
本文标题:MFC知识点(自己整理的-只供参考)
链接地址:https://www.777doc.com/doc-1788878 .html