0.VC(ui)-hook 换肤ERROR 汇总
来源:互联网 发布:手机淘宝查看历史评价 编辑:程序博客网 时间:2024/04/30 13:39
以下为hook dll在项目应用中,由大家帮助发现的BUG:
1.hook Dialog,又发现一个小BUG,就是在SetWindowText设置caption时,不刷新过来,本以为是WM_SETTEXT消息刷新下,发现不行,老招,打印所有消息,发现存在个WM_GETICON消息,处理下,调用NCPAINT,搞定,记录下.
2.hook Button, 必须在WM_SETTEXT中加一个刷新,不然在SetWindowText时,系统又自动刷回原形了,搞定,记录下
3.今天又出现一个BUG,在list下,先建立一个能出现滚动条的list ,再点击按钮,切换list到刚好满又没有滚动条时,会发现最后一条点不了,查了下,是因为list中响应WM_NCPAINT消息,注释掉就好了,但OnNcPaint中要上层自绘,所以OnNcPaint最前面加上 DefWindowProc(WM_NCPAINT, 1, 0);,临时解决,重写控件库时再改.
4.原来绘制dialog时,将WS_CAPTION去掉,但引起一个BUG,就是在vasta下,会出现在打开对话框下再出现另存为显示不全的BUG。用spy++抓了个消息0x00AE,直接干掉,把WS_CAPTION恢复过来,好像OK了,google了下:
0x00AE://WM_NCUAHDRAWCAPTION
0x00AF://WM_NCUAHDRAWFRAME
这两条消息是在xp sp2后加的,xp在以前有个bug在某些时候Titlebar会画错.
我靠,这么说在win2K下还可能有现原形:继续跟进
case 0x00AE:{DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);if (dwStyle & WS_VISIBLE) {SetWindowLong(hWnd, GWL_STYLE, (dwStyle & ~WS_VISIBLE));}LRESULT lr = ::DefWindowProc(hWnd, uMsg, wParam, lParam);if(dwStyle & WS_VISIBLE ) {SetWindowLong(hWnd, GWL_STYLE, dwStyle);}return lr ;}
接上面的,继续TODO解决,既然只有在vista以上的版本出现显示不全的BUG,而0x00AE://WM_NCUAHDRAWCAPTION
0x00AF://WM_NCUAHDRAWFRAME在vista以上的版本肯定能用,所以只对vista以上版本恢复WS_CAPTION,其余保持不变
5.点击最小化,再弹出about窗口,发现不能关闭,必须先切换到ncactive才OK,仔细查了下代码,把//if (!bActive)
//{
// return 1;
//}
//else
//{
// return 0;
//}
改为return Default();,搞定.原因很晕.
原因搞清楚了
://----------------------------------------------------------
// When the wParam parameter is FALSE, an application should return TRUE
// When wParam is TRUE, the return value is ignored.
// 这里注意不要弄个else return 0;,不然最小化时弹出about框会被禁用!!
// 当然也不能直接调用Default();,不然原始窗口就绘出来了.
// ---------------------------------------------------------
所以改成
if (!bActive)
{
return TRUE;
}
6.同样最小化弹出后,发现所有的子控件消失了,仔细排查后,发现是NCCASIZEI消息中加了个自定义消息,自己本意是想让用户可以在外面再次控制,结果是如果这个消息被响应了,那么自然OK,不被响应(也就是不加on_message)那么子控件就没了,很郁闷,先注释掉吧----2011-10-29
7.enable消息时,发现bs_icon的按钮和group按钮会出现系统默认绘制,所以把Default屏蔽了,发现对enable没有影响,另groupbox还出现重影,对父窗口相应区域刷新即可.---------2011-10-31
8.自已发现在多字节环境下使用UNICODE皮肤库,按扭点击后会出现边角,暂不解决,------------------------------2011-11-3
9. XP 下需设置SWP_FRAMECHANGE 以发送 WM_NCCALCSIZE 而Vista/WIN7系统会自动发送 -------------- 2011-11-4
10.再次发现在多字节环境下使用UNICODE皮肤库,SkinScroll挂钩combobox后,scroll点击不了,暂不解决 ------2011-11-9
11.CMENU的left键能展开子项(无论子项在右边还是左边)而right键能收起子项,这也让子项的m_hWnd变为无效,所以这时相当于对应的SkinMenu已被释放,这时对它赋值,必挂,这个问题同时也存在于dan.g的代码中,加入判断m_hWnd是否仍是窗口即可。-----------2011-11-12
- 0.VC(ui)-hook 换肤ERROR 汇总
- 0.VC(ui)-hook-BM_SETSTATE
- 0.VC(ui)-hook-DrawItem挂掉
- 0.VC(ui)-hook-Combox滚动条
- 0.VC(ui)-hook-改变ToolBar背景色
- 0.VC(ui)-hook menu实现自绘
- 0.VC(ui)-hook-解决ComLbox不刷新的BUG
- 0.VC(ui)-hook-树形控件滚动条刷新bug
- VC 换肤 美化
- VC换肤 问题解决
- HOOK汇总
- HOOK汇总
- VC Hook
- VC Hook
- 关于vc++ runtime error解决方法汇总
- UI组件:动态换肤原型
- Android UI--Android应用换肤总结
- VC上的换肤控件
- vi常用操作
- joj 2536
- [struts-1.3.10] org.apache.struts包中的Globals类
- VC 画图原理分析(双缓冲) .
- magento中把本地日期格式转换为国际日期格式
- 0.VC(ui)-hook 换肤ERROR 汇总
- Pb12 + sqlanywhere11 应用程序打包指南
- Auctex 快捷键(两篇)
- C,C++代码中调用python脚本
- 详解Linux2.6内核中基于platform机制的驱动模型<强烈推荐,这是一篇学习驱动模型千年一遇的好文章>
- asm文件
- JavaScript字符串函数大全 已经字符串编码函数
- 打算在这里记录程序人生
- 加速 暴力的时候用..