搜档网
当前位置:搜档网 › MFC有哪些基本类

MFC有哪些基本类

MFC有哪些基本类
MFC有哪些基本类

MFC有哪些基本类??分别代表什么意思

浏览次数:783次悬赏分:0|解决时间:2010-8-19 23:07 |提问者:QQ675762161

MFC有哪些基本类??

比如CWnd、CPen、CBitmap等等,还有哪些,列举出来,分别代表什么意思,越多越好

最佳答案

MFC类目录及头文件类描述头文件

CAnimateCtrl 自动化通用控件afxcmn.h

CArchive afx.h

CArchiveException afx.h

CArray afxtempl.h

CAsyncMonikerFile 在ActiveX控件中提供对异步标记的支持afxole.h CAsyncScoket 封装Windows Sockets API,参看CSocket afxsock.h CBitmap afxwin.h

CBitmapButton afxext.h

CBrush afxwin.h

CButton 按钮控件对象afxwin.h

CByteArray afxcoll.h

CCachedDataPathProperty 允许一个ActiveX控件异步传输属性数据和缓冲内存中的数据,参考CDataPathProperty afxctl.h

CCheckListBox afxwin.h

CClientDC afxwin.h

CCmdTarget 所有能够接收和响应消息的对象的基类afxwin.h

CCmdUI afxwin.h

CColorDialog 颜色选择的通用对话框,提供为显示系统定义的颜色列表afxdlgs.h

CComboBox 组合框对象afxwin.h

CComboBoxEx CComboBox类的派生类,用于支持在组合框控件中的图像列表afxcmn.h

CCommandLineInfo afxwin.h

CCommonDialog afxdlgs.h

CConnectionPoint afxdisp.h

CControlBar afxext.h

CCreateContext afxext.h

CCriticalSection afxmt.h

CCtrlView afxwin.h

CDaoDatabase afxdao.h

CDaoException afxdao.h

CDaoFieldExchange afxdao.h

CDaoQueryDef afxdao.h

CDaoRecordset 代表选自数据源的记录集。CDaoRecordset对象可用于三种格式:表类型记录集,动态集类型记录集和快照类型记录集afxdao.h CDaoRecordView 提供表单视图,以在控件中显示数据库记录。表单视图是CDaoRecordset对象的一部分。参考CFormView和CRecordView afxdao.h CDaoTableDef afxdao.h

CDaoWorkspace afxdao.h

CDatabase afxdb.h

CDataExchange afxwin.h

CDataPathProperty 实现一个ActiveX控件属性,它能够异步加载其数据。这个类允许ActiveX控件在后台下载属性数据时被激活afxctl.h

CDateTimeCtrl 封装新的日期/时间选取器控件afxdtctl.h

CDBException afxdb.h

CDBVariant afxdb.h

CDC afxwin.h

CDialog 用于包含控件窗口的对话框对象afxwin.h

CDialogBar afxext.h

CDocItem afxole.h

CDockState afxadv.h

CDocObjectServer afxdocob.h

CDocObjectServerItem afxdocob.h

CDocTemplate afxwin.h

CDocument 用于管理程序的数据的类afxwin.h

CDragListBox Windows列表框,允许用户把其中的项拖放到不同的位置afxcmn.h

CDumpContext afx.h

CDWordArray afxcoll.h

CEdit 用于文本输入的子窗口控件afxwin.h

CEditView 提供Windows编缉控件的功能。因为CEditView派生于Cedit,该对象可同文件和文件模板一同使用afxext.h

CEvent afxmt.h

CException afx.h

CFieldExchange afxdb.h

CFile afx.h

CFileDialog 通用文件对话框,提供Open和Save As对话框中的功能afxdlgs.h CFileException afx.h

CFileFind afx.h

CFindReplaceDialog afxdlgs.h

CFont afxwin.h

CFontDialog 通用字体对话框,用于显示当前已装入系统的字体列表afxdlgs.h CFontHolder afxctl.h

CFormView 包含对话框控件的窗口afxext.h

CFrameWnd SDI(单窗口界面)框架窗口afxwin.h

CFtpConnection afxinet.h

CFtpFileFind afxinet.h

CGdiObject afxwin.h

CGopherConnection afxinet.h

CGopherFile afxinet.h

CGopherFileFind afxinet.h

CGopherLocator afxinet.h

CHeaderCtrl 标题通用控件afxcmn.h

CHotKeyCtrl 热键通用控件afxcmn.h

CHtmlStream afxisapi.h

CHtmlView 实现Web Browser控件的视图类,能够访问当地或Web上的HTML 文件。afxhtml.h

CHttpConnection afxinet.h

CHttpFile afxinet.h

CHttpFilter 创建并处理超文传输协议过滤器对象,该对象用于过滤用于HTTP 请求的服务器通知afxisapi.h

CHttpFilterContext afxisapi.h

CHttpServer Internet Server API(ISAPI)的包装类afxisapi.h CHttpServerContext afxisapi.h

CImageList afxcmn.h

CInternetConnection afxinet.h

CInternetException afxinet.h

CInternetFile afxinet.h

CInternetSession afxinet.h

CIPAddressCtrl IP地址控件。类似于编缉框,该控件接收Internet 协议格式的地址afxcmn.h

CList afxtempl.h

CListBox 列表框对象afxwin.h

CListCtrl 列表视通用控件afxcmn.h

ClistView 简化CListCtrl的使用,添加了对文件和视图的支持afxcview.h CLongBinary afxdb_.h

CMap afxtempl.h

CMapPtrToPtr afxcoll.h

CMapPtrToWord afxcoll.h

CMapStringToOb afxcoll.h

CMapStringToPtr afxcoll.h

CMapStringToString afxcoll.h

CMapWordToOb afxcoll.h

CMapWordToPtr afxcoll.h

CMDIChildWnd MDI(多文档界面)子框架窗口afxwin.h

CMDIFrameWnd afxwin.h

CMemFile afx.h

CMemoryException afx.h

CMemoryState

CMenu afxwin.h

CMetaFileDC afxext.h

CMiniFrameWnd 半高的框架窗口,主要用于浮动工具栏。一个小框架窗口没有最小化和最大化按钮,但其他都类似于正常的框架窗口afxwin.h CMonikerFile afxole.h

CMonthCalCtrl 月历控件,用于显示一个用户可选择日期的日历afxdtctl.h CMultiDocTemplate afxwin.h

CMultiLock afxmt.h

CMutex afxmt.h

CNotSupportedException afx.h

CObArray afxcoll.h

CObject afx.h

CObList afxcoll.h

COleBusyDialog afxodlgs.h

COleChangeIconDialog afxodlgs.h

COleChangeSourceDialog afxodlgs.h

COleClientItem afxole.h

COleCmdUI afxdocob.h

COleControl afxctl.h

COleControlModule afxctl.h

COleConvertDialog afxodlgs.h

COleCurrency afxdisp.h

COleDataObject afxole.h

COleDataSource afxole.h

COleDateTime afxdisp.h

COleDateTimeSpan afxdisp.h

COleDBRecordView afxoledb.h

COleDialog afxodlgs.h

COleDispatchDriver afxdisp.h

COleDispatchException afxdisp.h

COleDocObjectItem afxole.h

COleDocument 把一个文件看作为CDocItem对象的一个集合。包容器和服务器都需要这个结构,因为它们的文件必须能够包含OLE项afxole.h COleDropSource afxole.h

COleDropTarget afxole.h

COleException afxdisp.h

COleInsertDialog afxodlgs.h

COleIPFrameWnd afxole.h

COleLinkingDoc OLE包容器文件的基类,这些文件支持对它们所包含项的链接afxole.h

COleLinksDialog afxodlgs.h

COleMessageFilter afxole.h

COleObjectFactory afxdisp.h

COlePasteSpecialDialog afxodlgs.h

COlePropertiesDialog afxodlgs.h

COlePropertyPage afxctl.h

COleResizeBar afxole.h

COleSafeArray afxdisp.h

COleServerDoc OLE服务器文件的基类afxole.h

COleServerItem 为OLE项提供一个服务器界面afxole.h

COleStreamFile afxole.h

COleTemplateServer afxdisp.h

COleUpdateDialog afxodlgs.h

COleVariant afxdisp.h

CPageSetupDialog afxdlgs.h

CPaintDC afxwin.h

CPalette afxwin.h

CPen afxwin.h

CPictureHolder afxctl.h

CPoint atltypes.h

CPrintDialog 通用打印对话框,提供Print和Print Setup对话框中的功能afxdlgs.h

CPrintInfo

CProgressCtrl 通用进程指示器控件afxcmn.h

CPropertyPage 代表属性表单中的一页afxdlgs.h

CPropertyPageEx

CPropertySheet 属性表,也叫做多选项卡对话框。一个属性表由一个CPropertySheet对象和几个CPropertyPage对象组成afxdlgs.h CPropertySheetEx

CPropExchange afxctl.h

CPtrArray afxcoll.h

CPtrList afxcoll.h

CReBar afxext.h

CReBarCtrl afxcmn.h

CRecentFileList afxadv.h

CRecordset 用于访问数据库表或查询的类afxdb.h

CRecordView 包含对话框控件的窗口afxdb.h

CRect atltypes.h

CRectTracker afxext.h

CResourceException afxwin.h

CRgn afxwin.h

CRichEditCntrItem afxrich.h

CRichEditCtrl 用户能够输入和编缉文本的窗口,提供字符和程序段格式,以及对嵌入OLE项的支持afxcmn.h

CRichEditDoc afxrich.h

CRichEditView afxrich.h

CRuntimeClass

CScrollBar 滚动条对象afxwin.h

CScrollView 可滚动的窗口,派生于CView afxwin.h

CSemaphore afxmt.h

CSharedFile afxadv.h

CSingleDocTemplate afxwin.h

CSingleLock afxmt.h

CSize atltypes.h

CSliderCtrl 提供包含一个滑块和可选的刻度线的窗口afxcmn.h

CSocket Windows Socket API的包装类afxsock.h

CSocketFile afxsock.h

CSpinButtonCtrl 提供箭头按钮,用户可单击它,以增加或减少某个控件中的一个值afxcmn.h

CSplitterWnd afxext.h

CStatic 用于标识另一个控件或给用户提供消息的简单文本框afxwin.h CStatusBar afxext.h

CStatusBarCtrl 提供一个层次窗口,通常放于父窗口的底部,用于显示关于应用程序的状态信息afxcmn.h

CStdioFile afx.h

CString afx.h

CStringArray afxcoll.h

CStringList afxcoll.h

CSyncObject afxmt.h

CTabCtrl 允许应用程序在一个窗口或对话框的同一区域显示多个页面afxcmn.h

CTime afx.h

CTimeSpan afx.h

CToolBar afxext.h

CToolBarCtrl 工具栏通用控件afxcmn.h

CToolTipCtrl 提供工具提示控件的功能,它以一个小弹出窗口的样子显示,包含描述某个工具用途的一行文本afxcmn.h

CTreeCtrl 显示项的分层结构列表afxcmn.h

CTreeView 简化CTreeCtrl的用法afxcview.h

CTypedPtrArray afxtempl.h

CTypedPtrList afxtempl.h

CTypedPtrMap afxtempl.h

CUIntArray afxcoll.h

CUserException afxwin.h

CView 用于显示程序数据的类afxwin.h CWaitCursor afxwin.h

CWinApp afxwin.h

CWindowDC afxwin.h

CWinThread 代表一个应用程序中的一个线程afxwin.h CWnd afxwin.h

CWordArray afxcoll.h

mfc资料

你创建的是一个对话框程序,所以只有CMyApp 和CMyDlg 两个类。 但如果创建的是个单文档或者多文档程序。那么就有5个类。 程序是按顺序执行的,虽然都被封装成了类对象,看起来模块话,其实还是按顺序执行的,APP这个对象那个先于dlg构建。所以很多需要初始化的东西直接在App的成员initInstance 中编写。dlg中编写的基本都是一些与对话框相关的逻辑。 CMyApp是主线程类。他的InitInstance函数中会用CMyDlg构造一个对象,产生主对话框,CMyDlg是对话框类的一个派生类。两个类功能不同。 MFC的东西很复杂,不是三言两语可以说清楚的,可以参考下深入浅出mfc等书。CMyApp负责程序主框架的工作,可以理解为WinMain的封装。 CMyDlg是主对话框了,负责界面显示,消息循环等。 ------解决方案-------------------- CMyApp派生于CWinApp类,CMyDlg派生于CDialog类 程序运行时先执行CMyApp的InitInstance()函数 在InitInstance()中会有这样的代码 CMyDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); 一个最基本的单文档视图的MFC程序,包含CxxApp、CxxDoc、CMainFrame、CxxView和CAboutDlg五个类。 它们在程序开始运行时被创建的顺序是:CxxApp 、CxxDoc 、CMainFrame 、CxxView 、CAboutDlg 。

C**App()定义了窗体加载之前需要做的预处理。比如一个加密的软件,打 开后提示用户输入密码。这个事件的处理程序就要写在C**App()的 InitInstance(中。 CMainFrame()包含了对工具栏、状态栏、窗口的定义。 C**View包含了最主要的处理功能,如菜单操作、快捷键、用户交互操作等。 CAboutDlg定义了ABOUT对话框。 其中,前四个都是在程序主窗口出现之前被创建的,CAboutDlg是在“关于”对话框弹出 时被创建的 1CAboutDlg //这个是关于对话框里面是构造和析构2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗 ?3CTestApp//这个是什么`initlnstance()在这里也是初始化什 么对象 ? 4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用 呐 ?5CTestView视图`这个常用 OnDraw我了解一些`我想知道`是不是默认就调 用一次 ? 还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里 `运行就有音乐?看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习 LZ需要系统地学习一下。 CTestApp是基于WinApp的,WinApp封装了程序的主入口WinMain,WinMain就和c语言的main函数地位一样,是Win32程序的入口。在MFC的封装中,一个程序启动,Windows调用WinMain,这个WinMain函数现在由MFC事先写好藏好了,你不能也不需要修改,在这个预定义的WinMain里面会调用CWinApp的InitInstrance函数。你仔细看你CTestApp::InitInstrance函数,在这里一个CMainFrame的对象被创建,文档模板被创建,主窗口通过ShowWindow(SW_SHOW)被显示出来。 CMainFrame是个框架,是你整个应用程序的主窗口,他负责管理应用程序的菜单,工具栏,状态栏等。中间的区域,成为客户区,由View类来管理,View类也是一个窗口,他是MainFrame的子窗口。OnDraw函数负责绘制客户区的内容,该函数会被多次调用,他可以被你自己调用,比如你调用View类的UpdateWindow,或者在Document类中调用UpdateAllViews等等,MFC自动会调用OnDraw。他还会被Windows调用,Windows在需要刷新窗口的时候发送给窗口WM_PAINT消息,MFC事先已经预定义了,在响应WM_PAINT消息的时候会调用OnDraw。何时Windows会发送WM_PAINT呢,比如窗口从最小化还原,比如窗口被用户改变了 大小等等。这部分内容最好看看Windows GDI,Windows GDI是Windows操作系统整个可视化界面的基础。

MFC知识点(自己整理的,只供参考)

知识点:不是很全面,只供参考 第一章 Windows应用程序使用的界面是由各种图形元素组成的图形界面(GUI)。 Windows提供了大量预定义的用C语言编写的函数,这些函数就叫做API(Application Programming Interface)函数。 在Windows应用程序中,存在着许多与DOS应用程序不同的复杂对象,例如窗口、按钮、滚动条等等。Windows把为这种复杂对象所定义的标识叫做句柄。 常用的句柄类型:HWND 窗口句柄,HDC 图形设备环境句柄,HINSTANCE 当前程序应用实例句柄,HBITMAP 位图句柄,HICON 图标句柄,HCURSOR 光标句柄,HBRUSH 画刷句柄,HPEN 画笔句柄,HFONT 字体句柄,HMENU 菜单句柄,HFILE 文件句柄 事件的描述是一个消息 消息的结构: typedef struct tagMSG { HWND hwnd; //产生消息的窗口句柄 UINT message;//消息的标识码 WPARAM wParam;//消息的附加信息1 LPARAM lParam;//消息的附加信息2 DWORD time; //消息进入消息队列的时刻 POINT pt; //表示发送该消息时鼠标的位置 }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) 第二章

VCMFC编程各种窗口句柄获取函数详解

AfxGetMainWnd AfxGetMainWnd获取自身窗口句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口的句柄。 函数原型:HWND GetTopWindow(HWND hWnd); 参数: hWnd:被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄。返回值: 如果函数成功,返回值为在Z序顶部的子窗口句柄。如果指定的窗口无子窗口,返回值为NULL。 GetForegroundWindow 函数功能:该函数返回当前系统的前台窗口的窗口句柄。 函数原型:HWND GetForegroundWindow(VOID) 返回值:函数返回前台窗回的句柄。 GetActiveWindow 函数功能:该函数可以获得与调用该方法的线程的消息队列相关的活动窗口的窗口句柄(就是取得当前进程的活动窗口的窗口句柄)。 函数原型:HWND GetActiveWindow(VOID) 返回值:返回值是与调用线程的消息队列相关的活动窗口的句柄。否则,返回值为NULL。 GetSafeHwnd 函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。 通过下面的例子来看其理由: CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器 HWND hwnd = pwnd->m_hwnd; //得到它的HWND 这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器 HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND 就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL IsWindowVisible 函数功能:该函数获得给定窗口的可视状态。 函数原型:BOOL IsWindowVisible(HWND hWnd); 参数; hWnd:被测试窗口的句柄。 返回值:

MFC对话框程序中的各组件常用方法

MFC对话框程序中的各组件常用方法: Static Text: 将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性: GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd"); 设置字体: CFont *pFont = new CFont; pFont->CreatePointFont(120,_T("华文行楷")); GetDlgItem(IDC_XX)->SetFont(pFont); Edit Control: 设置文本: SetDlgItemText(IDC_XX,L"iuewurebfdjf"); 获取所有输入: 建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。 UpdateData(true); GetDlgItem(IDC_XX)->SetWindowText(shuru1); 第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。 若类型选用control: 1.设置只读属性: shuru1.SetReadOnly(true); 2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; shuru1.GetSel(nStart, nEnd); if(nStart == nEnd) { strTemp.Format(_T(" 光标在%d" ), nStart); AfxMessageBox(strTemp); } else { //得到edit选中的内容 shuru1.GetWindowText(strTemp); strTemp = strTemp.Mid(nStart,nEnd-nStart); AfxMessageBox(strTemp); } 其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。strTemp.Format 方法用于格式化字符串。AfxMessageBox(strTemp)显示一个提示对话框,其内容是字符串strTemp。 strTemp = strTemp.Mid(nStart,nEnd-nStart)返回一个被截取的字符串,从nStart开始,长度为nEnd-nStart。如果nStart == nEnd说明没有选择文本。 注:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所选。

常用的MFC类及其作用

常用的MFC类及其作用 分类:MFC基础类专区2008-10-14 11:16 445人阅读评论(1) 收藏举报 1.CRuntimeClass结构 继承自CObject的类都有一个与它相关的CRuntimeClass结构,用来在运行时获得对象以及其基类的信息。 要使用CRuntimeClass结构,必需借助于RUNTIME_CLASS()宏和其他有关运行时类型识别的宏。 2.CObject CObject类的作用: a.对象诊断:MFC提供了两种对象的诊断机制,一种是利用成员含数AssertValid 进行对象有效性检查,这样可以使类在继续运行以前对自已进行正确性检查。另一种是利用成员含数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。这两种诊断只能用于Debug版的应用程序。 b.CObject类提供了GetRuntimeClass与IsKindOf两个成员含数来支持运行时类型识别。GetRunntimeClass根据对象的类返回一个CRuntimeClass结构的指针,它包含了一个类的运行信息,含数IsKindOf用于测试对象与给定类的关系。 c.提供对象的序列化。必须在类的定义中包含DECLARE_SERIAL宏,并且在类的实现文件中加入包含IMPLEMENT_SERIAL宏. https://www.sodocs.net/doc/0d9315256.html,mdTarget 该类直接从CObject类派生而来. 它负责将消息发送到能够响应这些消息的对象。它是所有能实行消息映射MFC类的基类,如CWinThread,CWinApp,CWnd,CView,CDocument等类。CCmdTarget 类的主要功能包括消息发送,设置光标和支持自动化. a.消息发送:MFC应用程序为每个CCmdTarget派生类创建一个称为<消息映射表>的<静态数据结构>,该消息映射结构将消息映射到对象所对应的消息处理含数

常用MFC和API函数

常用MFC和API函数 索引 CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中的画刷 CButton类:提供Windows按钮控件的功能 CByteArray类:该类支持动态的字节数组 CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中 CColorDialog类:封装标准颜色对话框 CDC类:定义设备环境对象类 CDialog类:所有对话框(模态或非模态)的基类 CDocument类:提供用户定义的文档类的基本功能 CEdit类:是一个用于编辑控件的类 CFile类:该类是基本文件类的基类 CFileDialog类:封装了打开和保存文件的标准对话框 CFindReplaceDialog类:封装了标准查找/替换对话框 CFont类:封装了Windows图形设备接口(GDI)中的字体对象 CFontDialog类:封装了字体选择对话框 CGdiObject类:GDI绘图工具的基类 CIPAddressCtrl类:提供了IP地址控件的功能 CImageList类:管理大小相同的图标或位图集 CMenu类:封装应用程序菜单栏和弹出式菜单 CPen类:封装了Windows图形设备接口(GDI)中的画笔对象 CPoint类:操作CPoint和POINT结构 CRect类:封装了一个矩形区域及相关操作 CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域 CSize类:用于表示相对坐标或位置 CSpinButtonCtrl类:旋转控件Spin的控制类 CStatusBar类:状态栏窗口的基类 CString类:处理字符串 CStringList类:支持CString对象的列表 CWinApp类:派生的程序对象的基类 CWnd类:提供所有窗口类的基本函数 API函数 CArchive类:用于二进制保存档案 CArchive::CArchive 建立一个CArchive对象 CArchive(CFile* pFile,UINT nMode,int nBufSize=4096,void* lpBuf=NULL); 参数:pFile 指向CFile对象的指针,这个CFile对象是数据的最终源或目的;nMode是标志,取值为CArchive::load时,从文档中加载数据(要求CFile读许可),取值为CArchive::store时,将数据存入文档(要求CFile写许可);nBufSize 指定内部文件缓冲区的大小(按字节计); lpBuf 指向大小为nBufSize的缓冲区,若未指定,则从局部堆中分配一缓冲区,

MFC复习题

名词解释 1.事件:能触发程序做出相应反应的因素或动作叫做“事件” 2、句柄:用来区分普通变量的标识的标识叫做句柄 3、消息:为了描述事件的各种信息而定义的一个结叫做消息 4、Windows的API函数:由操作系统提供的,用户可以使用的函数叫做API函数 5、Windows SDK程序:直接使用API函数开发程序的早期Windows应用程序的开发工具 6、资源:用不同方式制作和保存的数据叫做资源 7、图象设备接口(GDI):用于改变DC属性的操作,即与绘图相关的操作制作成的函数的 集合。 8、控件CDC类:把DC和GDI函数封装到一起形成的类叫做控件CDC类 9、消息循环:在创建了窗口的应用程序中,应用程序将不断地从消息队列中获取消息,并 将消息指派给指定的窗口处理函数来处理,然后再回来从消息队列获取消 息,这个不断重复的工作过程叫做消息循环。 10、无效显示区:无效显示区一般定义为窗口用户区上的一个矩形区域,这个区域应覆盖所有因文档发生变化而需要重绘的部分。当程序需要重新绘制一个图形时,只要重新绘制该矩形内部的图形就可以了。 11、控件:为了实现应用程序与用户之间的交互,Windows允许在应用程序的界面上放置诸 如命令按钮、文本框、滚动条等一些图形部件,因为这些部件可以用来处理用户事件,并使应用做出相应的反应,所以这些图形部件通常叫做控件。 12、类信息表:类中存放了类信息的一个CruntimeClass结构类型数据。其中的主要内容为 类名称和指向对象构建函数的指针,建立该表的目的就是为了能在运行期根据类名称调用构建函数来动态创建对象。 简答题 1.位图的主要步骤: 1)用位图类来定义一个对象(Bitmap) 2)把位图资源载入位图对象3)获取位图信息 4)把位图选入内存设备环境5)显示位图 2.利用AppWizard生成默认的SDI应用程序My时,向导自动生成的哪四个类?及其相应 的功能。 CMainFrame(构建应用程序,显示窗架)CMyApp(整个应用程序)CMyDoc(管理数据)CMyView(显示数据) 3.创建窗口的五个步骤:1)定义窗口2)注册窗口 3)创建窗口4)显示窗口5)消息循环 4.简述从Cdocument类派生自己需要的文档类的一般步骤。 1)以CDocument为基类,派生出一个类2)在此类中添加数据成员和成员函数 3)在构造函数中进行初始化数据成员4)在实现部分编写对应的成员函数 5.以鼠标消息WM_MOUSEMOVE为例,写出在MFC编程中,为视图CJKXView手工添 加消息响应函数的步骤与相关代码。 1)在类CJKXView的头文件中添加声明消息响应函数,代码为:afx_msg void OnMOUSEMOVE(UINT flags,CPonint point); 2)在现实文件BEGIN_MESSAGE_MAP与END_MESSAGE_MAP( )之间添加消息映射表ON_WM_MOUSEMOVE( ) 3)添加消息响应函数void CMyview::Onmousemove(UINT flags,CPoint point); 6.在MFC中创建和使用模式对话框的主要步骤有哪些? 1)使用对话框编辑器创建对话框资源;

C++_MFC快速超简单入门

C++ MFC快速超简单入门学习 注意:红色字体为重要的信息,必须理解并记住。 在学习MFC之前,你必须对C++的“类和对象有一定的认识和理解,因为MFC就是C++完全的面向对象设计,它里面封装了好多类,我们只要调用就OK,就像C语言调用库函数一样,直接使用,这就是C++ 第一特性:封装性,第二性就是继承与派生, 这个在MFC中体现得淋淋至间(字打错了)。如果不懂,我再来解释一下,例:有一个商品类,class GOODS 商品属性有名字,价格 它可作为一个基类,我可以派上出苹果类,class Apple :public GOODS . 苹果属性出了继承了商品的属性名字,价格之外,还可派 生出,颜色,等属性,继承与派生就是一个是另一个的子集,但是这 个子集不仅包括父集的特征,还具有一些新的特性,懂了吧,这样。MFC其中重要的类是:CDialog 对话框类,CEdit,(编辑框 类)CButton,(按钮类)CRadio(单选钮类),这些都是作为基类,由我们自己定义的类去派生它们。 好了,现在先了解一下什么是MFC吧,请看当前目录下的MFC入门知识的幻灯片1—20张,或大概的浏览一下当前目录下的其它连个word文件,后面的幻灯片我觉得没必要看了,因为是快速吗,节约时间,(首先看不懂没关系,)但但看完之后,必须掌握如下知识: 1.MFC是作什么用的?与以前我们写的C,C++语言有什 么不同。以及它的一些优点, 不同,以前的是控制台的界面不好看,不友好,操作不 方便,黑框框的一片。 MFC反之。 优点:可用极少的代码实现强大的功能, 2.关于MFC的一些术语,概念啊

3.你要知道MFC的对话框是由控件组成的,具有 哪些控件(例按钮:Button, 单选钮:radio,Edit)例:要知道MFC的编程的原则,也就是宗旨理念吧,“消息映射,事件驱动“,这句话要记住并理解,很重要,真的。那到底是什么意思呢? 现实举例:一个人具备一种“感知“的能力,(也可称消息吧),当用火接近这个人时(发生的事件),就会(驱动)这个人做出反应,远离”火“, 用MFC举例:一个按钮有什么消息啊,我可以单 击它,所以它具备单击的消息: 第一个就是左键单击的消息,第二个 就是双击的消息,见名思议就 OK了。我单击这个按钮要产生某个事件, 我就可以第一步,先给按钮添加一个消息响应函 数,意思就是当我单击按钮时,就调用那个函数, 按钮时时刻刻都处于待命的状态, 假如添加的函数如下: void CDsDlg::OnButton1() { AfxMessageB ox(“我单击了这个按钮”);

MFC常用函数

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★//这一页的代码最重要了,呵呵……什么都在这里面呢; 单文档新建:CWinApp_________docManager->docSingleTemplate的OpenDocumentFile函数参数为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 多文档新建:CWinApp_________docManager->docMultTemplate的OpenDocumentFile函数参数为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 单文档打开:CWinApp_________docManager中经过一个打开对话框传递参数,中途还调用了APP的OpenDocumentFile,当然如果我们的APP重载了这个函数也要调用我们的但是我们的函数一定别忘记最后返回是调用父类的此函数___________docSingleTemplate的OpenDocumentFile函数参数不为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 多文档打开:CWinApp_________docManager中经过一个打开对话框传递参数,中途还调用了APP的OpenDocumentFile,当然如果我们的APP重载了这个函数也要调用我们的但是我们的函数一定别忘记最后返回是调用父类的此函数___________docMultTemplate的OpenDocumentFile函数参数不为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 他们两个只有在docMultTemplate和docSingleTemplate的OpenDocumentFile函数中的动作不同,单文档负责新建框架类和视类但是如果存在了我们就不重建了,只是给其赋值。而多文档无论如何都会新建一个视类和框架类文档类,这也就是为什么他是多文档结构的原因。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 接下来介绍这个最重要的函数,它基本什么都干了,不管是新建还是打开都得调用它,呵呵…… // CDocument* CMultiDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible) { //下面调用的是CDocTemplate::CreateNewDocument() CDocument* pDocument = CreateNewDocument();//这里面调用了AddDocument(pDocument); //添加了一个CMyMultiTestDoc : public CDocument

mfc如何修饰mainframe类

1:如何修改单文档应用程序的窗口标题,查阅MSDC文章: Changing the styles of a window created by MFC. 要在CMainFrame的PrecreatWindow()中加入如下代码: cs.style&=~FWS_ADDTOTITLE; cs.lpszName="This is a test!"; 可以先不要上一句试一试! 另一种方法是 : cs.style=WS_OVERLAPPEDWINDOW; 再进行修改,也可以不修改,那么是去掉默认文档标题,而只显示原程序标题! 另一类方法是在窗口创建后再修改,因为在OnCreate中,开始的这些代码: if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar (IDR_MAINFRAME)) { TRACE0("Failed to create toolbarn"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || ! m_wndStatusBar.SetIndicators(indicators, sizeof (indicators)/sizeof(UINT))) { TRACE0("Failed to create status barn"); return -1; // fail to create } // TODO: Delete these three lines if you don't want the toolbar to // be dockable m_wndToolBar.EnableDocking (CBRS_ALIGN_ANY); EnableDocking (CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); 完成了窗口创建,工具栏,状态栏的创建等工作,可以在后面利用一个系统全局函数SetWindowLong()函数进行修改: 加入代码为:SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW); 与此相对,还有一个GetWindowLong()函数可供使用!如下面代码去掉了窗口上的最大化按钮: SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) & ~MAXIMIZEBOX); 当然SetWindowLon()还可以做别的修改.与SetWindowLong()相类似的另一个系统全局函数为SetClassLong();

MFC常用类-链表类

MFC的链表类 模板类Clist CTypedPtrList 非模板类CObList CPtrList CStringList MFC链表类的常用成员函数——以Clist为例 1.CList(int nBlockSize = 10 ); 2.TYPE GetHead()const; 3.TYPE GetTail()const; 4.RemoveHead() 5.RemoveTail() 6.原型1:POSITION AddHead(ARG_TYPE newElement ); 原型2:void AddHead(CList* pNewList ); 7.原型1:POSITION AddTail(ARG_TYPE newElement ); 原型2:void AddTail(CList* pNewList ); 8.RemoveAll() 9.POSITION GetHeadPosition()const; 10.POSITION GetTailPosition()const; 11.TYPE GetNext(POSITION& rPosition )const; 12.TYPE GetPrev(POSITION& rPosition )const; 13.TYPE GetAt(POSITION position )const; 14.void SetAt(POSITION pos, ARG_TYPE newElement ); 15.void RemoveAt(POSITION position ); 16.POSITION InsertBefore(POSITION position, ARG_TYPE newElement ); 17.POSITION InsertAfter(POSITION position, ARG_TYPE newElement ); 18.POSITION Find(ARG_TYPE searchValue, POSITION startAfter = NULL)const; 19.POSITION FindIndex(int nIndex )const; 20.int GetCount()const; 21.BOOL IsEmpty()const; 例题 struct CStudent { CString m_strName; int m_nScore; }; CPtrList m_List; 向添加链表中添加元素 CStudent* m_pStudent = new CStudent; m_pStudent->m_strName = m_strName; m_pStudent->m_nScore = m_nScore; m_List.AddTail(m_pStudent); 删除节点 int nNumber;

(适合初学者)MFC基础教程

Visual C++/MFC初学教程 目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 |------ 1.4 利用MFC进行开发的通用方法介绍 |------ 1.5 MFC中常用类,宏,函数介绍 +-- 第二章图形输出 |------ 2.1 和GUI有关的各种对象 |------ 2.2 在窗口中输出文字 |------ 2.3 使用点,刷子,笔进行绘图 |------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图 |------ 2.5 使用各种映射方式 |------ 2.6 多边形和剪贴区域 +-- 第三章文档视结构 |------ 3.1 文档视图框架窗口间的关系和消息传送规律 |------ 3.2 接收用户输入 |------ 3.3 使用菜单 |------ 3.4 文档,视,框架之间相互作用 |------ 3.5 利用序列化进行文件读写 |------ 3.6 MFC中所提供的各种视类介绍 +-- 第四章窗口控件 |------ 4.1 Button |------ 4.2 Static Box |------ 4.3 Edit Box |------ 4.4 Scroll Bar |------ 4.5 List Box/Check List Box |------ 4.6 Combo Box/Combo Box Ex |------ 4.7 Tree Ctrl |------ 4.8 List Ctrl |------ 4.9 Tab Ctrl |------ 4.A Tool Bar |------ 4.B Status Bar |------ 4.C Dialog Bar |------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ 4.E General Window

MFC常用类-CTimeSpan类

CTimeSpan类 1.构造函数。 CTimeSpan类有下列构造函数: (1)CTimeSpan(); (2)CTimeSpan(const CTimeSpan& timeSpanSrc ); (3)CTimeSpan(time_t time ); (4)CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs ); 参数timeSpanSrc为一个已存在的CTimeSpan 对象,time为一个time_t 类型的时间值,lDays, nHours, nMins, nSecs分别为天数、小时数、 分数和秒数。 2.时间值的提取函数 (1)GetDays()获得CTimeSpan类对象中包含的完整的天数。 (2)GetHours()获得当天的小时数,值在-23到23之间。 (3)GetTotalHours()获得CTimeSpan类对象中包含的完整的小时数。 (4)GetMinutes()获得当前小时包含的分数,值在-59到59之间。 (5)GetTotalMinutes()获得CTimeSpan类对象中包含的完整的分数。 (6)GetSeconds()获得当前分钟包含的秒数,值在-59到59之间。 (7)GetTotalSeconds()获得CTimeSpan类对象中包含的完整的秒数。 格式化时间 Format()将一个CTimeSpan对象转换成格式字符串。使用方式与CTime类似,格式化字符包括以下几个: %D: CTimeSpan的总天数; %H:不足整天的小时数; %M:不足1小时的分数; %S:不足1分钟的秒数; %%:百分号。 4.重载运算符 CTimeSpan类也重载了运算符“=”,“+”,“-”,“+=”,“-=”,“==”,“!=”,“<”,“>”,“<=”,“>=”,用于CTimeSpan对象的赋值、加减运 算及两个CTimeSpan对象的比较。 例子代码 构造一个CTimeSpan对象,并获取其中的完整天数、小时数、分数和秒数,将获得的信息在信息框中显示。 CTimeSpan m_timespan(3,4,5,6); // 3天,4小时,5分,6秒 LONG m_totalDays=m_timespan.GetDays(); //获得完整天数 LONG m_totalHours=m_timespan.GetTotalHours(); //获得完整小时数 LONG m_totalMinutes=m_timespan.GetTotalMinutes(); //获得完整分数 LONG m_totalSeconds=m_timespan.GetTotalSeconds(); //获得完整秒数 char s1[8], s2[8], s3[8], s4[8]; wsprintf(s1,"%ld",m_totalDays); wsprintf(s2,"%ld",m_totalHours); wsprintf(s3,"%ld",m_totalMinutes); wsprintf(s4,"%ld",m_totalSeconds); CString m_str = "此时间范围包含:\n完整天数:"+CString(s1)+"\n完整小时数:"+CString(s2)+"\n完整分数:"+CString(s3)+"\n完整秒 数:"+CString(s4); MessageBox(m_str);

MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView

MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中 获得视类(CMyView 在文档类中只要使用(多文档的,单文档的更简单一点儿) POSITION pos=this->GetFirstViewPosition();//要写在文档类中,在其他类中把this换成文档指针就可以了 while(pos) { CView *pView=this->GetNextView(pos); } 而在框架类中只要选取得文档对象,然后再使用上面的代码 以下是从一个对象得到另一个对象有方面(摘自MFC深入浅出) 从一个对象得到另一个对象的方法 本对象要得到的对象使用的成员函数CDocument对象视列表 GetFirstViewPosition,GetNextView 文档模板GetDocTemplate CView 对象文档对象GetDocument 边框窗口GetParentFrame

CMDIChildWnd或 CFrameWnd 对象活动视GetActiveView 活动视的文档GetActiveDocument CMDIFrameWnd对象活动文档边框窗口MDIGetActive 在框架类中使用GetActiveView(); 在文档类中 (CMainFrame*)(AfxGetApp()->m_pMainWnd))->GetActiveView(); MFC中怎么在CMainFrame下获得View类的指针 使用GetActiveView()函数 MFC中普通类如何获取view类的指针? 在普通类(Generic class)中怎么得到view类的指针?我试过这样: CMainFrame *p=(CMainFrame*)AfxGetMainWnd(); CView *pv=p->GetActiveView(); 按照你的用法应该就是可以的! 是不是在这样用时,View还没有创建完成啊,所以pv才是空的。CMainFrame *m_pfm = (CMainFrame*)AfxGetApp()->m_pMainWnd;

MFC类库的基本类

MFC类库是一个层次结构,主要有CObject类、应用程序类、可视对象类、绘图和打印类、通用类、数据库类、Internet和网络类、OLE类。 (1)CObject类 CObject类是MFC的抽象基类,MFC中的大多数类是从CObject类派生出来的。它是MFC 中多数类和用户自定义的根类,该类为程序员提供了希望融入所编写程序的许多公共操作,包括对象的建立和删除、串行化支持、对象诊断输出、运行时信息以及集合类的兼容等。CObject类的声明在Afx.h中。 (2)应用程序结构类 该类主要用于构造框架应用程序的结构,提供了多数应用程序公用的功能.编写程序的任务是填充框架,添加应用程序专有的功能。 1.应用程序和线程支持类 CWinThread类是所有线程的基类,窗口应用程序类CWinApp类就是从该类中派生来的。每个应用程序有且只有一个应用程序对象,在运行程序中该对象和其他对象相互协调,该对象从CWinApp中派生出来。该类封装了初始化、运行、终止应用程序的代码。 2.命令相关类 CCmdTarget类是CObject的子类,它是MFC所有具有消息映射属性的基类。消息映射规定了当一对象接收到消息命令时,应调用哪个函数对该消息进行处理。程序员很少需要从CCmdTarget类中直接派生出新类,往往都是从它的子类中派生出新类。如窗口类(CWnd)、应用程序类(CWinApp)、文档模板类(CDocTemplate)、视类(CView)及框架窗口类(CFrameWnd)等。 3.文档类 文档对象由文档对象模板创建,用于管理应用程序的数据。视图对象表示一个窗口的客户区,用于显示文档数据并允许读者与之交互。有关文档/视结构的类如下: ①CDocTemplate类:文档模板的基类。文档模板用于协调文档、视图和框架窗口的创建。 ②CSingleDocTemplate类:单文档界面(SDI)的文档模板。 ③CMultiDocTemplate类:多文档界面(MDI)的文档模板。 ④CDocument类:应用程序专用文档的基类。 (3)可视对象类 1. CWnd类 该类提供了MFC中所有窗口类的基本功能。它是CCmdTarget类的子类。创建Windows窗口要分两步进行:首先,引入构造函数,构造一个CWnd对象;然后调用Creat建立Windows 窗口并将它连到CWnd对象上。MFC中还从CWnd类派生出了进一步的窗口类型,以完成更具体的窗口创建工作,这些派生类有: ①CFrameWnd类:SDI应用程序主框架窗口的基类。 ②CMDIFrameWnd类:MDI应用程序主框架窗口的基类。 ③CMDIChildFrameWnd类:应用程序文档框架窗口的基类。 2. CView类 使用CView类(视图类)可以在其他窗口中创建子窗口,它可以提供一个特殊的接受外来输入的结构窗口。也就是说,CView类用于控制用户如何观看文档的数据,以及怎样与这些数据交互。即CView类管理着框架窗口的客户区,为用户与Windows之间提供可视接口。该类接收来自用户的键盘或鼠标的输入,还允许用户对数据进行预览和打印。 CView类广泛应用于基于文档的应用程序中。利用该类的派生类,可图形化地管理文档数据,用户对文档的操作都是通过它来实现的。CView类可用来实现用户自定义视图类的基本功能。在程序运行时,CView类用于视图的实现。一个视图只能分配给一个文档,但一个文档

相关主题