本文是基于对话框的 博文基于 无幻 的博文为基础写的 http://blog.csdn.net/akof1314/article/details/4951836 笔者使用mfc撑死2个星期,不过这是有c++基础的前提下接触mfc,昨天看到了网上对qt creator的评论,感觉好高大上,回去试了一下后发现,qt需要mfc的基础,若是直接接触qt的话会比较难,毕竟mfc是在vs的平台下,大家学起来会比较顺手. 回到正题,今天研究了下怎么使用mfc中的位图按键,发现实现方法挺多,但是对于小白来说,很…
假日快要结束了.带着沉重的心情写下之前关于MFC与Excel文件交互的总结. 因为VS的版本号不同可能在操作上有些差异.所以在此指明下本篇文章的project环境为VS2013,也建议大家用最新的. 说到程序对于Excel的操作,应该不能算是什么新需求了.方法也有好几种,诸如利用office提供的接口.开源码之类的.本文在查了一些资料之后选择了实现起来较为反便的一种.事实上现的方法基本上全然照抄的这篇文章的,假设看本篇不大明确的能够去看看. 參考的文章说."踏破铁鞋无觅处.得来费死了工夫&quo…
sstdafx.h.stdafx.cpp是干什么用的?为什么我的每一个cpp文件都必须包含stdafx.h? Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作.由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了.     为避免这种浪费,AppWizard和Visual C++编译程序一起进行工作,如下所示:     ◎AppWizard建立了文件stdafx.h,该文件包含了所…
1. MFC中 创建文件夹的方法如下: CString strFolderPath = "./Output"; //判断路径是否存在 if(!PathIsDirectory(strFolderPath)) { CString strMsg; strMsg.Format(_T("指定路径\"%s\"不存在,是否创建?"),strFolderPath); if(AfxMessageBox(strMsg,MB_YESNO) == IDYES) { //…
MFC打开/保存文件对话框:CFileDialog CFileDialog   文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpsz…
MFC原理第一讲.MFC的本质.以及手工编写MFC的程序 PS: 这个博客属于复习知识.从头开始讲解. 在写这篇博客之前.已经写了3篇MFC的本质了.不过掌握知识点太多.所以从简重新开始. 一丶MFC的本质是什么. MFC的本质其实就是Win32程序的一种封装. 其实就是封装好了.我们直接用就行了. 二丶手工编写一个MFC程序. 手工编写MFC程序.需要熟悉两个类 一个是CWinAPP,一个是CFramWnd类. 这两个类的作用. CWinAPP  这个主要就是保存窗口的一些数据.跟窗口本身无关…
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList img; 3.在主程序中.h文件中的BEGIN_MESSAGE_MAP(CDetectorDlg,CDialog)函数中加入:         ON_NOTIFY_EX( TTN_NEEDTEXT,0,OnToolTipText) 3.在主程序中.h文件中添加消息函数: afx_msg BOOL…
文件对话框 上一讲介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径,这个对话框就是打开文件对话框:除了“打开”选项一般还会有“另存为”选项,选择“另存为”后往往也会有一个对话框弹出,让我们选择保存路径,这就是保存文件对话框. 正如上面举…
.rc文件和.rc2文件 c和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的集成环境下直接进行编辑和修改, 而是由根据需要手工地进行编辑. ( // xxx.RC2 - Microsoft Visual C++ 不会直接编辑的资源 ) 在下面的地址找到关于RC2文件的描述: http://msdn.microsoft.com/zh-cn/library/y3sk7e6b(V…
现在经常会对XML文件进行操作,怎么在MFC下去读和解析XML文件呢?直接上代码: 首先得等在stdafx.h中加入这句,以引入MSXML命名空间 #import <msxml3.dll> named_guids using namespace MSXML2; 然后再要使用的类的头文件加入: //XML Parser intellectural pointer (used in parsing XML file) MSXML2::IXMLDOMDocument2Ptr m_plDomDocum…
1.文件写入 void CMFCApplication1Dlg::Write() { CFile file; CString FileName = "D:\\100w.txt"; memset(buf, , NUM);//初始化内存,防止读出字符末尾出现乱码 ; i < NUM; i++) { )% == ) buf[i] =; else buf[i] = ; } // TODO: Add your control notification handler code here ]…
前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. 这次要好好看下这个问题. 详细做法就是深入仔细的跟踪.跟踪.跟踪. .. 应用代码,跟进 MFC的代码,跟进 Alt+8调出反汇编,跟进. . . 重复多次重复追踪.缩小目标.确定问题是:在CFileDialog 的析构函数中,调用了CString 的析构函数, 恰恰是析构CSring 出错了.…
整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Progress Control 针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个.2. SetRange() -- 设置进度条范围 设置进度条的起始值和终止值.(不管拖拽还是创建都要设置此,在初始化中)3. SetPos() -- 设置当前值 设置进度条的当前位置(值).4. Off…
//选择文件CFileDialog dlg(TRUE, 0, 0, OFN_HIDEREADONLY, "文本文件|*.txt|所有文件|*.*)||",0);if (dlg.DoModal()){ CString filePath=dlg.GetPathName(); CString fileNameWithNoExt=dlg.GetFileTitle();} //选择文件夹版本1 void CMyTestDlg::OnBnClickedButton1(){ TCHAR chPath…
参考: http://blog.csdn.net/zgrjkflmkyc/article/details/16897881 http://www.oschina.net/question/565065_72669 ××××××××××××××××××××××××××××××××××××××××××××××× 统一管理: 在Win32编程的时候,为了方便项目中的资源统一管理,IDE提供了一个统一的格式资源文件,这是就是后缀为.rc的文件. 在程序编译的时候他会被编译器(具体来说是资源编译器)生成一…
问题:无法定位程序输入点到动态链接库上...... 过程:找完整个工程文件夹: APS为资源文件: resource.h为定义文件: 完全复制 除主文件以外的所有文件,程序可用: 在主程序框Cpp文件里面一个个复制所有函数: 到最后,发现,改变了 MessageMap()是最大的问题. 到底messagemap问题在哪里呢? ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_TIMER() 没有问题 最后落到了 两个按钮载入函数: OnBnClickedLo…
//如果涉及到大文件的遍历(大于4GB),可以将以下代码_finddata_t换成__finddata64_t,_findfirst换成_findfirst64,_findnext换成_findnext64 void dfsFolder(CString dirPath){ _finddata_t FileInfo; CString tmp=dirPath; if (tmp.Right(1) != "\\")  tmp += "\\"; CString strfind…
原文网址:http://shijuanfeng.blogbus.com/logs/100675115.html 第一种方法:定义一个文件类对象来操作CFile   TempFile;     TempFile.Remove(指定文件名); 第二种方法:  使用系统函数 DeleteFile( LPCSTR filename )删除文件    _rmdir(),删除目录 DeleteDirectory(sTempDir);  删除目录 RemoveDirectory(sTempDir);删除目录e…
一.文件夹的创建 void CFileOperationDlg::OnButtonMakeFolder() { // TODO: Add your control notification handler code here UpdateData(TRUE); CFileFind m_sFileFind; if (!m_sFileFind.FindFile(m_FolderName)) { CreateDirectory(m_FolderName,NULL); } } 二.文件的创建 void…
在使用WritePrivateProfileString的时候, 如果前两个参数已经在INI文件中存在,那该函数的作用就是修改键值,即楼主说的覆盖 如果第一个参数存在,第二个参数不存在,那作用是在INI中的一个字段(第一个参数)下新增一个键名(第二个参数),键值为第三个参数 如果第一个参数也不存在,那作用是在INI中新增一个字段名(第一个参数),该字段下新增一个键名(第二个参数),键值为第三个参数 //下面是在网上找的一个简单的介绍,比较容易看懂 BOOL WritePrivateProfile…
BOOL UploadFile(LPCTSTR strURL, LPCTSTR strLocalFileName) { // 如果URL为空或者文件不存在,直接返回 if (strURL == NULL || strURL == _T("") || strLocalFileName == NULL || strLocalFileName == _T("") || !PathFileExists(strLocalFileName) || PathIsDirectory…
BOOL myDeleteDirectory(CString directory_path) //删除一个文件夹下的所有内容 { BOOL ret=TRUE; CFileFind finder; CString path; path.Format(_T("%s/*.*"),directory_path); BOOL bWorking = finder.FindFile(path); while(bWorking) { bWorking = finder.FindNextFile();…
VOID DragAcceptFiles(          HWND hWnd,    BOOL fAccept); 这个函数的调用,表示你要让某个窗体能够接受文件的拖入.第一个参数指定是哪个窗口,第二个参数指定为true表示接受,否则表示不接受. ON_WM_DROPFILES(); 我们必须处理这个消息,因为这个消息告诉我们 有文件拖入操作发生.最重要的是, 它传递给我们一个HDROP 的结构体, 这个结构体正是你要在函数DragQueryFile里面要用到的第一个参数. UINT Dra…
CComVariant IXMLDOMElement http://blog.sina.com.cn/s/blog_69e905cd0100kp5i.html…
解决方案 这个问题是由于 win10 的安全机制搞的鬼,即使以管理员权限运行也不行,因为它会把 WM_DROPFILES 消息过滤掉,那怎么办呢?只需在窗口初始化 OnInitDialog() 里添加如下代码即可解决: ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD); ChangeWindowMessageFilter(0x0049, MSGFLT_ADD);…
UpdateWindow(); int height, width; CRect rect;//定义矩形类 CRect rect1; CImage image; //创建图片类 image.Load(_T("1.jpg")); height = image.GetHeight(); width = image.GetWidth(); m_ctrlPic.GetClientRect(&rect); //获得pictrue控件所在的矩形区域 CDC *pDc = m_ctrlPic…
1.MFC介绍及环境搭建 MFC全程为Microsoft Foundation class Library,即微软的基本类库,MFC实际上是一个庞大的文件库,它由指向文件和源文件组成. 首先,打开visual2017,进行如下操作: 此时,会发现新建项目中无法找到创建MFC工程 这是因为没有配置MFC开发环境,关闭visual studio打开visual studio installer 选择修改,可以打开如下窗口 勾选后,点击修改,此时就进入了安装界面,这里需要等待15分钟左右 2.利用向导…
转自:http://blog.163.com/zhigang0633@126/blog/static/38790491200822711526168/ 讲述MFC AppWizard的原理与MFC程序框架的剖析.AppWizard是一个源代码生成工具,是计算机辅助程序设计工具,WinMain在MFC程序中是如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的PreCreateWindow和OnCreate两…
很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下可以简单的写程序.本文开始就跟大家分享一位同行前辈写的MFC核心机制分析(稍作整理),语言朴实易懂,在读完此深入浅析的剖析系列后,相信留给大家的是对MFC运行机制的深入理解. MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的…
建立MFC DLL工程.一般选共享MFC库 关键是在你生成的CPP中,添加外部调用的接口 如下,意思是将这个函数对外公开. 如果你希望对外提供类,就把这个方法做成工厂. 如果你希望对外提供MFC的窗体,同样在内部new自己的窗体,show,对外保留这个封装好的方法. 由于外部要操作窗体比较麻烦,毕竟不是MFC本身在操作,因此封装好对外提供,效果更佳. extern "C" __declspec(dllexport) void TheStartCaculate(char* pathFil…