- 博客(24)
- 资源 (38)
- 收藏
- 关注
原创 0.VC(ui)-hook-BM_SETSTATE
精确地讲,当按钮接收到BM_SETSTATE消息并且wParam设置到TRUE时,BM_SETSTATE是按钮专有的消息,用于请求按钮绘制‘按下’或‘释放’模式,每次点击(或发送BM_SETSTATE消息),Windows都自动地通知父窗口这个事件。对于按钮就是BN_CLICKED消息不小心hook这个消息,结果不响应BN_CLICKED了,win7直接报无效的参数,当然,可以用SendMes
2011-08-31 14:38:46 2730
原创 13.VC(ui)-Scroll位置计算
thumb可滚动的长度track_len:等于整个滚动条长度减去两个滚动条上的按钮:track_len = scrollbar_len - scroll_buttion_len * 2thumb的长度:thumb_len / track_len = si.page /
2011-08-26 20:17:16 967
原创 37.VC(custom)-CListCTrl控件排序
列表控件(CListCtrl)的排序功能不像其它直接调用API就可以完成的功能一样.它比较复杂.今天将我的一点体会简单地谈一下. 列表控件的顶部有一排按钮,用户可以通过选择不同的列来对记录进行排序。但是 CListCtrl并没有自动排序的功能,我们需要自己添加一个用于排序的回调函
2011-08-25 22:03:18 2838
原创 17.c++-谁分配谁释放HEAP
在linux下跑得一直很好的程序,到了windows下面就跑不起来了。内存异常,检查了一下,很快发现是因为在主程序中释放了一块在DLL中分配的内存,这种问题虽然早就知道了,但是一直没有仔细考虑过,所以今天就深入研究了一下。在linux下,每个进程只有一个heap,在任
2011-08-24 21:27:05 1946
原创 0.VC(ui)-hook-Combox滚动条
How do I subclass the listbox portion of a combobox? The listbox portion of a combobox is of type COMBOLBOX (notice the "L "). Because the ComboLBox window is not a child of the ComboBox window, it i
2011-08-23 10:55:47 2119
原创 16.c++-std::Set(有序集合)
C++标准库:std_set作为一个有序集合摘要:std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。
2011-08-22 20:58:38 7288
原创 36.VC(custom)-SetWindowRgn注意点
Rgn每次只能被SetWindowRgn设置一次,比如A窗口SetWindowRgn调用了Rgn1,那B窗口的SetWindowRgn就不能再调用Rgn1,另比如A窗口本来就很小,Rgn1的外包RECT要是大于A的实际大小,那么A有一部分是显示不出来的,不会说A就会自动扩大,要扩
2011-08-16 22:08:47 1543
原创 描边时消除锯齿SetSmoothingMode
SmoothingModeAntiAlias指定消除锯齿的呈现。SmoothingModeDefault指定默认模式。SmoothingModeHighQuality指定高质量、低速度呈现。SmoothingModeHighSpee
2011-08-16 21:04:57 10328
原创 0.VC(ui)-hook-DrawItem挂掉
今天hook按钮挂掉了,出错就是下面的信息,原因为动态创建了一个button:void CButton::DrawItem(LPDRAWITEMSTRUCT){ASSERT(FALSE);}解决方法:一定要让父窗口处理WM_DRAWITEM,在这个消息中对所有当前所有带自绘属性的BTN处理,并return ,因为BTN不重载OnDrawItem()就挂了。,
2011-08-15 21:38:13 1262
原创 12.VC(ui)-AlphaBlend参数BLENDFUNCTION
AlphaBlend是Window自带的GDI函数,在作GUI的时候为了达到更漂亮的效果我们常常用它. BLENDFUNCTION是AlphaBlend用控制透明效果的重要参数. 定义如下: typedef struct _BLENDFUNCTION {
2011-08-13 16:29:39 3542
原创 11.VC(ui)-单色图与彩色图之间的转换
在制作透明位图时,经常用到单色图(遮罩图,两色图)与目标位图进行"与""或"等操作就能得到想要的透明效果,在其中用到的最多的就是BitBlt这个函数,另外,在使用之前是要对目标位图进行前景和后景颜色的设置,为什么呢?请看MSDN的解说: 模拟透明的方法也包含基于window
2011-08-11 16:33:29 1309
原创 0.VC(ui)-hook menu实现自绘
花了一天时间,终于把菜单hook完了,贴个图: 记录下具体的实现:1.得到菜单句柄,给菜单窗口发送MN_GETHMENU,这个消息就可以获取菜单句柄2.处理消息WM_NCPAINTWM_PRINTWM_PRINTCLIENTWM_PAINT
2011-08-11 16:10:33 1266
原创 Image类--3-克隆技术
inline Bitmap*Bitmap::Clone( IN REAL x, IN REAL y, IN REAL width, IN REAL height, IN PixelFormat format ){ PixelFo
2011-08-09 17:55:58 947
原创 创建缩放复制图像
inline Image* Image::GetThumbnailImage( IN UINT thumbWidth, IN UINT thumbHeight, IN GetThumbnailImageAbort callback, IN VOI
2011-08-09 17:17:55 760
原创 DrawImage函数---旋转、反射和扭曲图像
Status DrawImage(IN Image* image, IN const PointF* destPoints, IN INT count) { if (cou
2011-08-09 11:29:50 4573
原创 Image类--2--旋转和翻转图片
inline StatusImage::RotateFlip( IN RotateFlipType rotateFlipType )enum RotateFlipType{ RotateNoneFlipNone = 0, //指定不进行旋转和翻
2011-08-09 10:52:16 5546
原创 SetInterpolationMode控制图形的缩放质量
Status Graphics::SetInterpolationMode(IN InterpolationMode interpolationMode)enum InterpolationMode{ InterpolationModeInvalid
2011-08-09 10:20:49 10850 1
原创 Image类------1
Gif压缩不损失,JPEG损失,一般20:1的压缩比无法用肉眼分开,PNG压缩不损失,GIF每像素仅能用1/2/4/8位来表示,PNG可用8/24/48位,png为每个像素提供Alpha值GDI+函数详解:Image(IN const WCHAR* fil
2011-08-09 09:36:02 1231 1
原创 双缓冲技术绘图
当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。 双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。双
2011-08-08 20:53:58 910
原创 缩放图片并保存
IStream* CpictureDemoDlg::StretchPic(const WCHAR *path,const WCHAR* format, int width, int heigh){ Bitmap orgpic(path) ; Image *Despic
2011-08-08 17:09:08 817
转载 SVN基本教程
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 本文是使用Subversion最快速的教程,在最短的时间里帮
2011-08-07 10:51:05 1059
原创 0.VC(ui)-hook-改变ToolBar背景色
只改变背景色,懒得去网上找来找去了,直接在MSDN上看了下属性TBSTYLE_FLAT Version 4.70. Creates a flat toolbar. In a flat toolbar, both the toolbar and the buttons are
2011-08-07 10:15:11 4563 2
原创 1.ring0-内核重载详解(NTOS)
1.取得NTOS原始的地址:这个可以通过遍历系统模块,找到第一个被加载的模块(NTOS),获得NTOS的路径,基地址,大小:基本思路为:1.1 ZwQuerySystemInformation查询到所有模块1.2 获得NTOS的路径,基地址,大小代码如下:NTSTATUS GetNtosModuleInfo(WCHAR *pNtosPath,ULONG nSize,
2011-08-07 09:34:46 20541
原创 35.VC(custom)-VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行
我的系统是VISTA 用VS2008编的一个程序RELEASE生成的EXE文件 传给别人的XP系统用VC6的电脑就不能打开 为什么?我能够打开XP下VC6编的程序 解决办法:修改你VC项目的属性:常规选项中“MFC的使用”这里不要选择“在共享DLL中使
2011-08-05 22:20:23 2739
debug.exe在win7-64下模拟
2015-08-25
SetStretchBltMode测试
2011-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人