QT&MFC
文章平均质量分 86
QT、MFC相关使用笔记
春夜喜雨
好雨知时节.当春乃发生.
展开
-
基于要素(标题、父、类型、进程、控件id)获取windows窗口
当我们使用spy++查看窗体的信息时,会看到许多窗体的要素信息,其中比较典型的如下几个: 参考父窗体 参考标题 参考类名称 参考ProcID 参考控件ID原创 2017-08-17 20:42:14 · 1426 阅读 · 0 评论 -
Windows线程异常捕捉
在Windows中,__try, __excetpt是在Windows程序中提供的SHE异常处理的机制。在__except的函数参数取值有三类:最常用的是EXCEPTION_EXECUTE_HANDLER (1)原创 2016-08-23 21:28:49 · 1413 阅读 · 0 评论 -
Mutex使用样例
例如下面创建一个Mutexstatic HANDLE hMutex = CreateMutexA(NULL, FALSE, "changeNumValue");原创 2016-08-09 19:53:52 · 566 阅读 · 0 评论 -
矢量字体和像素字体
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)查看windows/fonts下的字体的话,看到黑体的说明如下字体名称: 黑体版本: Version 5.01Open Type Layout, 已数字签名, TrueType Outlinesabcdefghijklmnopqrstuvwxyz原创 2015-06-24 21:57:04 · 4739 阅读 · 0 评论 -
WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发
WM_MOUSEHOVER和WM_MOUSELEAVE消息,可以用来实现,当鼠标放在/离开某个窗体或窗体组件一段时间时,触发一系列的操作原创 2015-06-04 12:55:02 · 2355 阅读 · 0 评论 -
CImage封装gdiplus的初始化和引用计数
CImage内部封装了一个变量 static CInitGDIPlus s_initGDIPlus; 该变量实现了对gdiplus的初始化和销毁,基于引用计数的方式,实现了多个CImage实例的共享gdiplus的生命周期。 class CInitGDIPlus{public: CInitGDIPlus() throw();原创 2015-06-04 12:52:28 · 1559 阅读 · 0 评论 -
CString是否使用了引用计数
问题: CString是否使用了引用计数?答案是肯定的。平常使用的时候确实没有查觉这方面,包括我们可以把CString强制转为TCAHR*来使用,效果也都正常。CString强制转为TCAHR*为什么能正常,原因是什么呢?原创 2015-05-21 21:43:28 · 2691 阅读 · 0 评论 -
MFC同步和异步消息
MFC消息函数中: SendMessage/PostMessage: 同步消息函数GetMessage/PeekMessage: In Message Queue 异步消息函数原创 2015-03-04 11:35:28 · 2734 阅读 · 0 评论 -
同一个dll被多个进程使用的数据共享(Data_seg)
同一个dll被多个进程使用的时候,在大多数情况下,各个进程使用dll和独自使用dll效果是相同的。 因为对于dll中的局部变量是写入到进程的堆栈中的,全局变量也被操作系统为每个线程copy一份各自使用。 you can use either of the following approaches: · Create named data sections using the data_seg pragma. · Use memory mapped files. See t原创 2015-01-21 17:44:26 · 5647 阅读 · 0 评论 -
把dll打包到程序中并在执行时释放
把dll作为资源放到程序中,运行时释放出来,原创 2015-01-21 17:41:32 · 2875 阅读 · 0 评论 -
std::vector传递dll参数异常-长度超限
如果你调用dll中的函数,使用了vector传递参数时,报错“vector的size异常,长度超限” 代码位置 “_THROW(length_error, "vector<T> too long")”。那么有可能你也遇到了vector的debug版与release版不匹配问题。原创 2015-01-06 12:51:35 · 5930 阅读 · 9 评论 -
[MFC]ListCtrl的扩展用法
ListCtrl的扩展用法1. ListCtrl首列置为checkbox2. 列排序3. 某列绘制成图片原创 2014-12-05 15:55:18 · 2223 阅读 · 0 评论 -
[MFC]几个用户目录的获取
在window7中,进入命令行cmd模式,输入set到多个系统目录定义:例如: Win7下:APPDATA=c:\users\xxx\AppData\RoamingLOCALAPPDATA=c:\users\xxx\AppData\Local原创 2014-11-12 06:52:44 · 3918 阅读 · 0 评论 -
[MFC]图形附加alpha透明通道
修改图形并且附加透明通道:要附加透明度,可以要把图片转化为32位png图片,然后设置相应的alpha值:1. 如何把一张图片修改为32位的Png:a) 读取原图片颜色信息b) 创建一张32位并且带透明的位图...原创 2014-11-12 06:49:10 · 1880 阅读 · 0 评论 -
[MFC]透明图展示
一般我们可见的图形RGB三元色,对Alpha通道的话,它不一定会显示到窗体中来。在Windows窗体中要展示一张透明图相对还是比较困难的,1. 例如像windows查看器那样,使透明像素显示查看器底色(近似白色),但对于半透明的图片显示起来效果不是特别好。2. 例如像photoshop那样,使用一张斑点的底图,对于全透明示,显示底图,半透明时和底图颜色混合。原创 2014-11-12 06:43:08 · 1798 阅读 · 0 评论 -
Windows文件名长度限制
win7x64位环境:260个长度是作为总的文件名长度限制。例如: 所在文件夹的长度为50则文件名的长度被限制在210之下,超出的话会被进行截断。如果在程序中的话,超出长度的话MoveFile/CopyFile会返回错误,处理失败。例子: 1. 我手动在C:\建立一个文件,使用280个长度进行重命名,实际生成的却是文件名是256个原创 2014-10-22 08:30:08 · 42125 阅读 · 5 评论 -
[MFC]自定义时间间隔Timer
需求: 对某项的处理,需要每隔一段时间处理一次。其它时间不处理。例如: ffmpeg视频播放的时候,25 TPS时,40ms播放一桢。 实现: 通过该类,可以设置一个定时器,每n毫秒,返回一次true,用于间隔执行。例如: ffmpeg视频播放的时候,可以设置这个Timer,每40ms播放一桢。每毫秒检测一次,从而比较精确的播放每一帧。 当然了,也可使用MFC定时器来主原创 2014-10-22 08:26:15 · 2532 阅读 · 0 评论 -
MFC加载HCURSOR/HICON/HBITMAP
加载HCURSOR/HICON/HBITMAP在Windows系统API中提供了函数LoadCursorLoadBitmapLoadIcon原创 2014-09-22 20:44:59 · 2437 阅读 · 0 评论 -
MFC抓取鼠标所在窗口HWND
1. 通过API: WindowFromPoint可以抓取指定位置的HWND:hWnd = ::WindowFromPoint(pt);原创 2014-09-22 20:42:31 · 3026 阅读 · 0 评论 -
MFC获取鼠标图片大小
获取当前鼠标图片的过程:1. 首先获取当前HRCURSOR GetCursor()2. 然后查询HCURSOR信息,获取对应的HBITMAP信息 GetIconInfo()3. 查询HBITMAP的BITMAP信息 GetBitmap()原创 2014-09-20 21:50:55 · 1659 阅读 · 0 评论 -
MFC绘图总结-DIB图形绘制
绘制DIB图到到设备,明确一点,DIB设备无关图形向设备CDC上绘的话,肯定是需要经过图形pixel像素转换的,要转换成设备的颜色像素格式...原创 2014-09-18 13:03:07 · 2798 阅读 · 1 评论 -
MFC绘图总结-屏幕截屏,获取DIB/DDB图形Pixel
对当前屏幕Copy,需要获取当前屏幕的HDC,一种是直接从屏幕DC抓原始图。一种是然后使用兼容MemDC进行抓图,然后可以附加图形的相关处理,如调整大小,如把鼠标绘制上去等。...原创 2014-09-18 12:58:31 · 2535 阅读 · 0 评论 -
多线程调试时Sleep位置异常崩溃
今天调试一个dll,这个dll里面创建了一个线程CWinThread:原创 2014-09-17 20:21:43 · 3509 阅读 · 0 评论 -
Win内存分配函数(GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc)
对于Windows来说,提供了一些API接口进行Heap内存管理,是独立于C++/C程序之外的,仅用于Windows平台的API。GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc原创 2014-09-16 21:00:45 · 4380 阅读 · 0 评论 -
MFC的CImage图形处理
CImage支持的图片格式有很多,像通常用的jpg, png, bmp,gif等都支持的不错。按照我们常用的图片处理需求,一般是:图片加载、图片指定到控件、图片绘制、图片修改、图片转换、(图片创建)原创 2014-09-14 21:02:00 · 9395 阅读 · 0 评论 -
浮点数NaN和INF(#IND, #INF)
NaN&INF定义在一些情况会出现无效的浮点数,例如除0,例如负数求平方根等,像这类情况,获取到的浮点数的值是无效的。NaN 即 Not a Number 非数字INF 即 Infinite 无穷大原创 2014-09-10 12:46:55 · 20444 阅读 · 0 评论 -
笔记-MFC更换鼠标图片
更换鼠标图片更换鼠标图片需要:1. 首先把鼠标的图片资源ICON导入到工程中,例如ID使用IDC_CURSOR12. 加载图标原创 2014-07-25 17:27:06 · 1431 阅读 · 0 评论 -
笔记-Socket通信-基本操作(启动/连接/发送/关闭)
Socket通信-基本操作a) 端口服务启动 // 初始化Socket m_socketServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(m_socketServer ==INVALID_SOCKET) { AfxMessag原创 2014-07-25 17:24:35 · 1151 阅读 · 0 评论 -
Windows下时间精度
Windows下时间精度Windows为非实时系统,它的Timer通常精度不是很高,下面是常用的Timer设置处理常用的时间精度1. SetTimer/OnTimer根据MSDN中的定义,可以知道,最下值是参考宏USER_TIMER_MINIMUM.If uElapse is less than USER_TIMER_MINIMUM, the timeout i原创 2014-07-25 17:17:59 · 3618 阅读 · 0 评论 -
CToolbar的按钮启用与禁用(enable/disable)
禁用某个Toolbar中的按钮,例如ID为 IDC_BUTTON_ADD,Toolbar对像为m_wndToolBar,设置fsState为TBSTATE_INDETERMINATE。原创 2014-07-25 17:08:46 · 4173 阅读 · 0 评论 -
转载-CToolBar元素添加Tooltips
转载来源: http://www.ucancode.net/Visual_C_Source_Code/Tooltips-CToolBar-EnableToolTips-CBRS_ALIGN_ANY-CBRS_TOOLTIPS-CBRS_FLYBY-_countof.htm#转载 2014-07-17 18:26:28 · 1204 阅读 · 0 评论 -
转载:《Win32多线程程序设计》学习笔记 第10章 MFC 中的线程
《Win32多线程程序设计》学习笔记 第10章 MFC 中的线程如果要在MFC程序中产生一个线程,而该线程将调用MFC函数或者使用MFC的任何数据,那么你必须以AfxBeginThread()或者CWinThread::CreateThread()来产生这些线程,理由同C runtime library.在MFC中启动一个worker线程如果线程调用了GetMess转载 2014-06-11 09:14:47 · 810 阅读 · 0 评论 -
函数的执行控制(时间)
一般执行某个处理的时候,对于外部来讲,并不清楚,执行时间也不容易把握,对用户而言,可能看到一旦做了某个处理之后,就如同死机一样,如何解决这个问题? 通常有两种方法:1. 一种是多线程检测,通过一个线程定期检查另一线程执行耗时。2. 一种是执行内部固定执行/时间分片检测,为单线程方式,类似CPU时间分片中执行检测 多线程检测:通常为启原创 2014-05-30 13:21:51 · 1480 阅读 · 0 评论 -
转载:VC在一个工程中实现多语言版本
转载地址:http://www.vckbase.com/index.php/wv/813VC在一个工程中实现多语言版本前段时间笔者因为做一个程序,客户要求要有中英文版本,开始以为要做二个工程,只是资源文件不同,但是发现这样一个工程更新另外一个也要更新,实在是很麻烦 ,后来经过网上查找资料与自己亲身实验,发现其实只要在一个工程中就可以实现。但是这个工程中要有两个资源文件,当编译不转载 2014-03-28 10:39:07 · 1184 阅读 · 0 评论 -
MFC添加ToolTip提示
自定义区域添加ToolTip提示原创 2014-02-27 14:01:36 · 2744 阅读 · 0 评论 -
Dialog更换鼠标图片
1. 更换鼠标图片响应更换鼠标图片需要:1. 首先把鼠标的图片资源ICON导入到工程中,例如ID使用IDC_CURSOR12. 加载图标HCURSOR m_cursors[2];在构造函数中 if (xxx) { m_cursors [0] = ::GetC原创 2014-02-27 13:23:54 · 886 阅读 · 0 评论 -
获取MFC系统调用的错误码 & 获取缺少哪个dll
参考:http://baike.baidu.com/view/1340740.htm 例如文件操作: 1. 使用GetLastError()获取错误码 注意:出现错误,需要立即获取错误码,否则可能就会丢失错误码信息。 You should call the GetLastError function immediately when a function's原创 2014-02-24 11:24:27 · 1276 阅读 · 0 评论 -
转载-Alpha通道实现
转载地址:http://www.cppblog.com/kredraw/archive/2008/09/19/62266.html[Z]Alpha通道实现图形学中,Alpha指的是除了颜色的三个分量(RGB)外的第四个分量,透明度一个真彩色的像素由四个分量组成,RGBAAlpha 的值在 0 到 1 之间,0表示完全透明,1 表示完全覆盖 图像A 和 图像B 组合而转载 2014-02-13 16:49:02 · 1226 阅读 · 0 评论 -
_USRDLL和_AFXDLL的用法
参考案例:http://coolerbaosi.iteye.com/blog/1779525 (推荐博客:http://coolerbaosi.iteye.com/ )参考文档:http://computer-programming-forum.com/82-mfc/d277aca893dd77cb.htm参考文章:http://blog.csdn.net/honker110/artic原创 2014-01-17 14:42:49 · 4776 阅读 · 0 评论 -
Invalidate导致异常闪烁
我这边在写MFC程序的时候,发现问题:某个窗口弹出时/操作时,背景下的其它窗口也进行了闪烁 问题定位:经过代码分段隔离检查,查到的原因是Invalidate()的使用导致的 问题分析:推测如下通常情况下,调用invalidate刷新的应该是窗体本身,可是,当窗口尚未建立完全的时候,调用invalidate,刷新的区域可能变成了整个屏幕窗口。从而导致背景下的其它窗口也闪烁原创 2014-01-03 14:00:30 · 2735 阅读 · 0 评论