Codejock Xtreme ToolkitPro v15.0 在HOOK控件后导致滚动条不正常bug及修复
2015-05-21 15:18
549 查看
界面库的原理先搞清楚就好办了,大部分都是采用HOOK WinProc来实现界面美化,所有先从HOOK开始入手,很多问题慢慢就清晰了...
这个深坑有几个月了,一直没闲功夫去认真阅读它的整个代码框架,今天翻阅了一个小时,总算有点头绪了,只需要一行代码即可解决~~
当然,它在WIN8.1/10上面还有无数的坑,原版CODEJOCK记得有不下10处需要改动,其他的慢慢调吧
.....
实际上SetHook内部也过滤掉了很多类名,反正在这里也过滤掉你自己的窗口类名就行了
这个深坑有几个月了,一直没闲功夫去认真阅读它的整个代码框架,今天翻阅了一个小时,总算有点头绪了,只需要一行代码即可解决~~
当然,它在WIN8.1/10上面还有无数的坑,原版CODEJOCK记得有不下10处需要改动,其他的慢慢调吧
.....
实际上SetHook内部也过滤掉了很多类名,反正在这里也过滤掉你自己的窗口类名就行了
CXTPSkinObject* CXTPSkinManager::SetHook(HWND hWnd, LPCTSTR lpszClassName, LPCREATESTRUCT lpcs, BOOL bAuto) { if (_tcscmp(lpszClassName, _T("tooltips_class32")) == 0) return NULL; if (_tcsicmp(lpszClassName, _T("IME")) == 0) return NULL; if(_tcsicmp(lpszClassName,_T("CicMarshalWndClass"))== 0) return NULL; if(_tcsicmp(lpszClassName,_T("MSCTFIME UI"))== 0) return NULL; CXTPSkinObject* pSink = NULL; if (pSink == NULL && _tcsstr(lpszClassName, _T("WindowsForms")) != NULL) { CString strClass(lpszClassName); int nClassNameStart = strClass.Find(_T('.')); int nClassNameEnd = strClass.Find(_T('.'), nClassNameStart + 1); if (nClassNameStart != -1 && nClassNameEnd != -1 && nClassNameEnd != nClassNameStart) { strClass = strClass.Mid(nClassNameStart + 1, nClassNameEnd - nClassNameStart - 1); CXTPSkinObjectClassInfo* pInfo = m_pClassMap->Lookup(strClass); if (pInfo) { pSink = pInfo->CreateObject(lpszClassName, lpcs); } } if (pSink == NULL) { pSink = new CXTPSkinObjectApplicationFrame(); } pSink->m_bWindowsForms = TRUE; } if (pSink == NULL) { CXTPSkinObjectClassInfo* pInfo = m_pClassMap->Lookup(lpszClassName); if (pInfo) { pSink = pInfo->CreateObject(lpszClassName, lpcs); } else { if (_tcsstr(lpszClassName, _T("Internet Explorer")) != NULL) return NULL; if (_tcsstr(lpszClassName, _T("OleMainThread")) != NULL) return NULL; pSink = new CXTPSkinObjectApplicationFrame(); } } if (pSink && _tcscmp(lpszClassName, _T("#32770")) == 0) { ((CXTPSkinObjectFrame*)pSink)->m_dwDialogTexture = IsTabPage(lpcs) ? ETDT_ENABLETAB : ETDT_ENABLE; } if (pSink) { pSink->m_pManager = this; { CXTPLockGuard lock(m_csObjects); m_mapObjects[hWnd] = pSink; } pSink->AttachHook(hWnd, lpcs, bAuto); } return pSink; }
相关文章推荐
- Codejock.Xtreme.Toolkit.Pro.v13.2.1 正式版
- 推荐一套界面控件(Codejock Xtreme Suite Pro 9.51)
- [转载]Codejock Xtreme ToolkitPro MFC 使用
- Codejock Xtreme Toolkit/Suite Pro v12.0.0 正式版(安装密码)
- MFC 利用 Codejock XtremeToolkitPro 换肤
- Codejock Xtreme ToolkitPro 静态链接XTP库以及皮肤库的使用
- Codejock Xtreme Toolkit Pro v12.1.0 Full Source Retail
- 解决Codejock Xtreme Toolkit Pro MFC Static linked配置时拉动Docking Pane无鼠标的问题
- MFC学习之 利用 Codejock XtremeToolkitPro 换肤
- Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
- Codejock Xtreme ToolkitPro 静态链接XTP库以及皮肤库的使用
- MFC 利用 Codejock XtremeToolkitPro 换肤
- Codejock Xtreme Toolkit Pro v12.0.0 Full Release
- Codejock Xtreme ToolkitPro MFC 使用
- Codejock Xtreme Toolkit Pro v11.2.2 Full Release
- Codejock Xtreme ToolkitPro MFC 15.1.3.0908(Full Source) 汉化与添加搜索框
- MFC 利用 Codejock XtremeToolkitPro 换肤
- Xtreme Toolkit Pro控件下载及使用教程介绍
- 0.VC(ui)-hook-树形控件滚动条刷新bug
- xtreme toolkit pro——CXTPReportControl控件教程