如何通过theme将CListCtrl加载成XP风格

muyouniao 2010-01-21 07:05:28
如题,100分求教,希望能有高手指点。
如有例子就最好了。
...全文
200 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xibuzhuzi 2010-01-27
  • 打赏
  • 举报
回复
9楼的,向你学习了
marrco2005 2010-01-27
  • 打赏
  • 举报
回复
如果不行
就用兔子的那个manifest文件方法,在做一下设置
dll项目->属性,配置属性, c/c++, 命令行,附加选项, 输入: /D ISOLATION_AWARE_ENABLED
marrco2005 2010-01-27
  • 打赏
  • 举报
回复
可以在dll工程里的某个cpp文件里加上这句试一试

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
muyouniao 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tr0j4n 的回复:]
说实话,我还没摸清LZ的问题。我以为LZ是要实现DLL里面的窗口风格。

那LZ的意思是:通过你的DLL让一个EXE的风格变化还是什么的?
[/Quote]


EXE为非XP风格,DLL里的窗口需要XP风格
muyouniao 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 miaolingshaohua 的回复:]
你把这段代码粘贴到记事本中,然后保存为XXXX.exe.manifest,XXXX为你EXE的文件名,将两个文件放在同一目录,看看效果
[/Quote]


这种方法我也知道,但是我不需要这种方法,因为会影响到EXE
hzy694358 2010-01-22
  • 打赏
  • 举报
回复
mark
MoXiaoRab 2010-01-22
  • 打赏
  • 举报
回复
说实话,我还没摸清LZ的问题。我以为LZ是要实现DLL里面的窗口风格。

那LZ的意思是:通过你的DLL让一个EXE的风格变化还是什么的?
哈利路亚1874 2010-01-22
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
processorArchitecture="x86"
version="5.1.0.0"
type="win32"
name="test.exe"/>
<description>Test Application </description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="x86"/>
</dependentAssembly>
</dependency>
</assembly>


你把这段代码粘贴到记事本中,然后保存为XXXX.exe.manifest,XXXX为你EXE的文件名,将两个文件放在同一目录,看看效果
疯癫小程序 2010-01-22
  • 打赏
  • 举报
回复
学习
sjdev 2010-01-21
  • 打赏
  • 举报
回复
我记得用bcg的时候,即便动态库也是可以有xp风格的。
不知道它是怎么实现的。

bcg生成的exe是通过manifest实现的,嵌入的xptheme.bin。
dll不清楚。
jameshooo 2010-01-21
  • 打赏
  • 举报
回复
兔子该试验一下,楼主说的问题确实存在,被别人使用的DLL用了MANIFEST也没用。不过解决方案还是有的,这可是我私家解决方案,是不是一定能解决楼主的问题我还不敢保证,在我自己的项目中是可以的。

用法很简单,不需要MANIFEST,针对任何系统窗口类创建的窗口:
SetWindowTheme(hwnd, NULL, NULL); // <-- 这个调用就能应用XP主题,虽然MSDN上的解释是删除之前的主题样式
SetWindowTheme(hwnd, L"", L""); // <-- 这个就不要用了,它会把窗口变成最土最98的那种
MoXiaoRab 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 muyouniao 的回复:]
楼上的几位朋友,现在我必须通过代码加载,不能直接用manifest,因为我做的是DLL,主程序EXE是别人的,别人的没加载,我的就不能通过manifest加载,我需要通过OpenThmeData加载。
请高手帮忙
[/Quote]DLL难道就不能嵌入Manifest了么?
muyouniao 2010-01-21
  • 打赏
  • 举报
回复
楼上的几位朋友,现在我必须通过代码加载,不能直接用manifest,因为我做的是DLL,主程序EXE是别人的,别人的没加载,我的就不能通过manifest加载,我需要通过OpenThmeData加载。
请高手帮忙
admirxue 2010-01-21
  • 打赏
  • 举报
回复
学习
zealand_1 2010-01-21
  • 打赏
  • 举报
回复
楼上正解,参考MSDN
MoXiaoRab 2010-01-21
  • 打赏
  • 举报
回复
你嵌入Manifest编译后就是XP风格了。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧