如何查看MFC类的源文件
vs2015之mfc简单实践项目
vs2015之mfc简单实践项目在开始之前,确保您已经安装了Visual Studio 2015以及相应的MFC组件。
接下来,我们将按照以下步骤进行MFC实践项目的开发。
第一步:创建MFC项目打开Visual Studio 2015,选择“文件”->“新建”->“项目”,在弹出的对话框中选择“MFC应用程序”,然后点击“下一步”。
在下一个对话框中,输入项目名称和存储位置,然后点击“完成”按钮。
第二步:设计用户界面在MFC项目中,用户界面设计使用的是资源编辑器。
在解决方案资源视图中,双击“资源文件”文件夹,然后双击“*.rc”文件。
在资源编辑器中,您可以添加和编辑对话框、菜单、工具栏等控件,以创建您的用户界面。
第三步:添加事件处理在设计好用户界面后,我们需要为其中的控件添加事件处理。
在资源编辑器中,双击一个控件,比如按钮,然后在属性窗口中找到“消息映射器”属性。
点击旁边的“添加事件处理程序”按钮,选择要处理的事件,然后点击“确定”。
在弹出的对话框中,选择一个现有的函数或新建一个函数,该函数将在相应的事件发生时被调用。
第四步:编写C++代码在添加完事件处理后,点击“打开源文件”,将会打开对应的C++源文件。
在这里,您可以编写处理事件的代码。
您可以使用MFC 提供的各种类和函数来实现您的功能。
第五步:编译和运行完成代码编写后,点击“生成”->“生成解决方案”来编译项目。
如果编译成功,您可以点击“调试”->“开始调试”来运行您的MFC应用程序。
通过以上步骤,您可以在VS2015中使用MFC创建并开发一个简单的实践项目。
当然,这只是MFC的基础用法,MFC还有很多其他的功能和特性可以供开发者使用。
希望本文能够对您在MFC项目开发中有所帮助。
总结:本文介绍了如何在VS2015中使用MFC进行简单的实践项目开发。
通过创建MFC项目、设计用户界面、添加事件处理、编写C++代码以及编译和运行,您可以快速上手MFC开发。
MFC–通过spy++查找应用程序菜单对应函数的方法学步园
MFC–通过spy++查找应用程序菜单对应函数的方法学步园
当一个应用程序比较大时,菜单比较多时,特别是初次接触这个程序的源码时,就会很难找到这个程序的入口点。
下面通过SPY++可以很快速的获取到这个入口(程序要有源代码)
1、运行这个应用程序,例如a.exe,此时打开spy++,将Window找到当前a.exe,再将Messages只捕捉WM_COMMAND 消息。
2、操作一个a.exe上想找到入口的一个菜单,spy++会捕捉到这个消息;
3、可以看到这个消息的WM_COMMAND的消息wID是:33836,根据这个id到源文件中resource.h中查找,可以找到类似于下面的一句话:
#define ID_XX_XXXX 33836
这里的ID_XX_XXXX就是要找的消息菜单id,再到源文件中找ID_XX_XXXX,就会找到类似于下面的语句:
ON_COMMAND(ID_XX_XXXX, OnXXXX)
此时函数OnXXXX就是这个消息响应的函数。
MFC文件读取
MFC文件读取MFC文件读取技术(1)计算机是如何管理自身所存放着大量的信息的呢?windows 的磁盘管理程序为我们提供了一套严密而又高效的信息组织开工--- 硬盘上的信息是以文件的形式被管理的。
面向存储的文件技术什么是文件?计算机中,一篇文章、一幅图画、一个程序、一首歌曲等都是以文件的形式存储在磁盘上的,每个文件都有一个文件名。
计算机就是对文件按名存取的。
文件名的格式如下:主文件名 . 扩展名文件名由主文件名和扩展名两部分组成,中间用小圆点隔开,其中扩展名可以省略。
而扩展名是用来区分文件类型的。
Windows 为了区分文件的类型,一些软件系统会自动给文件加上“ .wps ”扩展名;画图程序画的图像文件一般为“ .bmp ”等。
在windows 中,主文件名可以由英文字符、汉字、数字以及一些符号等组成,但不能使用+<>*?\ 等符号。
什么是文件夹?在计算机中存放着数以万计的文件,为了便于管理这些文件,就像我们把文件分类放到不同的抽屉中便于查阅一样,在计算机中也有像抽屉的东西,它就是文件夹。
文件夹也要有一个名字,取名的原则与文件的取名类似,只是不用再区分文件夹的类型,当文件夹多了以后,还可以把某些文件夹归到一个大文件夹中去。
久而久之,就构成了计算机中庞大的磁盘文件结构。
为什么要在程序中使用文件?通常,程序中的数据在程序运行结束后,就会从内存中清除,再次运行程序时不会自动出现。
在编制程序的过程中不可避免地会遇到将某些数据永久保存的问题,当关闭程序后,依然可以使用这些数据,这时就需要进行文件操作。
文件类型Visual c++ 处理的文件通常分为两种:文本文件:只可被任意文本编辑器读取ASCII 文本。
二进制文件:指对包含任意格式或无格式数据的文件的统称。
这里只介绍文本文件的读写,INI 文件也属于文本文件的范畴,且INI 文件的结构和用途与普通的文本文件不同,所以会单独介绍。
MFC类目录及头文件
简化 CListCtrl 的使用,添加了 afxcview.h 对文件和视图的支持 afxdb_.h afxtempl.h afxcoll.h afxcoll.h afxcoll.h afxcoll.h afxcoll.h afxcoll.h afxcoll.h MDI(多文档界面)子框架窗口 afxwin.h afxwin.h afx.h afx.h
COleDocument
COleDropSource COleDropTarget COleException COleInsertDialog COleIPFrameWnd COleLinkingDoc COleLinksDialog COleMessageFilter COleObjectFactory COlePasteSpecialDialog COlePropertiesDialog COlePropertyPage COleResizeBar COleSafeArray COleServerDoc COleServerItem COleStreamFile COleTemplateServer COleUpdateDialog COleVariant CPageSetupDialog CPaintDC CPalette CPen CPictureHolder CPoint CPrintDialog
Windows 列表框,允许用户把其 afxcmn.h 中的项拖放到不同的位置 afx.h
CDWordArray CEdit 用于文本输入的子窗口控件
afxcoll.h afxwin.h
CEditView
提供 Windows 编缉控件的功能。 因为 CEditView 派生于 Cedit, afxext.h 该对象可同文件和文件模板一 同使用 afxmt.h afx.h afxdb.h afx.h 通用文件对话框,提供 Open 和 afxdlgs.h Save As 对话框中的功能 afx.h afx.h afxdlgs.h afxwin.h 通用字体对话框,用于显示当前 afxdlgs.h 已装入系统的字体列表 afxctl.h 包含对话框控件的窗口 SDI(单窗口界面)框架窗口 afxext.h afxwin.h afxinet.h afxinet.h afxwin.h afxinet.h afxinet.h afxinet.h afxinet.h 标题通用控件 热键通用控件 afxcmn.h afxcmn.h afxisapi.h 实现 Web Browser 控件的视图 类,能够访问当地或 Web 上的 afxhtml.h HTML 文件。 afxinet.h
mfc2019 类库参考手册
mfc2019 类库参考手册MFC 2019 类库参考手册一、概述MFC(Microsoft Foundation Class)是微软公司为了简化Windows 应用程序开发而开发的类库。
本手册将详细介绍MFC 2019类库的各个模块,包括类的定义、成员函数、属性和示例等内容,为开发人员提供全面且准确的参考。
二、基础类1. CObject类CObject类是MFC类库的基类,所有MFC类都从该类派生。
本节将介绍CObject类的成员函数、构造函数和析构函数。
2. CWnd类CWnd类封装了Windows窗口的操作。
本节将介绍CWnd类的常用成员函数,如Create、ShowWindow和SendMessage等。
3. CWinApp类CWinApp类是一个应用程序对象类,每个MFC应用程序都必须拥有一个CWinApp类的派生类。
本节将介绍CWinApp类的初始化、消息循环和资源管理等功能。
三、窗口和控件类1. CFrameWnd类CFrameWnd类是MFC应用程序的主框架窗口类,它提供了标题栏、菜单、工具栏和状态栏等功能。
本节将介绍CFrameWnd类的创建和布局等操作。
2. CDialog类CDialog类是MFC应用程序中常用的对话框类,用于创建模态或非模态对话框。
本节将介绍CDialog类的创建和消息处理等方法。
3. CButton类CButton类封装了Windows中的按钮控件,提供了按钮的创建、属性设置和消息处理等功能。
本节将介绍CButton类的常用成员函数,如Create、SetCheck和EnableWindow等。
4. CEdit类CEdit类封装了Windows中的编辑框控件,可用于接受用户的输入和显示文本内容。
本节将介绍CEdit类的创建、文本操作和消息处理等方法。
四、绘图和界面类1. CDC类CDC类提供了对设备上下文的封装,用于进行绘图和界面操作。
本节将介绍CDC类的绘图函数,如LineTo、Rectangle和TextOut等。
基于MFC的文件快速查找软件开发
文章编号:2096-1472(2019)-04-10-03DOI:10.19644/ki.issn2096-1472.2019.04.003软件工程 SOFTWARE ENGINEERING 第22卷第4期2019年4月V ol.22 No.4Apr. 2019基于MFC 的文件快速查找软件开发李传可(上海政法学院图书馆,上海 201701)摘 要:在VS2010开发平台上以MFC基于对话框为开发框架,实现对指定目录路径的自动保存,并在该路径下根据选择的文件类型,进行快速检索的功能。
实现逻辑为读取EDIT控件上的路径,然后调用MFC基类CFileFind的成员函数,遍历该路径下的所有文件,并将文件名等相关数据同步到Report格式的List控件中,最后通过鼠标双击响应函数来调用系统API函数ShellExecute()打开指定文件。
关键词:MFC;List控件;遍历;软件开发;文件查找中图分类号:TP311.5 文献标识码:ASoftware Development of Fast File Searching Based on MFCLI Chuanke(Shanghai University of Political Science and Law ,Shanghai 201701,China )Abstract:In Visual Studio 2010 platform,use dialog-based MFC as developing frame,to realize the auto-saving of the specified path to configurate file and quick search in accordance with the selected file types through such path.After reading the path of Edit Control,call member function of CFileFind Class to traverse all files under that path,then copy file names and other related data to list control in LVS_REPORT stly call the ShellExecute API function on the MouseEvent function with Double-Clicking to open selected file by ShellExecute().Keywords:MFC;List control;traversal;software development;file search1 引言(Introduction)MFC(Microsoft Foundation Classes)是微软公司开发的具有图形界面的C/C++基础类库,封装了大部分的Windows API函数。
mfc使用教程
mfc使用教程MFC使用教程不要标题MFC是Microsoft Foundation Class的缩写,是一套C++的库,用于开发Windows平台的应用程序。
以下是一个简单的MFC使用教程,帮助你了解如何创建一个基本的MFC应用程序。
首先,打开Visual Studio并选择创建新项目。
在项目模板中,选择"MFC应用程序"。
在下一步中,选择"对话框"作为应用程序类型。
接下来,选择项目的名称和位置,然后点击"完成"按钮。
Visual Studio将自动生成一个MFC应用程序的基本框架。
应用程序的主要代码位于"MainFrm.cpp"和"MainFrm.h"文件中。
打开"MainFrm.cpp"文件,你将看到一个名为"Create"的函数。
在这个函数中,可以创建应用程序的主窗口。
在"Create"函数的内部,使用"MFC应用程序向导"提供的函数来创建一个对话框。
例如,可以使用"CDialogEx"类来创建一个简单的对话框。
在"Create"函数的最后,需要调用"ShowWindow"函数显示主窗口,并调用"UpdateWindow"函数来更新窗口。
在"MainFrm.h"文件中,你可以定义应用程序的主窗口类。
例如,可以继承自"CFrameWnd"类,并添加自定义的成员变量和函数。
在"MainFrm.cpp"文件的"Create"函数中,还可以添加一些自定义的代码,例如设置窗口的标题和大小,添加菜单和工具栏等。
最后,编译并运行应用程序。
你应该能够看到一个简单的MFC应用程序的窗口。
三种获取网页源码的方法(使用MFCSocket实现)
三种获取⽹页源码的⽅法(使⽤MFCSocket实现)<afxinet.h>复制代码代码如下:CString GetHttpFileData(CString strUrl){CInternetSession Session("Internet Explorer", 0);CHttpFile *pHttpFile = NULL;CString strData;CString strClip;pHttpFile = (CHttpFile*)Session.OpenURL(strUrl);while ( pHttpFile->ReadString(strClip) ){strData += strClip;}return strData;}要讲⼀下,pHttpFile->ReadString() 每次可能只读⼀个数据⽚断,读多少次取决于⽹络状况,所以要把每次读到的数据加到总数据的尾部,⽤了CString 省去了缓冲区处理:)别忘了包含头⽂件#include <afxinet.h> 在⼯程设置,⾥⾯要选择 using MFC 要不然编译不了第⼆种是使⽤WinNet的纯API实现的复制代码代码如下:#define MAXBLOCKSIZE 1024#include <windows.h>#include <wininet.h>#pragma comment(lib, "wininet.lib")void GetWebSrcCode(const char *Url);int _tmain(int argc, _TCHAR* argv[]){GetWebSrcCode("https:///");return 0;}void GetWebSrcCode(const char *Url){HINTERNET hSession = InternetOpen("zwt", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);if (hSession != NULL){HINTERNET hURL = InternetOpenUrl(hSession, Url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);if (hURL != NULL){char Temp[MAXBLOCKSIZE] = {0};ULONG Number = 1;FILE *stream;if( (stream = fopen( "E:\\test.html", "wb" )) != NULL ){while (Number > 0){InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);fwrite(Temp, sizeof (char), Number , stream);}fclose( stream );}InternetCloseHandle(hURL);hURL = NULL;}InternetCloseHandle(hSession);hSession = NULL;}}复制代码代码如下:int main(int argc, char* argv[]){SOCKET hsocket;SOCKADDR_IN saServer;WSADATA wsadata;LPHOSTENT lphostent;int nRet;char Dest[3000];char* host_name="";char* req="GET /s/blog_44acab2f01016gz3.html HTTP/1.1\r\n""User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\r\n""Host:\r\n\r\n";// 初始化套接字if(WSAStartup(MAKEWORD(2,2),&wsadata))printf("初始化SOCKET出错!");lphostent=gethostbyname(host_name);if(lphostent==NULL)printf("lphostent为空!");hsocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);saServer.sin_family = AF_INET;saServer.sin_port = htons(80);saServer.sin_addr =*((LPIN_ADDR)*lphostent->h_addr_list);// 利⽤SOCKET连接nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));if(nRet == SOCKET_ERROR){printf("建⽴连接时出错!");closesocket(hsocket);return 0;}// 利⽤SOCKET发送nRet = send(hsocket,req,strlen(req),0);if(nRet==SOCKET_ERROR){printf("发送数据包时出错!");closesocket(hsocket);}nRet=1;while(nRet>0){// 接收返回数据包nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);if(nRet>0)Dest[nRet]=0;elseDest[0]=0;char sDest[3000] = {0};UTF8_2_GB2312(sDest,nRet,Dest,nRet);// 显⽰返回数据包的⼤⼩、内容//printf("\nReceived bytes:%d\n",nRet);printf("Result:\n%s",sDest);}}另外,以上我们获取⽹页的时候,获取到的可能是UTF8,似乎⽬前⼤多数⽹站都⽤的这种编码吧!下⾯是编码转换。
第10章 MFC中的文件操作
10.1 MFC中的文件操作
CFile是建立在32位Windows文件操作体系 之上,封装了部分Windows文件操作函数, 在Windows环境下,使用CFile及其或派生 类的对象来操作文件,当然也可以从这些类 派生自己的文件操作类,建议使用统一的 CFile接口,可以提高程序的移植性。MFC 用类封装了文件操作函数,并且以CFile为 基础,派生了几个常用类,如CStdioFile、 CMemFile等。
第10章 MFC的文件操作
南阳理工学院软件学院
10.2.1 CFile类
1.OpenFlags:OpenFlags定义了13种文件 访问与共享模式; 2.Attribute:Attribute定义了文件的属性, 分别为正常、只读、隐含、系统、卷或者目录 等; 3.SeekPosition:SeekPosition定义了三种 文件位置:头、尾、当前; 4. hFileNull:hFileNull定义了空文件句柄。
√ √
√
√ √ 改名和删除 √
GetFilePath
SetFilePath SetStatus
Rename
MoveFile
√
Remove
DeleteFile
第10章 MFC的文件操作
南阳理工学院软件学院
10.2.2 CFile的成员函数
CFile类的构造函数和文件打开与创建的过程 1.构造函数CFile()
南阳理工学院软件学院
10.2.2 CFile的成员函数
表10-1 CFile成员函数对Windows文件函数的封装
√ GetLength 调用Seek成员函数
√
文件的锁定/解锁 √ √ 文件状态操作函数
MFC文件操作
MFC文件操作1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。
MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。
CString strFileTitle;CFileFind finder;bool bWork=finder.FindFile("C:\\windows\\sysbkup\\*.cab"); while(bWorking){bWorking=finder.FindNextFile();strFileTitle=finder.GetFileTitle();}2.文件的打开/保存对话框让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。
MFC的类CFileDialog用于实现这种功能。
使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。
在构造CFileDialog对象时,如果在参数中指OFN_ALLOWMULTISELECT 风格,则在此对话框中选择多个文件。
此时要重点注意为CFileDialog 对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。
CFileDialog dlg(TRUE, NULL, "*.*",OFN_HIDEREADONLY |OFN_ALLOWMULTISELECT, "Data files (*.dat;*.fbf)|*.dat;*.fbf||",this);dlg.m_ofn.lStructSize = 88;dlg.m_ofn.lpstrFile = new TCHAR[64000];memset(dlg.m_ofn.lpstrFile,0,64000);dlg.m_ofn.nMaxFile = 64000;POSITION mPos=mFileDlg.GetStartPosition();Cstring pathName;while(mPos!=NULL){pathName=mFileDlg.GetNextPathName(mPos);}CFileDialog 用于取文件名的几个成员函数:假如选择的文件是C:\WINDOWS\TEST.EXE(1)GetPathName();取文件名全称,C:\WINDOWS\TEST.EXE(2)GetFileTitle();取文件全名:TEST.EXE(3)GetFileName();取回TEST(4)GetFileExt();取扩展名EXE3.文件的读写1.打开/创建文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTru ncate|CFile::modeReadWrite);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。
反编译mfc程序
反编译mfc程序
反编译MFC程序是指将已经编译好的MFC程序重新转换为源代码的过程。
这个过程通常是为了分析程序的实现细节、修复bug或者进行修改。
要反编译MFC程序,可以使用一些专门的工具,例如IDA Pro、OllyDbg等。
以下是一个基本的步骤:
1. 下载并安装一个反编译工具,例如IDA Pro。
确保选择与目标程序相匹配的版本。
2. 打开目标程序的可执行文件(.exe)或者动态链接库文件(.dll)。
3. 分析程序的结构并识别关键代码。
这可能包括查看函数、类和全局变量。
4. 使用反编译工具将程序的机器码转换为对应的高级语言代码。
这可能是C++、C#等。
5. 根据需要,对反编译的代码进行修改或者调试。
需要注意的是,反编译是一项复杂的技术,并且可能违反软件许可协议或法律规定。
在进行反编译之前,建议先了解相关法律法规,并确保有合法的权限进行这样的操作。
MFC文件的读取(详细有效)
运算机是如何治理自身所寄存着大量的信息的呢?windows 的磁盘治理程序为咱们提供了一套周密而又高效的信息组织动工--- 硬盘上的信息是以文件的形式被治理的。
面向存储的文件技术什么是文件?运算机中,一篇文章、一幅图画、一个程序、一首歌曲等都是以文件的形式存储在磁盘上的,每一个文件都有一个文件名。
运算机确实是对文件按名存取的。
文件名的格式如下:主文件名 . 扩展名文件名由主文件名和扩展名两部份组成,中间用小圆点隔开,其中扩展名能够省略。
而扩展名是用来区分文件类型的。
Windows 为了区分文件的类型,一些软件系统会自动给文件加上“ .wps ”扩展名;画图程序画的图像文件一样为“ .bmp ”等。
在windows 中,主文件名能够由英文字符、汉字、数字和一些符号等组成,但不能利用+<>*?\ 等符号。
什么是文件夹?在运算机中寄存着数以万计的文件,为了便于治理这些文件,就像咱们把文件分类放到不同的抽屉中便于查阅一样,在运算机中也有像抽屉的东西,它确实是文件夹。
文件夹也要有一个名字,取名的原那么与文件的取名类似,只是不用再区分文件夹的类型,当文件夹多了以后,还能够把某些文件夹归到一个大文件夹中去。
久而久之,就组成了运算机中庞大的磁盘文件结构。
什么缘故要在程序中利用文件?通常,程序中的数据在程序运行终止后,就会从内存中清除,再次运行程序时可不能自动显现。
在编制程序的进程中不可幸免地会碰到将某些数据永久保留的问题,当关闭程序后,仍然能够利用这些数据,这时就需要进行文件操作。
文件类型Visual c++ 处置的文件通常分为两种:文本文件:只可被任意文本编辑器读取ASCII 文本。
二进制文件:指对包括任意格式或无格式数据的文件的统称。
那个地址只介绍文本文件的读写,INI 文件也属于文本文件的范围,且INI 文件的结构和用途与一般的文本文件不同,因此会单独介绍。
第一部份:文本文件文本文件的读写熟悉CFile 类;熟悉文本文件;能够正确灵活应用文本文件存取信息;幸免文本文件读写的常见误区。
mfc关联文件类型
mfc关联文件类型
MFC(Microsoft Foundation Classes)关联了多种文件类型,
这些文件类型通常用于开发基于Windows的C++应用程序。
以下是一些常见的MFC关联文件类型:
- .cpp:这是C++源代码文件的常见扩展名,用于包含MFC应用程序的源代码。
- .h:这是C++头文件的常见扩展名,用于声明类、函数和变
量等。
- .rc:这是资源文件的扩展名,用于定义Windows应用程序的界面元素,如对话框、按钮和菜单等。
- .rc2:这是资源文件的另一个扩展名,在旧版本的MFC中用
于定义窗口样式和图标等。
- .dlg:这是对话框模板文件的扩展名,用于定义MFC应用程
序中的对话框界面。
- .ico:这是图标文件的扩展名,用于存储Windows应用程序
使用的图标。
- .bmp:这是位图文件的扩展名,用于存储图像和界面元素等。
- .dll:这是动态链接库文件的扩展名,可以包含MFC应用程
序的可执行代码和资源。
这些文件类型在MFC开发中经常使用,并且相互关联以实现
应用程序的功能和界面。
mfc列表框控件的使用
MFC列表框控件的使用1. 介绍MFC(Microsoft Foundation Classes)是微软公司提供的一套用于开发Windows 桌面应用程序的C++类库。
MFC列表框控件是其中的一种常用控件,它可以用来显示和编辑列表中的项。
在本文中,我们将学习如何使用MFC列表框控件来创建、显示和操作列表中的数据项。
2. 创建列表框控件首先,我们需要在对话框资源中添加一个列表框控件。
打开Visual Studio,创建一个新的MFC应用程序项目,并选择对话框作为应用程序类型。
然后,在资源视图中双击IDD_DIALOG1以打开对话框编辑器。
在工具箱中找到列表框控件(List Box),并将其拖放到对话框上。
3. 设置属性选中刚刚添加的列表框控件,在属性窗口中可以设置其各种属性。
3.1 样式(Style)样式属性定义了列表框的外观和行为。
常见的样式包括:•单选(Single):只能选择一个项。
•多选(Multiple):可以选择多个项。
•排列(Sort):自动按字母顺序排序。
•水平滚动条(Horizontal Scrollbar):显示水平滚动条。
•垂直滚动条(Vertical Scrollbar):显示垂直滚动条。
3.2 数据源(Data)数据源属性定义了列表框中显示的数据项。
可以通过以下几种方式设置数据源:•字符串数组(String Array):将一个字符串数组赋给列表框。
•整数数组(Integer Array):将一个整数数组赋给列表框,每个整数对应一个数据项。
•数据库记录集(Database Recordset):将数据库查询结果赋给列表框。
3.3 绑定变量(Bound Variable)绑定变量属性定义了与列表框关联的变量。
当用户选择某个项时,该变量会被更新。
可以使用以下几种类型的变量:•字符串变量(String Variable):保存选中项的文本。
•整数变量(Integer Variable):保存选中项的索引。
MFC中文件操作、查找与选择总结
MFC总结(一):MFC中文件操作、查找与选择总结(1)本文主要涉及以下几个方面,均为在MFC编程中较为常用的:CFile操作、CArchive操作、如何选择文件和文件夹、如何查找文件、获取当前目录、_access函数等。
(一)使用CFile类操作文件CFile类在MFC的文件操作中应该是最常用的了。
主要的成员函数有Open、Close、Write、Read、Seek、SeekToEnd、GetLength、GetPosition,具体用法见MSDN。
(1)文件打开操作:文件打开有两种方式,一种是先定义类对象,在用Open函数打开;一种是在定义类对象时传入文件名和打开方式。
分别如下CFile file;if(!file.Open(lpszFileName, nOpenFlags ))return;或CFile file(lpszFileName, nOpenFlags);(2)文件打开方式:文件打开方式,即上述nOpenFlags的值主要由一些宏定义的值组合而成,具体见MSDN,常用的有如下几种:A. CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite,以写文件的方式打开,如果文件不存在,则新建文件,否则打开已有文件进行写入操作,此时不会清空原有文件;B. 将上述CFile::modeWrite更换为CFile::modeRead或者CFile::modeReadWrite可实现读操作或者同时读写。
(3)判断文件结束判断文件是否结束,没有结束则继续读取,否则关闭退出。
这点在编程时常用。
对于CFile常用的判断文件结束的方法是:while(file.GetPosition() < file.GetLength()){ //文件未结束//Add code ....}(4)值得注意的几点:A. 当文件名中包含路径时,要注意使用\\,如C:\\MyFile.DAT,在Unicode下时,需要使用_T("C:\\MyFile.DAT");B. 采用(2)中A方式写文件时,注意使用file.SeekToEnd()将文件指针移至文件尾,再写入,否则会覆盖已有的数据,这点经常被很多初学者忽视;C. 在打开文件后就要紧接着写下Close,养成这样的习惯,避免忘记关闭文件。
1MFC生成的C++源文件中都有StdAfxh
第一课1.MFC生成的C++源文件中都有StdAfx.h,此文件包含了常用的AFX函数的声明,其中有afxwin.h,此文件包含了CRECT,CPoint,CWnd等许多类及其方法的声明。
2.Project->Setting->Debug可以加入命令行参数。
3.在SDK中要加入"windows.h"和stdio.h。
因为LoadCursor,MessageBox等函数的声明在这个文件中。
4.创建一个完整的窗口的四个步骤SDK,1设计窗口类,2注册窗口类,3创建窗口,4显示窗口5.函数名可以代表函数代码的首地址,即可作为函数指针。
6.要查看VC数据类型,可以在MSDN中输入“BOOL”然后选择“DATA TYPE”。
7.atof将字符串转化为float,atoi将字符串转化为int型。
8.所有从CWnd类派生的类都有m_hWnd句柄。
9.变量的生命周期:可以认为出了包含它的大括号,这个变量的生命周期结束。
所以全局变量的声明位于所有大括号之外。
但是用new声明的变量和用static声明的变量除外。
10.SDK示范程序,见下面。
11.sprintf格式化字符,其头文件为stdio.h,在MFC中格式化字符用CString.Format12.GetDC()与ReleaseDC()要成对使用,否则会内存泄漏。
同样,BeginPaint()与EndPaint()。
13.GetStockObject()得到画笔、画刷、字体、调色板的句柄,使用时必须用类型转换。
14.什么时候用NULL,什么时候用0.答,对指针赋值时用NULL,对变量赋值时用0.15.什么是野指针?答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免野指针?答:将此指针指向NULL即可。
p=NULL;16.SDK代码流程:#include "windows.h"//包含头文件LoadCursor,TextOut等函数#include "stdio.h"//包含sprintf,printf等函数LRESULT CALLBACK MyProc(...);//声明回调函数int WINAPI WinMain(){WNDCLASS wndcls;//设计窗口类wndcls.hcursor=LoadCursor();//初始化....RegisterClass(&wndcls);//注册窗口类hwnd=CreateWindow(...);//创建窗口ShowWindow(..);//显示窗口UpdateWindow(..);MSG msg;//定义消息结构体while(GetMessage(...))//消息循环{...}return 0;}LRESULT CALLBACK MyProc(...)//实现回调函数{switch(uMsg){case WM_CHAR:break;...}}第2课1.定义结构体和类时别忘记在最后加入";"号!例如Class Point{int x;int y;};2.#include <xxx.h>与#include "xxx.h"的区别:<>不查找运行时目录,""查找运行时目录!3.类的定义中,如果未指明成员类型,则缺省为private.而结构体中则缺省为public.4.引用:引用经常用在函数的传参上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)先打开任一工工程,然后File-> open,将C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\里有一个mfc.bsc打开.
注意:如果SRC文件夹中没有mfc.bcs,则从VC安装包中拷贝到此路径.
还有一个小技巧:当最后的结果显示出来后,你在结果中的函数名、类名、预定义名、宏名上双击鼠标左键,那么包含这些名字的定义或实现的文件就被打开了。
本文来自CSDN博客,转载请标明出处:/shuixin536/archive/2010/07/01/5706831.aspx
如果你在第一个窗口里输入了函数名,类名,预定义名,宏名,那么你在第二个窗口里可以选第一项:Definitions and References。然后按OK,就可以查看函数,类,预定义名和宏的定义以及在何处被引用。
如果你在第一个窗口里输入了文件名,那么你在第二个窗口里可以选择第二项:File Outline,按OK后可以查看该文件里声明了什么类,什么函数,等等。
打开文件以后,选择TOOLS ->Source Browser 然后在identifier中输入你想要查看的类,变量,宏或函数名,然后在select query 中选择你要查询的相关内容即可。
如果你的VC6安装目录下没有MFC.bsc那你可以使用如下命令来进行对MFC.bsc文件的重建。
首先进入DOS命令模式:
C:\Program Files\Microsoft Visual Studio\VC98\bin目录下运行VCVARS32.BAT,然后再进入C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\ 运行如下命令:
nmake browseonly=1 no_pch=1 no_pdb=1 dll=2
如果你在第一个窗口里输入了一个类名,那么在第二个窗口里你可以选择第三项和第四项:Base Classes and Members和Derived Classes and Members。按OK后分别可以查看该类的基类及其成员和该类的派生类及其成员。
如果你在第一个窗口里输入了一个函数名,那么你在第二个窗口里可以选择最后两项:Call Graph和Caller Graph,按OK后分别可以查看该函数调用了谁和被谁调用。
2)Tools-> Source Browser,输入类名或宏就可以了,非常方便。
如何查看MFC源码(转)
2010-02-21 09:33
在vc6开发界面中,打开文件,然后选择C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\MFC.bsc(具体目录还要根据自己VC的安装路径)。
好了,现在可以简单介绍介绍了
学习mfc到一定程度,必然要查看一下它的源代码。可是组成mfc源代码的文件太多又太长,如何快速方便地找到我们要看的东西?初次学习VC的朋友或许不知道在你的vc++6.0安装目录的某个角落里有这么一个文件:mfc.bsc。这可是学习掌握vc和mfc的好帮手。靠它可以找出vc和mfc中某个类的声明和成员函数的定义,可以找到vc中每一个预定义名和宏的定义,找出一个文件里都声明了什么类,类中有些什么成员,还可以找出mfc中各个类的各个成员函数谁调用了谁。打开你的vc++6.0,先随便打开一个project,然后选菜单File/Open,在“文件类型”一栏里选Browse Info File(.bsc),然后进入“你的vc++6.0的安装目录vc98mfcsrc”里,选中文件mfc.bsc,按“打开”。然后在主菜单里选Tool/Source Browser,会弹出一个对话框,里面包含两个窗口。第一个窗口是Identifier,你可以在这里输入函数名、类名、预定义名、宏名、文件名。