
MFC
明卿
黑夜给了我一双明亮的眼睛,我却用它去寻找光明!
展开
-
vs2010 添加删除工具栏资源的上图标按钮
VS2010 中如果要删除工具栏上多余的图标,直接用DEL 键,或右键菜单中的删除选项,却不能完全删除完,删除后留下了黑块,图标不见命令照常执行,其实正确操作是鼠标左键按住不放,往工具条外一拉就删除了。 添加的操作是选中一个按钮复制后再最后一个按钮粘贴,鼠标再点击其他按钮时刷新,在刚刚添加的后面的位置就添加一个按钮。原创 2016-01-09 20:01:36 · 4066 阅读 · 0 评论 -
CxImage的编译及简单使用举例
1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码;2、 解压缩后,以管理员身份打开CxImageFull_vc10.sln工程,在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteCharacter Set,首先编译ja转载 2016-03-24 16:17:32 · 1268 阅读 · 0 评论 -
【CxImage 702】VS2010 编译和使用。。。
参考的是http://blog.youkuaiyun.com/fengbingchun/article/details/38795713 这个博客1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码;2、 解压缩后,用vs2010打开CxImageFull_vc10.sln工程 (目前我编译的是Release转载 2016-03-28 14:53:35 · 1756 阅读 · 2 评论 -
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
使用VS2005以上版本(VS2005、VS2008、VS2010)编译在其他编译器下正常通过的C语言程序,你可能会遇到类似如下的警告提示: 引用内容warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation转载 2015-11-19 10:03:20 · 798 阅读 · 0 评论 -
修改MFC程序图标
1、要修改程序的图标首先要看程序图标资源包含哪些图标。我们用icon workshop 打开程序res目录下的默认程序图标如下: 从上图我们可以看出在程序res目录下面的这个MFC图标,并不仅仅是一个图标,而是包含了上面这么多的图标组合而成的。而我们自己如果要干净完整的替换程序图标的话,就需要自己也按照上面的格式制作一个这样的ico图标文件。其中包含5个RGB/A原创 2016-04-25 09:45:46 · 1903 阅读 · 0 评论 -
c/c++/MFC 调用 js 函数代码
调用函数代码和示例1 首先 .h 文件中定义: CComPtr m_sphtmlWnd; CComPtr m_spHtmlDoc;//方法1 可以取得返回值。。。。。//调用方法示例:stringArray为传入参数列表,getSum为js函数,pVarResult 为返回值/* CStringArray stringArray; stringArray.RemoveA转载 2016-07-12 10:58:23 · 1592 阅读 · 0 评论 -
CoInitialize()、CoInitializeEx()和AfxOleInit()区别联系
CoInitialize()和AfxOleInit()都是初始化COM库,不同之处在与:OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而 OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括:转载 2016-07-14 08:53:35 · 715 阅读 · 0 评论 -
_variant_t、CComVariant与COleVariant、CDBVariant
目前计算机语言多种多样,如C++、Java、Basic、Pascal等,此外还有JavaScript、VBScript、ActionScript等脚本语言,它们各自维护自己的数据类型,当使用C++这样强类型的语言来读取数据库或者与其他语言之间来交换数据时,它很有可能不知道获取到的数据的具体类型,这个时候必须借助于变体类型读取数据。VARIANT数据类型就具有跨语言的特性,同时它可以表示(存储)任意转载 2016-07-15 10:32:51 · 1296 阅读 · 0 评论 -
Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换1.要进行编译请先自行安装Codejock.Xtreme.Toolkit.Pro.v15.3.1(正常安装并完整编译出工程时所需函式库才能继续以下步骤)2.大致上这样~有缺变量声明的自己补上~因为是撷取自某程序中一小段代码~3.15种皮肤是内建的~当然还能自行设定更多种类~转载 2016-08-26 16:53:06 · 6575 阅读 · 1 评论 -
Xtreme ToolkitPro v15.3.1中SkinBuilder.exe皮肤编辑工具的使用
在Xtreme ToolkitPro v15.3.1\Utils目录下有个SkinBuilder.exe皮肤编辑的软件。刚开始不知道怎么用的,百度也好像没有该工具的用法。后来慢慢摸索了一下知道了大概的用法记录下来分享给大家。其实该工具就是用来编辑皮肤文件的,格式见下皮肤文件下载:http://download.youkuaiyun.com/detail/qing666888/9614041安装完Xtr原创 2016-08-27 17:15:51 · 4154 阅读 · 0 评论 -
MFC 下开发Office Word2010报表生成方法-- 一、准备工作
官方开发接口帮助文档https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word(v=office.14).aspx//枚举对应值enum WdUnits{ wdCharacter = 1, wdWord = 2, wdSentence = 3, wdP原创 2016-07-21 09:18:44 · 3460 阅读 · 5 评论 -
COM组件注册方法(VC++)
1、打开VC的属性界面进行设置2、注册DLL到系统 CString szInfo, szPath; char cPath[MAX_PATH] = {0}; GetModuleFileNameA(NULL, cPath, MAX_PATH); szPath += cPath; int nFind = szPath.ReverseFind('\\'); if (nFind >原创 2016-03-13 23:30:28 · 7056 阅读 · 0 评论 -
VC include 路径解析
要了解vc中使用#include命令包含头文件所搜寻的路径,必须先了解vc中的几种路径:1. 系统路径系统路径在vc中是"Tools->Options->Directories"中"Include files"指定的路径。打开此对话框会发现默认有这几条路径:C:/Program Files/Microsoft Visual Studio/VC98/INCLUDE转载 2016-03-24 10:43:51 · 1093 阅读 · 0 评论 -
使用CTabView实现多视图(一体多面)
一般书中介绍的是使用CSplitterWnd来拆分窗口实现多视图,CSplitterWnd中的CreateClient可以保存其创建的pCreateContext指针,以便子视图共享Document。这我用一篇文章详细说明。CTabView建立多视图的好处在于简单的标签切换,可以让每个View的窗口都很大。下面说说如何操作:在建立项目时,程序向导最后一步并未提供让View为CTabView转载 2016-01-11 00:04:53 · 1228 阅读 · 0 评论 -
CListCtrl控件实现点击单行选中当前CheckBox点击CheckBox实现多选功能
首先创建CListCtr时设置风格刚开始没看清楚把LVS_SHOWSELALWAYS设置到扩展风格了。导致鼠标移动到哪,选中项就跟到哪。看清了时LVS 还是LVS_EX 因为#define LVS_SHOWSELALWAYS 0x0008#define LVS_EX_TRACKSELECT 0x00000008为同一个值R原创 2015-12-09 10:40:22 · 5073 阅读 · 0 评论 -
DestroyWindow
假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow();2. DestroyWindow会发送WM_DESTROY;3. WM_DESTROY对应的消息处理函数是OnDestroy();4. DestroyWindow会发送WM_转载 2016-01-12 14:22:30 · 721 阅读 · 0 评论 -
VS内存泄漏工具Visual Leak Detector2.5.1安装与使用
Visual Leak Detector内存泄漏一直是一个令人头疼的问题,Visual Leak Detector工具在处理内存泄漏时非常好用,官网可以直接点击这里,简单介绍一下Visual Leak Detector。https://kinddragon.github.io/vld/Visual Leak Detector是一个开源的,免费的,健壮的又使用起来很简单的内存泄漏检测系...转载 2016-01-12 14:51:39 · 1822 阅读 · 0 评论 -
QT Creator 快捷注释片段模板
QT Creator注释:/**************************************************************** @Copyright: Copyright (c) 2019 MQ. All rights reserved.* @ProjName: %{CurrentProject:Name}* @FileName: %{Cu...原创 2016-01-14 17:23:19 · 2532 阅读 · 0 评论 -
VC++之Office自动化开发
去年底老板临时交给一个任务,为一个试验数据管理系统编写一个电子报告生成程序。因为老板也不怎么重视这个项目(钱少啊,呵呵),所以这个任务只好落在我这种小硕身上了。我也是两眼瞎,万事从头干。三个月的苦斗,还算圆满交差。用VC进行office自动化开发,网上有很多文章,我本不想在此画蛇添足。只是感于自己查资料时的苦痛,所以就厚着脸皮把一些心得拿出来见见阳光,有一些技术还是自己摸索出来的。最后,offic转载 2016-03-07 14:09:39 · 3120 阅读 · 0 评论 -
共享MFC DLL的规则DLL 、带静态链接MFC的规则DLL和MFC扩展DLL区别
言:在编写MFC程序的时候,通常需要编写dll库以供其他程序调用。关于MFC dll的相关知识很多很杂,这里特酷吧结合自己学习中遇到的问题专门整理了一些MFC dll的基础知识。本部分共上下两篇文章,本文为上篇,MFC DLL应用程序类型分为以下三种:(1)使用共享MFC DLL的规则DLL(2)带静态链接MFC的规则DLL(3)MFC扩展DLL下面重点解释一下这些DLL的含义区别转载 2016-02-23 09:38:16 · 7554 阅读 · 0 评论 -
MFC--Extension DLL(扩展DLL)
本文阐述的动态链接库的一种,mfc 扩展动态链接库--MFC Extension DLL.最后以一个程序的启动画面来用实例说明一下这个dll的使用MFC扩展dll主要是为了实现可重用类,也就是MFC标准类库进行继承,然后通过DLL进行重用,一次开发,多次使用。扩展dll使用MFC的动态连接的库版本生成的。只有使用动态连接库的可执行程序或是regular dll(规则动态链接库)才可以使用扩转载 2016-02-23 10:12:08 · 4578 阅读 · 0 评论 -
WM_NCCALCSIZE消息处理详解修正
【前言】看了网上的一篇《关于WM_NCCALCSIZE消息处理详解(原帖由niesongsong发表)》的文章,正好自己正在写换肤程序,用了以后发现了一些问题,特贡献出来供大家参考学习!【问题】主要问题是原作者把处理后的NCCALCSIZE_PARAMS结构搞错了。借鉴MSDN中的CWnd::OnNcCalcSize 函数注释,其原文如下:a转载 2015-11-09 11:45:19 · 1526 阅读 · 0 评论 -
VS2008中添加注释的宏
一、功能介绍环境:VC 9(Visual Studio 2008),其他.net版本没有测试功能:在VC 9编辑器中为代码添加符合Doxygen标准的注释,其中包括:1. 模块注释2. 分组注释3. 新头文件注释4. 文件头注释5. 简要注释6. 详细注释7.转载 2016-03-10 17:12:24 · 1074 阅读 · 0 评论 -
如何在工作线程中创建窗口?
在前面我们研究了使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行DLL间的资源切换,以及工作线程中创建Windows消息循环的原理,以为就可以搞定一切类似问题了…但是请看以下代码 DWORD CTestMFCDlg::ThreadFunc(PVOID yy){CAboutDlg dlg;dlg.DoModal()转载 2016-11-03 08:58:27 · 1524 阅读 · 0 评论 -
MFC消息映射机制详解
Windows程序和MFC程序是靠消息驱动的,他们对于消息的处理本质上是相同的。只是Windows程序对于消息处理的过程十分清晰明了,MFC程序则掩盖了消息处理的过程,以消息映射的方式呈现在开发者面前,使得开发消息的处理十分简单。用多了mfc就想对它的消息映射机制有一个本质的了解,下面将对消息映射做详细的分析。当然,在分析MFC消息映射之前首先对Windows程序的消息处理过程进行一个简单的描述。转载 2016-11-08 14:21:12 · 715 阅读 · 0 评论 -
MFC深度剖析消息反射机制
深度剖析消息反射机制作者:hustli 摘要:在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射。本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正。 什么是消息反射? 在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTL转载 2016-11-08 14:24:26 · 539 阅读 · 0 评论 -
正被停用的激活上下文不是最近激活的
突然遇到此种情况。调试了下,跳入的堆栈不对。或者无法打印出堆栈调用顺序如下所言,设置 : 调试 ----> 异常 ----> win32 exceptions ,勾选所有,一下子就能够定位到错误。打印堆栈调用转载 2017-06-20 11:30:42 · 1193 阅读 · 0 评论 -
C++多线程函数----AfxBeginThread
函数原型:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOIDpParam, intnPriority= THREAD_PRIORITY_NORMAL, UINTnStackSize= 0, DWORDdwCreateFlags= 0, LPSECURITY_ATTRIBUTESlpSecurityAttrs= N转载 2015-04-11 19:49:54 · 4403 阅读 · 1 评论 -
解决BCGControlbar中Ribbon界面主按钮一直显示File的问题
BCGControlbar生成Ribbon界面时,在左上角一直有个File按钮,不管怎么修改ribbon的配置文件,以及修改button的文本内容都无法修改,一直是File显示,研究了好久终于找到方法见下。我采用BCGControlbar生成Ribbon界面程序时,在左上角的主按钮上显示“FILE”,想改为“文件”,找了很久终于找到了,方法如下:打开BCGCBPro100.sln(原创 2017-08-10 23:23:44 · 1729 阅读 · 1 评论 -
BCGControlBarPro界面库静态链接方法
一、stdafx头文件#define COMPILE_MULTIMON_STUBS#include 二、stdafx.cpp#include 三、在资源视图的对话框上点击右键,选择“资源包括(L)”或者可以自己到*******.rc 文件代码视图中,自己手动修改1). 只读符号指令添加#include "bcgpro原创 2017-09-09 19:06:03 · 1986 阅读 · 0 评论 -
MFC下常用曲线控件
曲线控件我一直用codeproject上的那几个:1、功能最强大,但是很多bug,需要自己修改,目前用的这个http://www.codeproject.com/Articles/1993/Scientific-charting-control2、最稳定,功能也能满足大部分需求,已维护7年http://www.codeproject.com/Articles/14075/H转载 2017-11-15 00:55:20 · 3804 阅读 · 1 评论 -
libcef 最新下载地址
原来的网站好像无法访问了(https://www.cefbuilds.com/)https://bitbucket.org/chromiumembedded/cef/overviehttp://opensource.spotify.com/cefbuilds/index.html原创 2017-11-15 17:56:18 · 3270 阅读 · 0 评论 -
动态创建CMFCToolbar并添加按钮
最近遇到一个问题,需要动态的从xml文件读取一系列图标文件,加载到一个toolbar中,由于使用的是vs2008 with sp1 feature pack,自然想到用CMFCToolbar来做,思路也很简单1、将图标文件加入CMFCToolBarImages。2、设置CMFCToolbar::SetUserImages为第1步中的CMFCToolBarImages。3、继承CMFCT转载 2017-11-16 02:55:16 · 8714 阅读 · 0 评论 -
CWebBrowser2不写缓存,不读缓存,不写历史记录的方法
VARIANT flag; flag.vt = VT_I4; flag.iVal = navNoHistory + navNoReadFromCache + navNoWriteToCache; m_explorer.Navigate( _T(http://baidu.com, &flag, NULL, NULL, NULL );转载 2016-07-11 15:03:28 · 1150 阅读 · 0 评论 -
MFC的DLL库工程中使用CWebBrowser2控件
我在MFC的DLL工程中的一个dialog对话框中添加、调用CWebBrowser2的active控件时,发现动态创建dialog界面时一直会导致崩溃,dialog一直创建失败会,BOOL bCreate = m_mapDlg->Create(CMapDlg::IDD,this); 此调用会一直返回0。始终没找到原因,后来发现是我的工程在创建工程向导时,没有添加active控件支持导致的...原创 2016-07-11 09:18:53 · 2475 阅读 · 2 评论 -
MFC工程动态、静态编译以及MD、MDd、MT、MTd编译
一、问题的引出最近在VS2012中新建了一个MFC的工程,在自己电脑上运行很好,但是当拷贝到同学电脑上的时候一直出现“差dll”或者是“应用程序无法启动”的错误。后来找出原因,是自己编译的时候选择静态还是动态编译的问题。 解决办法1:让同学安装了VS2012,注意这里必须是和自己编译器相同的版本,比如是2013就不行。 解决办法2:在自己这边用静态编译,重新生成可执行文件即可。二、动态和静...转载 2018-12-16 02:58:02 · 2418 阅读 · 0 评论 -
VS下设置Macros宏快捷键
1、选中自定义添加按钮控件2、选中Macros重新排列命令3、选中添加按钮4、选中一条Macros宏指令添加进去5、对添加的按钮进行显示优化原创 2016-05-16 18:59:17 · 2718 阅读 · 0 评论 -
检查MFC程序的内存泄露
1、在stdafx.h头文件中添加两行代码//内存泄露检测#define _CRTDBG_MAP_ALLOC#include #include // 一般在入口函数一开始添加以下代码 _CrtDumpMemoryLeaks(); _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_转载 2017-03-07 17:37:15 · 1542 阅读 · 0 评论 -
加载png图片的两种方法 - GDI+和CImage
本文的方法可以加载bmp、jpg、png等多种格式的图片,只是在当前实际使用过程中,由于大多软件都使用带透明色的png图片,所以以加载png图片为研究切入点,找到对应的加载办法。主要使用两种方法:分别使用GDI+和CImage来加载。GDI+主要使用Image类;CImage则是微软在新版的VS中新增的MFC类,内部主要也是用GDI+来实现的。 1、Image加载图片 一般主要转载 2015-11-11 17:50:05 · 2298 阅读 · 0 评论 -
MFC鼠标动态位置提示框
用到了GDI+以及双缓冲绘图。代码下载:原创 2016-11-10 17:01:58 · 1755 阅读 · 1 评论