真正彻底 实现vc6下 activex dll 的xp风格(theme) 的方法。
来源:互联网 发布:php cookie模拟登录 编辑:程序博客网 时间:2024/05/16 03:09
网上基于vc6.0的activex增加 xp 风格(theme)都不起作用(其实已经实现了,只是大多数程序都是用mfc的创建用户控件函数所以还是不起作用),
如何定义XP风格的文章很多,可参见http://blog.csdn.net/greenerycn/article/details/3150247,但是纯粹采用这个办法采用MFC的Activex或者DLL项目根本就没有反应。原因如下:
原来是因为定义了#define ISOLATION_AWARE_ENABLED 1关键字后,所有的创建函数转到WinBase.Inl中,
通过 application and hosted component来实现,但是mfc中的实现并没有转
,所以只要在调用前稍作修改就能真正实现vc6的 activex控件xp风格了。
所以通过这个方法,用vc6编写的activex IE插件 动态库等应该都能实现xp风格了。
关键代码:
BOOL fResult = FALSE;
ULONG_PTR ulpCookie = 0;
const BOOL fActivateActCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&ulpCookie);
if (!fActivateActCtxSuccess)
return fResult;
__try
{
//fResult = GetClassInfoExW(unnamed1,unnamed2,unnamed3);
CRect rect(0,0,200,20);
button.Create("test",WS_VISIBLE,rect,this,12); //这里是真正的mfc创建控件的调用
}
__finally
{
if (!IsolationAwarePrivateG_FqbjaLEiEL)
{
const BOOL fPreserveLastError = (fResult == FALSE);
const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
(void)IsolationAwareDeactivateActCtx(0, ulpCookie);
if (fPreserveLastError)
SetLastError(dwLastError);
}
}
return fResult;
朋友做的封装,可以参考:
class CXP
{
public:
CXP() {
m_ulpCookie = 0;
m_bCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&m_ulpCookie);
}
virtual ~CXP() {
if(m_bCtxSuccess) IsolationAwareDeactivateActCtx(0, m_ulpCookie);
}
ULONG_PTR m_ulpCookie;
BOOL m_bCtxSuccess;
};
CDlg_Test dlg;
{
CXP XP;
if(dlg.DoModal()==IDCANCEL) return FALSE;
}
- 真正彻底 实现vc6下 activex dll 的xp风格(theme) 的方法。
- VC6风格转XP风格界面的两种方法
- VC6风格转XP风格界面的两种方法
- VC6 实现XP风格
- 怎样让VC6.0写出来的程序在XP下显示为XP风格
- VC6.0应用程序实现XP风格简便方法
- vc6.0程序界面实现XP风格方法
- XP环境下2000风格按钮手工修改改变成XP风格的方法
- 让VC6.0写出来的程序在WinXP下显示为XP风格
- VC6实现XP风格的控件效果(和VC2005一样)
- VC2005 实现XP的风格
- XP风格界面的实现
- VC2005 实现XP的风格
- XP风格按钮的实现
- VC6.0的ActiveX控件实现
- VC6.0的ActiveX控件实现
- VC6.0的ActiveX控件实现
- Delphi 7 下自动实现 xp 风格的简单办法
- SimpleDateFormat也可以格式化24机制或者12小时机制
- eclipse 中启动tomcat服务
- 07~PHP 文件应用
- Log4j和common-logging的使用
- java 下载
- 真正彻底 实现vc6下 activex dll 的xp风格(theme) 的方法。
- Android UI学习 - ListView
- java删除指定文件夹
- android全格式多媒体播放器(一:ffmpeg移植)-转载
- 怎么才能增加积分 哦
- 关于debug
- 新的概念,自己还不清楚,先记下来
- PHP文件下载代码(转)
- java下载网页