
MFC基础
文章平均质量分 78
brk1985
这个作者很懒,什么都没留下…
展开
-
VS错误总结(部分)
1、问题1 1>fatal error C1900: “P1”(第“20080116”版)和“P2”(第“20070207”版)之间 Il 不匹配1>LINK : fatal error LNK1257: 代码生成失败 解决:安装VS2008 SP1.原创 2017-05-29 14:16:34 · 2656 阅读 · 0 评论 -
DirectUI 2D/3D 界面库集合 分析之总结
详细界面库列表见http://home.pacbell.net/atai/guitool/如何选择界面库产品易用性是否容易整合到现有应用程序中?是否容易在新的应用程序项目中应用?开发人员能否及时掌握并使用 产品稳定性是否有足够多的示例演示控件库各个方面的功能特性 是否有众多的成功案例 是否一直有持续更新 界面库高效性拖拽窗口,观察是否有明显的停顿转载 2016-03-05 00:44:36 · 1507 阅读 · 0 评论 -
SIP协议与视频监控
我们知道SIP协议,在VoIP中有着广泛的应用。其实,在视频监控中,它也有着重要作用。随着网络带宽、计算机处理能力和存储容量的迅速提高以及各种实用视频信息处理技术的出现,视频监控朝网络化、智能化方向不断发展。大型联网安全与视频监控平台在城市公安、交通、金融、环保、电力、医疗、教育、电信等管理部门对城市范围内的监控需求增长的同时也在这两年开始大量增加,其中尤其以城市公安和电信的需求最为突出。转载 2016-03-05 00:35:08 · 1811 阅读 · 0 评论 -
小技巧、小经验
1、支持ActiveX,调整IE浏览器安全级别REM ActiveX的注册表项REM 值 设置 REM ------------------------------ REM 0 我的电脑 REM 1 本地 Intranet 区域 REM 2 受信任的站点区域 REM 3 Internet 区域 REM 4原创 2015-07-22 18:06:39 · 820 阅读 · 0 评论 -
如何定位导致Crash的代码位置
1. 在开发环境下定位Crash错误 1.1 普通的crash 1.2 较难定位的crash 1.3 注意vc的输出日志2. 定位发布在外的版本的Crash错误3. 小技巧 3.1 根据程序地址找到代码位置 3.2 根据消息值查看对应的windows消息 3.3 查看GetLastError返回值 3.4 在代码中暂停程序4. 编程小警示转载 2015-12-29 16:37:33 · 1051 阅读 · 0 评论 -
socket编程的select模型
http://www.cnblogs.com/RascallySnake/archive/2013/07/11/3185071.html 在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个转载 2015-11-23 08:47:02 · 470 阅读 · 0 评论 -
GetLastError()返回值的意义
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效转载 2014-06-11 09:04:11 · 1275 阅读 · 0 评论 -
c语言结构体中的冒号的用法
结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允转载 2015-09-18 09:04:50 · 528 阅读 · 0 评论 -
Sip响应状态码功能对照详解
SIP应答消息状态码与类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 queue 排队181* session progress 会话进行会话成功(2XX) 200 OK 会话成功重定向(3XX) 300 multiple 多重选择30转载 2015-09-25 15:49:20 · 2656 阅读 · 0 评论 -
C++ 11智能指针之shared_ptr
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以像普通指转载 2015-08-27 11:01:33 · 713 阅读 · 0 评论 -
【mark】如何改变VC中控件间的TAB切换顺序
在VC中,首先控件没有TABINDEX属性;其次,如果你发现这可能是由resource.h中控件的ID值引起的。那么你就错了:因为无论你如何调整resource.h中控件的ID值,都对TAB键的切换顺序不能发生任何影响;那么,VC中的控件顺序是由什么决定的呢?该如何来修改呢?在你的工程文件和工作区文件所在目录下有一同名的资源文件(*.rc),其中包含了本工程所有转载 2015-07-29 15:37:10 · 621 阅读 · 0 评论 -
炫彩界面库v1.4.2-360安全卫士v8.5-UI设计器使用教程
炫彩界面库-UI设计器使用教程,该教程以360安全卫士为例.先上一张最终程序截图文件相对路径 -说明文件的相对路径为UI设计器的路径;例如在UI设计器目录中有个UI项目文件夹[MyProject], 在项目文件夹中有个图片文件夹[image],在图片文件夹中有个按钮图片[button.png],那么图片的相对路径为:MyProject\image\button.pn转载 2016-03-05 00:58:57 · 1806 阅读 · 0 评论 -
在Win32下用C++实现多线程读写锁
读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。 现在Win32的API转载 2014-01-18 15:31:38 · 857 阅读 · 0 评论 -
Windows XP下static控件文字显示为倾斜或是乱码的原因分析
维护公司一个代码,开发环境在win7下的VS2008,Win7下面好好的,到了winxp下面static控件文字显示为倾斜文字或是乱码。按理来说,windows是会做一些向下兼容的,却出现这么离奇的问题。一开始怀疑是style问题,用了ModifyStyle函数无效;继而怀疑控件的各个属性为TRUE的选项,更改后依然无效;没办法,只能注释掉无关代码,排查出出错范围,最后定位到I原创 2016-06-07 21:02:34 · 502 阅读 · 0 评论 -
Socket/TCP粘包、多包和少包, 断包 问题
为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整。为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? 带者问题,我们先分析一下问题。提到通信, 我们面临都通信协议,数据协议的选择。 通信协议我们可选择TCP/UDP:TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务转载 2013-12-12 23:27:30 · 1044 阅读 · 0 评论 -
同步/异步与阻塞/非阻塞的区别
我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的转载 2012-07-20 13:30:04 · 603 阅读 · 0 评论 -
FD_WRITE 消息机制
原作者: DREW SIKORA我本想把发送和接收分开作为两部分,但是最后我决定只略微解释一下 FD_READ ,留下更多的时间来说明更复杂的 FD_WRITE , FD_READ 事件非常容易掌握. 当有数据发送过来时, WinSock 会以 FD_READ 事件通知你, 对于每一个 FD_READ 事件, 你需要像下面这样调用 recv() :int bytes_recv =转载 2012-07-20 13:22:03 · 1015 阅读 · 0 评论 -
setsockopt的作用和用法
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:转载 2016-03-15 10:32:55 · 1749 阅读 · 0 评论 -
【IOCP学习】IOCP模型总结
IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销转载 2014-01-15 17:45:55 · 1029 阅读 · 0 评论 -
小技巧、小经验(2)
(1)、使用回调接口实现ActiveX控件和它的容器程序的通讯 http://blog.youkuaiyun.com/clever101/article/details/5649489原创 2015-12-24 09:38:51 · 556 阅读 · 0 评论 -
一则简单的Windows共享内存IPC代码
Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。//a.cpp#include #include #转载 2016-02-25 16:45:51 · 1345 阅读 · 1 评论 -
IOCP的线程池管理
一直很迷惑IOCP是怎么管理线程池的.还有就是GetQueuedCompletionStatus函数和线程池是什么关系,是GetQueuedCompletionStatus通过线程池的线程调用完成请求,还是先调用GetQueuedCompletionStatus得到请求在把请求交给线程池的线程完成的呢?当你创建一个了IOCP,并指定了能并发运行的线程数目(CPU*2).当完成的I/O项进入队列转载 2016-03-07 10:36:37 · 1526 阅读 · 0 评论 -
MFC消息映射机制
消息机制看了很多遍,每次看了忘,以下写的很好,转帖如下。消息映射可以说是mfc框架的精华部分,但就是一层窗户纸,捅不破,你就看不清楚里面是什么,但是只要你看到,伸手捅,你会觉得就这么简单。闲话少说。首先要问下你,对win32下编程是否清楚,win32下如果要创建一个窗口的步骤你了解吗?MFC窗口创建的步骤和win32创建窗口的步骤是相同的,而且,注意,是确定的。我先来说转载 2016-03-05 21:07:33 · 474 阅读 · 0 评论 -
线程间的通信
线程间的通信1.线程之间的通信简介一般而言,在一个应用程序中(即进程),一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务。如主线程和次线程,次线程与次线程,工作线程和用户界面线程等。这样,线程与线程间必定有一个信息传递的渠道。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的。线程间的通信涉及到4个问题:(1) 线程间如何传递信息(2) 线程转载 2016-03-05 20:55:46 · 445 阅读 · 0 评论 -
浅析error LNK2001: unresolved external symbol "public: __thiscall
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时, 编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unr转载 2015-04-29 20:38:49 · 8086 阅读 · 0 评论 -
【整理】MFC单文档程序窗口大小的设置
1、 要控制一个框架的的最大最小尺寸,需要做两件事情,在CFrameWnd的继承类中处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记 住要考虑工具条,卷动条等等的大小。 // 最大最小尺寸的象素点(具体根据实际需要设置) #define MINX 200 #define MINY 300原创 2015-04-09 17:25:20 · 6804 阅读 · 0 评论 -
CString的实现及其注意事项
1、使用strcpy函数,m_str无需初始化(用\0初始化),strcpy会把源字符串的\0也复制到目的字符串;2、析构函数中,要避免野指针问题,将m_str=NULL;3、操作符4、ostream类没有拷贝构造函数,无法调用,返回值不能用ostream,必须返回引用类型ostream&;类似的ofstream类等没有拷贝构造函数或者拷贝构造函数是私有的,一样原创 2015-03-26 14:19:35 · 733 阅读 · 0 评论 -
CHtmlView浏览器双击页面保存图片的初步实现
BOOL CSampleBrowerView::PreTranslateMessage(MSG* pMsg){ if (pMsg->message == WM_LBUTTONDBLCLK)//双击保存图片 { //OpenClipboard();//一、打开剪切板 //HANDLE hClipMemory=::GetClipboardData(CF_TEXT);//二、获得指向剪切板原创 2014-07-08 16:26:31 · 1381 阅读 · 0 评论 -
【记录】Visual Leak Detector配置简明步骤
1、2、在stdafx.h原创 2014-06-16 09:28:39 · 890 阅读 · 0 评论 -
CHtmlView中实时获取鼠标指针位置坐标
CHtmlView中在前面的《CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测》一文中演示了如何截获并响应超链接单击事件。用类似的方法还可以在 VC++ 中处理很多其他的网页事件,例如实时的在状态栏上显示鼠标正在指向的网页元素或鼠标指针相对于网页原点的位置。这次需要响应的是 DISPID_HTMLELEMENTEVENTS2_ONMOUSEMO转载 2014-07-03 17:24:03 · 1362 阅读 · 0 评论 -
【整理】 vs2010几个有效的设置技巧
1、vs2010有一个IntelliSense的技术,而且会自动对程序进行扫描,很浪费资源===================================转载 2014-06-10 10:05:32 · 924 阅读 · 0 评论 -
win32串口同步编程、异步编程(重叠IO)
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使转载 2014-06-04 14:57:26 · 3450 阅读 · 0 评论 -
(记录)vs2010中的MSBuild输出warning MSB8012问题
VC6.0工程转换为VS2010工程时,出现以上问题:解决方法:原创 2014-04-10 16:03:06 · 1119 阅读 · 0 评论 -
“XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
CxxxDlg *pDlg = (CxxxDlg*)AfxGetMainWnd();定时器回调函数中pDlg调用类成员变量和成员函数时出现以上错误。经观察pDlg为空指针,确实意想不到。 解决方法:设置全局变量CxxxDlg* g_pDlg = NULL;并且在OnInitDialog函数中添加把this指针赋予该对话框指针,此时g_pDlg不为空,可以通过g_pDlg访问类成员变原创 2014-03-27 09:31:26 · 6222 阅读 · 0 评论 -
WindowsSocket编程要注意的事情
WindowsSocket编程注意以下几点!////////////////////////////////////////////////////////////////////////1. 如果在已经处于ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:转载 2014-04-03 14:22:49 · 860 阅读 · 0 评论 -
【整理】重叠IO模型的编程思路及C++源代码
编程步骤1、创建一个套接字,开始在指定的端口上监听连接请求。2、接收一个入站的连接请求。3、为接受的套接字创建新的WSAOVERLAPPED结构,并分配事件对象句柄。4、以WSAOVERLAPPED结构为参数,在套接字上投递WSARecv调用。5、将所有接受套接字的事件组建事件数组,并调用WSAWaitForMultipleEvents函数,等待与重叠调用关联在一起的事件受信。转载 2014-01-24 16:08:11 · 1137 阅读 · 0 评论 -
消息处理机制:CCmdTarget 和 消息映射表
MFC的消息处理机制由两部分组成:CCmdTarget类和消息映射表。 窗口消息构成所有的窗口消息由3部分组成UINT Msg, WPARAM wParam, LPARAM lParam 为神马不用虚函数来处理消息?因为,虚函数是使用类的虚函数表实现的,每个派生类都会带一个虚函数表的拷贝。虚函数表中的每个入口都是一个4字节指针,这样每个类对象就会在虚函数表转载 2014-03-07 16:37:43 · 736 阅读 · 0 评论 -
OnCtrlColor,OnDrawItem,DrawItem,OnPaint之间关系
我在学习中经常遇到要重写DrawItem()的情况,但又有一个WM_DRAWITEM消息,它们是什么样的关系呢。如果我们要重写一个CButton取名为CMyButton,我们可以重写CMyButton的DrawItem()函数来实现我们的需求,但CMyButton::DrawItem()是在什么时候调用呢?它是在它的宿主类的OnDrawItem()中被调用,OnDrawItem(int转载 2014-03-11 13:57:05 · 2270 阅读 · 1 评论 -
智能指针CComPtr用法
COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello * pHello ){IHello*转载 2014-07-08 11:22:43 · 698 阅读 · 0 评论 -
vc2008构建和使用libcurl静态库
1>下载CURL源代码curl-7.26.0.zip 2>用VC2008/2005打开工程curl-7.26.0\lib\libcurl.vcproj,转换下工程并构建,可以直接编译成功!3>新建个控制台工程测试下刚才编译的静态库libcurl.lib,可以在libcurl\curl-7.26.0\docs\examples目录找个简单的使用curl的例子,在这个工程选项Configura转载 2014-07-11 13:10:34 · 819 阅读 · 0 评论