
MFC
文章平均质量分 74
CoderAndClimber
一个小码农,个人微信公众号:清远的梦呓,欢迎关注
展开
-
VC++窗口任意分割
VC++窗口任意分割一、关于CSplitterWnd类我们在使用CuteFtp或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割。 那么我们自己如何创建类似的界面,也实现窗口的任意的分割呢 ?在VC6.0中这就需要使用到CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口转载 2014-04-13 15:22:32 · 888 阅读 · 0 评论 -
MFC中删除包含文件的文件夹
MFC中提供了删除文件夹的一个封装函数 RemoveDirectory(LPCTSTR lpPathName),我们只要把要删除的文件夹的路径传进去就可以删除了,貌似一切如此简单。我象征性的建立一个文件夹,然后在程序中删除了它,呵呵,一下就成功了。正当我要转手去做另外的操作时,我喜欢乱尝试的毛病就鬼使神差的让我做了这么一件事,在这个文件夹下我添加了几个新的子文件夹以及一些文件,转载 2014-07-01 13:16:00 · 738 阅读 · 0 评论 -
fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
调试程序时出现以下问题:d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll...原创 2014-07-21 14:05:44 · 29980 阅读 · 0 评论 -
AfxMessageBox与MessageBox的比较及改变AfxMessageBox对话框标题
如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。 但是在WIN32 SDK的情况下只能使用MESSAGEBOX。MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxMessageBox().afxmessagebox更多的时候是用于调试AfxMessage转载 2014-07-01 09:45:38 · 1546 阅读 · 0 评论 -
VC 运行时库 /MD、/MDd 和 /MT、/MTd
VC 运行时库 /MD、/MDd 和 /MT、/MTd这里总结下他们的区别,后面的那个'd'是代表DEBUG版本,没有'd'的就是RELEASE版本了。首先说/MT/MT是 "multithread, static version ” 意思是多线程静态的版本,定义了它后,编译器把LIBCMT.lib 安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号...转载 2014-07-21 13:39:53 · 601 阅读 · 0 评论 -
TCHAR
因为C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T("")这样的字符串,对应的就有了_tcslen这样的函数为了转载 2014-05-29 13:09:33 · 679 阅读 · 0 评论 -
用CStdioFile实现对文件读取、写入字符串
CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长转载 2014-07-02 16:27:48 · 4099 阅读 · 0 评论 -
CSpinButtonCtrl的用法
1、要将微调控件与编辑控件组合成一对伙伴的关系,首先将微调控件与编辑控件的Tab Order值设置为连续值,且编辑控件在前面,微调控件在后。可以通过选择Layout菜单中选择Tab Order菜单项(或用快捷键Ctrl+D),然后用鼠标依次点,2、打开微调控件的属性,选择Styles标签,选择auto buddy和set buddy integer选项;如果要将微调控件放在编辑控件的右转载 2014-07-22 12:47:40 · 1692 阅读 · 0 评论 -
CFileFind类的使用总结
CFileFind类的使用总结1、CFileFind类的声明文件保存在afx.h头文件中。2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。4、CFileFind类的构造函数::CFileFind()和关闭函数::Clo转载 2014-07-02 19:11:56 · 761 阅读 · 0 评论 -
VS 调试技巧
下面有从浅入深的6个问题,您可以尝试回答一下一个如下的语句for (int i = 0; i 在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断,怎么才能做到呢?你有一个表达式在上面循环的某一次发生了变化,你想知道是哪一次,在哪个地方,怎么才能做到?你希望你的断点在被命中100次后,每命中三次中断一次,比如第103,第106,第109怎样做?你有在调试一个服务程转载 2014-06-26 16:04:41 · 3594 阅读 · 0 评论 -
VS2010中启动画面的设置
很久以前,在使用VC6的时候,设置启动画面是很简答,可惜使用vs后,各种麻烦啊.................详解:1.创建一个SDI或MDI工程。2.新建或导入一个ID号为IDB_SPLASH的位图。3.从CWnd类派生一个名为CSplashWnd的子类,并添加两个保护成员变量:protected:CBitma转载 2014-06-26 16:37:15 · 1166 阅读 · 0 评论 -
给VS2008/VS2010 MFC项目添加启动画面
在VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实现,参考了下VC6.0中这个Splash组件添加后的代码,就很容易在自己的项目里实现这个功能。如下图。 首先,在菜单的“项目”中选择“类向导”,生成一个启动画面的Splash类。转载 2014-06-26 16:41:47 · 572 阅读 · 0 评论 -
设置分割窗口背景色的简单方法
HBRUSH CLeftDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 if(nCtlColor==CTLCOLOR_DLG) ret原创 2014-04-13 16:43:11 · 662 阅读 · 0 评论 -
VARIANT、COleVariant 和_variant_t
在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版:struct tagVARIANT { VARTYPE vt; union { short iVal; // VT_I2. lon转载 2014-05-14 09:07:14 · 834 阅读 · 0 评论 -
Visual C++ 编程技巧之一和二
1. 如何获取应用程序的实例句柄?2. 如何通过代码获得应用程序主窗口的指针?3.如何在程序中获得其他程序的图标?4.如何编程结束应用程序?如何编程控制windows的重新引导?5.怎样加栽其他的应用程序?6. 确定应用程序的 路径7. 获得各种目录信息8. 如何自定义消息9. 如何改变窗口的图标?10. 如何改变窗口的缺省风格?11. 如何转载 2014-06-03 10:23:32 · 640 阅读 · 0 评论 -
VS2010中添加Flash控件
一、准备工作第一步:下载并安装Adobe Flash Player。从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约为2.66M),并安装。对于Windows 32位系统,其默认安装目录为:C:/WINDOWS/system32/Macromed/Flash/;对于64位系统,为:C:/Windows/原创 2014-06-01 20:18:08 · 3218 阅读 · 0 评论 -
字符串转换系列三:VARIANT、COleVariant 和_variant_t
VARIANT、COleVariant 和_variant_t 在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版:struct tagVARIANT { VARTYPE vt;转载 2014-05-14 15:15:12 · 1124 阅读 · 0 评论 -
MFC向Excel读取、写入数据
通过MFC向Excel写入数据代码: CWorkbooks books; CWorkbook book; CApplication app; CWorksheets sheets; CWorksheet sheet; CRange range; COleVariant vResult; COleVariant covOpt...原创 2014-05-14 14:56:59 · 9487 阅读 · 2 评论 -
程序在Debug、Release下运行及单独运行Debug下的exe文件时没有问题;可是单独运行Release所生成的exe文件时,点击某一个按钮时,程序崩溃
遇到一个很纠结的问题,程序在Debug下运行时没有问题,直接运行生成的exe文件也没有问题;在release下,直接在VS2010中运行时也没有问题,可是运行release所生成的exe文件时,点击某一个按钮时,程序崩溃。请问可能的原因是什么,是不是点击的按钮的消息响应函数中有问题,并且这个问题怎么查找?原创 2014-06-26 14:52:45 · 4518 阅读 · 1 评论 -
在vc2008中用_crtBreakAlloc调试内存泄漏
这两天调一个程序,发现每次退出都有内存泄漏,在此总结一个调试内存泄漏的好方法。 对于比较明显的内存泄漏,vc2008是比较容易定位的,在Debug模式F5运行,退出时会列出引起内存泄漏的问题代码所在文件及行号;但如果是比较隐蔽的内存泄漏,Output输出窗口只会输出部分信息,形式如下: Detected memory leaks! Dumping object转载 2014-06-26 16:18:35 · 621 阅读 · 0 评论 -
WM_NCHITTEST的作用:移动对话框,动态修改对话框标题
窗口在接收一个客户区或非客户区鼠标消息之前原创 2014-06-02 14:14:20 · 2233 阅读 · 0 评论 -
Visual C++ 编程技巧之三和四
17、如何创建一个字回绕的CEditView18、通用控件的显示窗口19、移动窗口20、重置窗口的大小21、如何单击除了窗口标题栏以外的区域使窗口移动22、如何改变视窗的背景颜色23、如何改变窗口标题24、如何防止主框窗口在其说明中显示活动的文档名25、如何获取有关窗口正在处理的当前消息的信息26、如何创建一个不规则形转载 2014-06-02 22:53:49 · 814 阅读 · 0 评论 -
怎样在VS2010中打开VS2012的项目
VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多。我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010中去。首先当然是修改解决方案文件(.sln文件)。使用记事本打开,把里面的Microsoft Visual Studio Solution File, Format Version 12.0转载 2015-07-03 08:13:03 · 832 阅读 · 0 评论 -
Visual Leak Detector检测内存泄露
Visual Leak Detector是一个比较好的内存泄露检测工具,可以在http://vld.codeplex.com/releases下载,目前更新到v2.4版本。下载以后,进行安装。我的安装目录是D:\Program Files (x86)。1.在stdafx.h头文件中添加如下代码:#include ,并添加如下路径D:\Program Files (x86)\Visu原创 2015-05-26 10:01:08 · 1008 阅读 · 0 评论 -
VS2010 配置OpenGL
下载所需文件:http://download.youkuaiyun.com/detail/u014023993/8864447系统64位,VS2010,安装目录:D:/Program Files(x86)1.把 glaux.dll、glut32.dll、glut.dll 拷贝到C:/WINDOWS/system32目录下,system32目录下应该已经有 opengl32.dll、glu32.dll了原创 2015-07-03 09:31:44 · 460 阅读 · 0 评论 -
CPaintDC类与CClientDC类的区别
2.2. CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中。(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消息。当程序中的消息循环接到WM_PAINT消息时就自动调用消息处理函数OnPaint(),如果在OnPaint函数内定义了CPaintDC类的对象,通过这个类对象就可以使用CDC转载 2014-07-21 14:34:53 · 769 阅读 · 0 评论 -
0xC015000F:正被停用的激活上下文不是最近激活的
0xC015000F:正被停用的激活上下文不是最近激活的 项目程序运行的时候,突然出现这个错误,调用堆栈中的函数,没有一个是自己写的,非常困惑。 在网上搜索了一下,先找到一个提示,可以在CApp::InitInstance()中禁用ActivationContext: afxAmbientActCtx= FALSE;转载 2014-06-26 16:02:04 · 662 阅读 · 0 评论 -
对MFC中将绘制的图形进行截图的一点思考
CRect rect;this->GetClientRect(rect);CImage image;image.Create(rect.Width(),rect.Height(),24);CDC* DCpoint=this->GetDC();DCpoint->Ellipse(20,20,200,200);CDC dstDC;dstDC.CreateCompatibleDC(DCpoi原创 2014-06-10 22:44:07 · 724 阅读 · 0 评论 -
error C2440: “static_cast”: 无法从“UINT (__thiscall CMainWindow::* )(CPoint)”转换为“LRESULT (__thiscall CW
从vc6转移到vs2005 发生下面问题: BEGIN_MESSAGE_MAP(CTestDlg, CCaptionBtnDlg) ON_WM_NCHITTEST() //vs2005 检测错误在这里 END_MESSAGE_MAP() afx_msg UINT OnNcHitTest(CPoint point)...转载 2014-07-17 09:07:27 · 2101 阅读 · 0 评论 -
关于向量越界的问题
前几天调试程序,一切正常。在解决了最后一个问题后,原创 2014-06-17 20:58:56 · 1005 阅读 · 0 评论 -
new出来的对象一定要delete
很多时候,我们会通过new构建一个指针对象:分配内存和调用构造函数。我们知道new和delete一定要配套使用,并且new []和delete []配套使用。但是有些时候,并不知道什么时候需要delete 掉new分配的空间。如以下伪码:原创 2015-05-26 10:26:41 · 7629 阅读 · 0 评论 -
用MFC编写的程序在别人电脑上显示时窗口界面出现问题
最近自己用MFC写的程序在别人电脑上显示时,界面及控件的位置出现了问题,总体效果是各个特征变大,导致界面不能正常显示。开始一直以为是屏幕分辨率的问题,可是调整分辨率以后,问题没有解决,查了些资料后,问题解决了。解决方案如下:控制面板-所有控制面板项-显示:设置为“较小(S)-100%(默认)”。如图所示并且类似的问题的可能原因如下(论坛上看到的):1.Form.AutoScal原创 2015-02-04 20:44:03 · 4949 阅读 · 0 评论 -
MFC使用WinHttp实现Http访问
最近在做MFC和Java搭建的Web平台进行Http通信原创 2015-01-15 19:18:18 · 7018 阅读 · 0 评论 -
uafxcwd.lib(afxglobals.obj) : error LNK2001: 无法解析的外部符号 _IID_IWICImagingFactory
用VC2010静态链接后,编译出现这个错误提示:uafxcwd.lib(afxglobals.obj) : error LNK2001: 无法解析的外部符号 _IID_IWICImagingFactory。 解决方法:在工程中添加链接 windowscodecs.lib。转载 2014-06-17 21:04:04 · 1390 阅读 · 0 评论 -
ProcessShellCommand()
ProcessShellCommand()本文链接:http://user.qzone.qq.com/278288976/blog/1196240170转载 2014-07-09 13:19:02 · 671 阅读 · 0 评论 -
在父进程中打开子进程
在一个进程中打开另一个进程:原创 2014-07-29 14:33:13 · 1018 阅读 · 0 评论 -
OLE拖放
使用IDropTarget接口同时支持文本和文件拖放 关于Windows的外壳扩展编程,拖放是比较简单的一种,在网上可以找到不少介绍这个技巧的文章。大部分是介绍使用MFC的COleDropTarget实现的, 我觉得一般使用COleDropTarget已经很好了,但是我习惯在一些程序模块中,完全的不使用MFC,比如纯SDK编程,还有用在ATL的时候,MFC是相当累 赘的。所以转载 2014-08-05 14:32:13 · 1241 阅读 · 0 评论 -
MFC未声明的标识符
但一直提示error C2065: “IDD_DIALOG_xxx”: 未声明的标识符(IDD_DIALOG_xxx为我属性页的名称);弄了好久只好放弃,改用他屏蔽不用的属性页。开始没问题,但当我在那属性页的类中添加我的代码时出错了,还是那个问题。看来这问题不解决是不能往下做了。 我在网上查了查,发现我的属性页类的头文件少了东西,我在头文件中包含了:#include "resourc原创 2014-08-14 16:22:41 · 7305 阅读 · 1 评论 -
C++中类对象所占空间的大小
首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。 计算一个类对象的大小时的规律:空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同);一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的;因此一个对象的大小≥所有非转载 2014-09-01 21:16:11 · 863 阅读 · 0 评论 -
MsChart控件在VC++中的使用
关于MsChart控件的注册:32位系统之下1.将mschrt20.ocx放在windows/system32目录下。注意,这个文件名中的没有字母a,即没有写chart中的字母a,就是这一细节让我多花了不少时间。2.使用命令regsvr32 MSCHRT20.OCX来注册。64位系统下1.确保w原创 2014-11-27 10:33:46 · 4656 阅读 · 1 评论