随笔分类 -  C++

C++11/C++14,mfc,C#,Direct2D,Log4cpp
摘要:控件讲了这么久,其实我的程序有两个Bug不知道大家有没有发现,这两个Bug都不会报错,对程序运行来说都没有阻碍,但是这种Bug对整个代码来说是一个很大的安全隐患。 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致 阅读全文
posted @ 2018-07-09 10:11 ye_ming 阅读(514) 评论(0) 推荐(0)
摘要:先在我们的选项卡可以说能用了,每个标签页都能点进去,但是这还远远没到能用的地步,比如说你把窗口最大化后。 立马就露出马脚了,所以这篇我们要先讲讲tabctrl的最基本的功能实现 改变选项卡大小 上图的原因就是主窗口在改变的大小的时候没有通知选项卡让他跟着主窗口一起变,所以我们现在通知选项卡一下 添加 阅读全文
posted @ 2018-07-07 16:18 ye_ming 阅读(1286) 评论(1) 推荐(0)
摘要:现在做出来的选项卡实在太丑的,咱们怎么把他弄得好看一点呢 tabctrl是可以添加icon图标的,那派生与tabctrl的mfctabctrl肯定也能添加图标,他们两个添加图标的原理一样,但是还是有点不同 首先给项目添加三个图标 然后在成员变量中添加ImageList对象,必须要添加在成员变量中,否 阅读全文
posted @ 2018-07-07 14:51 ye_ming 阅读(2855) 评论(0) 推荐(0)
摘要:CRect rect; GetClientRect(hWnd, rect); HDC hdc = GetDC(hWnd); HDC memDC = CreateCompatibleDC(hdc); BITMAPINFO bmi; bmi.bmiHeader.biSize = sizeof(BITMA 阅读全文
posted @ 2018-07-05 19:02 ye_ming 阅读(757) 评论(0) 推荐(0)
摘要:窗体创建完成,接下来我们讲讲控件的使用 首先在CFormView窗体下选项卡的成员变量,这里我选择MFC下的选项卡类库:CMFCTabCtrl 在初始化中动态创建选项卡并设置选项卡的样式,这里我们使用了Creat函数,他的原型是 第一个参数 Style style 是一个枚举类型,它定义了选项卡的样 阅读全文
posted @ 2018-07-05 13:47 ye_ming 阅读(1444) 评论(0) 推荐(0)
摘要:在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建 阅读全文
posted @ 2018-07-05 08:23 ye_ming 阅读(678) 评论(0) 推荐(0)
摘要:很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下可以简单的写程序。本文开始就跟大家分享一位同行前辈写的MFC核心机制分析(稍作整理),语言朴实易懂, 阅读全文
posted @ 2018-07-05 08:09 ye_ming 阅读(1297) 评论(0) 推荐(0)
摘要:现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现 阅读全文
posted @ 2018-07-04 18:05 ye_ming 阅读(332) 评论(0) 推荐(0)
摘要:在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2)两种排序方法中其中一种 这种方法不在需要数据绑定,只要确定你点击的表头的第几列就行,过程与第一种是 阅读全文
posted @ 2018-07-04 13:57 ye_ming 阅读(516) 评论(0) 推荐(0)
摘要:上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITEMCLICK 消息来获取点击表头的位置 2.设置结构体来存储排序信息,结构体信息主要有三个 (1)C 阅读全文
posted @ 2018-07-04 13:44 ye_ming 阅读(1039) 评论(0) 推荐(0)
摘要:点击表头排序整体的思路都是去 CListCtrl类中的方法SortItems去实现 CListCtrl::SortItems的原型是: BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData ); 第一个参数pfnCompare为回调函数,形式为: 阅读全文
posted @ 2018-07-04 13:21 ye_ming 阅读(657) 评论(0) 推荐(0)
摘要:响应消息 ON_NOTIFY(NM_CUSTOMDRAW, ListCtrl的ID, OnNMCustomdrawList) 实现函数OnNMCustomdrawList void CFinishWellToFind::OnNMCustomdrawList(NMHDR *pNMHDR, LRESUL 阅读全文
posted @ 2018-07-04 13:12 ye_ming 阅读(599) 评论(0) 推荐(0)
摘要:最近在刷stl源码剖析这本书时,对于vector的erase()函数引起了我的注意 在删除单个元素时是这样定义的: erase()将position+1后面的元素拷贝给了position,并将最后一个位置-1,那么删除后的vectors是不是一个新容器,书上没说,但是容器的长度变了,返回的指针还是p 阅读全文
posted @ 2018-04-18 10:57 ye_ming 阅读(855) 评论(0) 推荐(0)
摘要:#include "stdafx.h" #include "WINSOCK2.H" #pragma comment(lib,"WS2_32.lib") #define BUF_SIZE 64 //缓冲区大小 int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsd;//存储WSAStartup返回的数据windows socket数据。... 阅读全文
posted @ 2018-04-12 22:40 ye_ming 阅读(241) 评论(0) 推荐(0)
摘要:头文件 输出json 读取json Value & map= doc["map"]; Value & str= doc["字符串"]; Value & vector= doc["vector"]; Value & int= doc["int"]; //输出到map里 POINT targetPoin 阅读全文
posted @ 2018-04-11 19:12 ye_ming 阅读(203) 评论(0) 推荐(0)
摘要:#include //定义Stl字符串类型,自动调用对应的类型 #ifdef UNICODE #define StlString std::wstring #else #define StlString std::string #endif class PLSimLocale { public: PLSimLocale(); ~PLSimLocale(); stat... 阅读全文
posted @ 2018-04-11 18:06 ye_ming 阅读(432) 评论(0) 推荐(0)
摘要:下载地址 阅读全文
posted @ 2018-04-11 16:16 ye_ming 阅读(216) 评论(0) 推荐(0)
摘要:第一种实现 第二种实现 下载 阅读全文
posted @ 2018-04-11 15:59 ye_ming 阅读(430) 评论(0) 推荐(0)
摘要:vector转数组 由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可。如果仅仅是传参,无需任何操作,直接传地址即可,如果要进行数据复制,可以借用内存拷贝函数“memcpy”。例如: 阅读全文
posted @ 2018-03-13 14:43 ye_ming 阅读(637) 评论(0) 推荐(0)
摘要:D2D不仅可以绘制,还可以对多个几何图形对象进行空间运算。这功能应该在GIS界比较吃香。 这些计算包括: 合并几何对象,可以设置求交还是求并,CombineWithGeometry 边界,加宽边界,查询边界。Widen、GetBounds、GetWidenedBounds 几何对象填充的区域是否包含 阅读全文
posted @ 2018-03-06 11:24 ye_ming 阅读(338) 评论(0) 推荐(0)