MFC
文章平均质量分 59
洗洗睡去
这个作者很懒,什么都没留下…
展开
-
libqrencode库编译及使用
libqrencode库libqrencode是一个日本人写的生成二维码的可以跨平台的c库,官网是这里,Github在这里。 在C++里当然也是可以使用的,但问题是官网上没仔细说明怎么使用这个库,花了几个小时研究了下,记录下来。平台WIN10 + VS15 + MFC dialog步骤从官网或者Github上fork下源代码VS里新建一个项目QRtest,对话框模式,选择在静态库中使用MFC原创 2016-11-06 11:22:26 · 17431 阅读 · 15 评论 -
CMFCControlRendererInfo类的参数
CMFCControlRendererInfo类是MS的一个私有类,msdn说不要用户直接调用,但我直接用了也没什么问题。渲染的效果还不错。记录它的7个参数及用法// first parameter is resource string ID of the image // second parameter is the default transparent color // third p原创 2015-01-05 09:30:35 · 972 阅读 · 0 评论 -
CMFCListCtrl控件使用
CMFCListCtrl是MS从CListCtrl派生出来的新类,灵活性上有所进步,特别是改变行列颜色、改变字体,不用像CListCtrl很多步骤,要处理很复杂的数据结构。现在记录下,先看效果图用类向导从CMFCListCtrl派生出CMyListCtrl类;声明虚函数virtual COLORREF OnGetCellTextColor(int nRow, int nColum);原创 2015-01-01 18:59:19 · 6365 阅读 · 1 评论 -
CMFCPropertySheet和CMFCPropertyPage增强用法
介绍CMFCPropertySheet和CMFCPropertyPage都是vs08sp1以后引入的新类,扩充了已有的CPropertySheet和CPropertyPage这两个类。CMFCPropertySheet和CMFCPropertyPage的基础用法可以参考下面几篇文章 Visual C++2010中CMFCPropertySheet的用法 CMFCPropertyShe原创 2015-11-21 23:02:16 · 5348 阅读 · 0 评论 -
高精度计时器类
由来今天测试GDI、Direct2D绘图性能时,发现GetTickCount()函数的精度只有15ms左右,而绘制10000个随机点线段所需时间大概也为几十ms,误差比较大,找了下原来有更高精度(1ms)的多媒体定时器可以调用,因此记录下来。测试平台 Win10 x64 VS 2010 32位对话框工程代码class HClock{public: HClock();原创 2015-10-15 14:45:08 · 980 阅读 · 0 评论 -
MFC+Direct2D简化坐标缩放
背景问题由来在参考1这篇文章里写了GDI下坐标缩放的情况,这里记录下再Direct2D绘图引擎下的缩放操作。环境配置参考文章2几个概念参考上一篇文章的说明配图 实现功能 1.所有图形初始缩放在默认视图框架内 2.(0,0)位置位于视图左下角 3.可以从屏幕坐标反推出原始数据坐标 4.使用Direct2D技术,在保持抗锯齿效果的同时,绘图效率和GDI差不多思路及代码流程图原创 2015-10-22 10:55:12 · 3022 阅读 · 0 评论 -
MFC+GDI简化坐标缩放
画图经常会有负坐标或者很大数值的坐标(地图),在处理的时候需要清楚DC的各种视口的意义按照自己的想法来个简单的解决方案。原创 2015-08-15 20:42:23 · 4872 阅读 · 0 评论 -
Direct2D+MFC学习笔记
Direct2D 学习,包含环境配置及MFC画图原创 2015-09-08 15:13:06 · 6549 阅读 · 2 评论 -
按分隔符分割字符串函数
引子之前写的一篇博客非常好用的MFC隐藏函数 取字符串的任意分隔符子串提到了分割字符串的函数 AfxExtractSubString这个函数每次只能按一种分隔符分割字符串(比如每次只能按空格或者逗号或者tab来分割),下面列出一个可以同时按任意分隔符(比如字符串里同时由逗号空格或tab)分割字符串的函数(注意如果有多个分隔符直接相连,输出可以为空或指定的nullSubst)代码 /*原创 2015-09-29 15:16:19 · 3994 阅读 · 0 评论 -
mapnik的demo运行
mapnik的demo运行mapnik是一个非常优秀的开源地图渲染库,OSM底层用的就是这个库。该库在github上的地址在这里。 这个库的安装编译都比较复杂,具体看这里。官方给的安装里要安装Python,而且要用Python去运行命令,虽然Python很简单,但还是强迫症的想用纯净的c++来运行。这个地址介绍了怎么运行c++的demo。注意这个地址需要自备梯子才能访问。 不过上面的页面内容不完原创 2015-05-07 10:35:01 · 2011 阅读 · 0 评论 -
VS08SP1中CMFCPropertyGridCtrl的基本用法
在DLG中的基本应用 。首先在Cxxdlg.h文件中加入public: CMFCPropertyGridCtrl m_MFCPGCtrl; CMFCPropertyGridProperty* pGroup1; CMFCPropertyGridProperty* pGroup2; 然后Cxxdlg.cpp中的OnInitDialog()中CRect rc; Ge...原创 2010-06-08 14:18:00 · 12388 阅读 · 24 评论 -
从零起步CMFCToolBar用法详解
CMFCToolBar是vs08sp1以后引入的新的工具栏控件,和Ribbon主题结合的很好,不同与CToolBar,它是从CPane派生出来的,用法跟CToolbar 有一些不同,研究了几天,记录在下面。 首先给出工具栏四种状态图标BMP文件,这4个文件分别为图标按钮的Cold、Hot、Disabled、Enabled状态,资源是从VS的MSMoney这个Demo里考出来的,每个按钮大小...原创 2014-12-19 15:06:51 · 18836 阅读 · 4 评论 -
CMFCRibbonBar及其他Ribbon类的使用
在VS2008 SP1中有很炫的类似OFFICE07的Ribbon主题“菜单”,研究了2天,总结下。参考资料:msdn视频:微软的1 2 基本资源和类如图:继承图为:图中标注的是常用的几个类 用法:1 接着添加CMFCRibbonBar.h中声明CMFCRibbonBar m_wndRibbonBar;.cpp中...原创 2010-08-13 18:18:00 · 12853 阅读 · 13 评论 -
在SDI单文档视图中使用cmfctooltips
由来在一个项目里,需要随时跟踪鼠标位置的坐标值,当然可以在状态栏里显示,也可以用tooltips的方式来显示,一般在tooltips一般在对话框里用, 这里记录下在单文档视图里的使用平台Win10 64bit VS2015 MFC SDI/MDI效果主要原理从CMFCToolTipCtrl派生出子类CCustomToolTipCtrl自绘代码class CCustomToolTipCtrl :原创 2016-03-10 19:32:54 · 883 阅读 · 0 评论 -
用Direct2D和DWM来做简单的动画效果2
在上一篇文章用Direct2D和DWM来做简单的动画效果 里写了很简单的一个例子,这个例子是MS官方的例子,那么这篇根据官方的思路自己修改修改效果做了绕圆盘旋转的指针样的动画,从圆心指向圆弧。见图 核心流程总结下MS这个例子核心-由DWM计算实时路径位置部分的流程 其中, A部分由Animation类的派生类设定,即SetStart(),SetEnd(),SetDuration()。原创 2016-03-21 14:40:06 · 2036 阅读 · 0 评论 -
用Direct2D和DWM来做简单的动画效果
0.由来画流程图的时候需要根据数据画出每帧流场图制作出“动画”,而在Win7以上平台,Direct2D和IUAnimation结合可以做出很流畅的动画来。1.一个简单例子先看看效果 这个例子是根据MS官方的一个Win32例子改在MFC对话框下实现的。这里基本没有用到IUAnimation类,而是用了DWM。下面贴代码2.流程a.初始化D2D相关类,初始化DWM对象 b.构造D2D绘图对象 c.原创 2016-03-19 19:36:52 · 4170 阅读 · 0 评论 -
较大数据文件的读取优化过程
问题由来1.解析一个体积较大(50MB,约50w行)的数据文件时,遇到了读取、解析花费的时间较长(debug下20+s,release下3s)速度较慢的问题。 2.用UE或者everedit等编辑软件打开这种文件基本上只要0.5s不到的时间。 因此尝试优化代码,提高效率,这里记录下过程。测试平台环境 win10x64 + VS2015 文件格式数据文件分为三段: 第一段 2300原创 2016-01-13 14:32:35 · 7225 阅读 · 0 评论 -
MFC+Direct2D以屏幕中心为中心缩放的实现
MFC+Direct2D简化坐标缩放中记录了以坐标原点为基准点的坐标缩放的原理和过程,但在实际中,很多软件的缩放时以屏幕中心为缩放点的,比如各种地图,以及各种计算软件生成的矢量图原创 2016-01-04 14:29:56 · 2447 阅读 · 0 评论 -
一个色谱的实现
色谱图的实现原创 2015-12-30 11:28:31 · 1642 阅读 · 0 评论 -
CMFCRibbonStatusBar用法
CMFCRibbonStatusBar用法还是比较简单的,声明变量之后,早OnCreate里写if (!m_wndStatusBar.Create(this)) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } m_wndStatusBar.AddElement(new CMF原创 2014-12-30 09:55:56 · 2959 阅读 · 0 评论 -
CMFCShellListCtrl使用方法
CMFCShellListCtrl是个很有用的新类,用它可以直接构造出文件/文件夹选择页面,先看看结果图1.替换中文列名并改变列宽及居中显示CMFCShellListCtrl创建出来的时候默认列名是英文的,这样改成中文:从CMFCShellListCtrl派生出自定义类class CMyShelistCtrl : public CMFCShellListCtrl原创 2015-03-28 16:36:45 · 8179 阅读 · 1 评论 -
CMFCToolTipCtrl 应用详解
CMFCToolTipCtrl使用详解原创 2015-06-28 15:33:34 · 1849 阅读 · 0 评论 -
MFC下支持中文的SQLite3封装类使用
SQLite是个非常不错的轻量级开源数据库,完全0配置。原创 2014-09-03 22:16:17 · 5858 阅读 · 24 评论 -
List Control里插入ICO图标及行背景色交替改变
<br /><br />很多网上的文章 都没仔细说怎么插入ico <br />今天摸索了下 果然还是很简单的 要用到LVITEM这个结构体,就是具体的项<br />首先是资源里添加ico 然后.h文件里写全局变量<br />CImageList m_ImageList;<br /> <br />然后cpp代码里<br />m_ImageList.Create(32,32, ILC_COLOR32, 2,2); //貌似32位的不会有黑色的阴影<br /> m_ImageList.Add(Afx原创 2010-07-01 20:38:00 · 4945 阅读 · 0 评论 -
非常好用的MFC隐藏函数 取字符串的任意分隔符子串
CString str = "123,-456(/t)7.89"; CString output = ""; 则 AfxExtractSubString(output, str, 0, ,); //123AfxExtractSubString(output, str, 1, ,); //-456 AfxExtractSubString(output, str, 2, /原创 2010-05-11 14:52:00 · 1286 阅读 · 0 评论 -
运算符重载中可能的深拷贝问题
一般情况来说 在类中 系统会自动提供一个默认的拷贝构造函数来处理复制,但在某写状况下,类体内的成员是需要动态开辟堆内存的,如果我们不自定义拷贝构造函数而让系统自己处理,那么就会导致堆内存的所属权产生混乱,已经开辟的一端堆地址原来是属于对象a的,由于复制过程发生,b对象取得是a已经开辟的堆地址,一旦程序产生析构,释放堆的时候,计算机是不可能清楚这段地址是真正属于谁的,当连续发生两次析构的时候就出现了原创 2010-05-15 14:40:00 · 729 阅读 · 0 评论 -
vc平台下的简单PID实现
小弟最近在搞pid,搜了下网络上的,感觉都是很原始的c代码 甚至伪代码,而已运算过程也比较繁琐,于是花了1周时间写了这个pid的实现。为了清晰明了,直接使用了状态空间模型,设定系统矩阵、控制矩阵、观测矩阵,通过矩阵运算直接计算结果。暂时只是实现了基本的pid,算法都是基本算法,高级的一概没加。站内下载在这里没积分的 可以在http://115.com/file/bhdo56d原创 2010-05-28 18:51:00 · 2313 阅读 · 1 评论 -
MFC里调用PCL-725
项目使用研华的IO卡PCL-725,找了一会方法,现记录如下环境:xp sp3 + vs2008 sp1项目架构:SDI (对话框的也测试过)======================================================1、将研华给的头文件及lib库文件添加到工程文件夹里。本站下载在这里2、工程.h文件里包含头文件#include "Driver.原创 2013-06-21 17:21:05 · 1962 阅读 · 0 评论 -
枚举系统的串口
项目里 要枚举出系统的串口,查了下,注册表比较麻烦,用这个方法最方便。原代码出处在这里。UNICODE下代码在这里头文件包含#include "EnumSerial.h"同时项目里添加setupapi.lib.h文件里添加 int m_nSerialPortNum; // 串口计数 CString m_sSerialList[12]; // 字符串组 CArray asi; //原创 2013-06-25 10:20:58 · 2040 阅读 · 0 评论 -
控件改变字体
MFC里太多控件需要改变字体,特记录下.h里CFont m_font;.cpp m_font.CreateFont(15,0,0,0,FW_DONTCARE,FALSE,FALSE,0, 1, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_SWISS, _原创 2013-09-04 15:20:38 · 826 阅读 · 0 评论 -
SDI中pDoc获得pView方法
以前一直通过pMainWnd中转 其实可以写个函数调用 .hCView* GetView(CRuntimeClass* pClass);.cppCView* CxxxDoc::GetView(CRuntimeClass* pClass){ CView* pView; POSITION pos = GetFirstViewPosition(); while(pos != N原创 2013-09-09 15:08:17 · 1193 阅读 · 2 评论 -
多线程程序退出内存句柄泄漏的问题以及解决方法
程序里主线程进行界面的维护,工作者线程后台进行串口的通讯,每次通讯历时700ms,主程序关闭时经常会提示68K内存泄漏或者句柄泄漏,一查,原因在于主程序关闭资源释放之后,线程仍在工作。主要参考这篇文章。解决方法是:1、线程里的通讯死循环改造为用标志位判断;2、主程序关闭的时候设置这个标志位为FLASE;3、线程里return0之前设置事件;4、主线程关闭前用WaitForSin原创 2013-10-11 10:18:38 · 2182 阅读 · 0 评论 -
将ribbon主题应用到对话框中去(转载)
原帖地址:这里找了N久,终于在无幻大神这里找到了将ribbon sdi主题应用到对话框程序中的方法,好像这是一个开源的项目,google code里有。记录下:1、下载网页里的资源KofPack0.1,vs里打开工程文件KofFeaturePack;2、菜单生成-批生成-全部选中-确定3、将文件夹下lib include文件夹拷贝到自己的工程目录下,注意是在工程文件sln那个层次转载 2013-10-23 20:54:05 · 2676 阅读 · 1 评论 -
SDI多视图结构中视图间获取指针
可以在从CView类派生出的CMyView1 ,CMyView2添加成员函数/*------------------------------------------------------------------------------* 函数名: GetView* 功能: 获取视图指针* BY: Kevin* 输入参数: 要指向视图的指针 C原创 2010-05-11 14:46:00 · 656 阅读 · 0 评论 -
SDI中任意切分窗口
终于搞定切分窗口了 原来sdi结构没想象中那复杂……用好了 很简单,以下视图结构为,先切分2行1列,再在第2行中切1行2列------CChartView-----------------------CGridView----- CListView先在CMainFrame类中添加变量CSplitterWnd m_wndSplitter;CSplitterWnd m_wndSp原创 2010-05-11 14:44:00 · 808 阅读 · 0 评论 -
ini文件操作类 CiniFile
原版地址在这里.应用的时候要将cinifile.h文件里的#include #include #include #include 这几个头文件放到stdafx.h里去。同时在 cinifile.cpp里添加#include "stdafx.h"#include "inifile.h"操作很简单: CString fileToSave = _T("De原创 2010-05-10 18:32:00 · 4065 阅读 · 1 评论 -
chart控件的简单使用
看到很多人在论坛求助 毕业设计或者其他课题中的图表应用,最简单的就是mschart 但它有很多缺点 网上教程一大把 这里说下codeproject上的 HiSpeedChart控件 用起来也是很简单的。源地址在这里http://www.codeproject.com/KB/miscctrl/High-speedCharting.aspx 以对话框应用为例1添加.h ...原创 2010-06-10 17:07:00 · 28873 阅读 · 5 评论 -
CFolderDialog,CFolderPickerDialog选择文件夹及获得当前程序路径
CFolderDialog是从CCommonDialog类派生而来,在选择文件夹时非常好用,使用也很简单,下载地址在这里,原地址在这里 只要.h和.cpp放入工程中,并且在头文件里加#include "FolderDlg.h"就可以了。在要弹出文件夹选择的地方 CString FoldPath;//可以自己指定文件夹路径如_T(“C://down”)CString m_st...原创 2010-05-11 14:54:00 · 10755 阅读 · 4 评论 -
libxl库读取excel03 07文件
原创介绍这里,精简的代码和库在这里此处记录下怎么导入到工程里去。1、解压缩文件夹之后将include和lib文件夹放在工程目录里。2、vs的工程里导入inlcude里的头文件。3、vs的Project -> Properties -> Linker -> General -> Additional Library Directories里导入lib的位置。...原创 2013-08-16 10:09:07 · 6934 阅读 · 7 评论 -
UNICODE环境下增强型CStdioFileEx
由于行结尾标识符不同,UNICODE下中文读取用CstdioFile时,经常有乱码出现。有个高手写了个增强型的类 地址在这里原创 2010-05-10 18:31:00 · 1281 阅读 · 0 评论