关于程序控件风格适应用户当前应用的主题外观改变的问题

Applic 2010-08-25 05:04:47
一、默认用API写的程序风格,比如按钮等客户区中的控件是如下灰色风格的吧



二、而MFC工程(VS05)默认编译出来的按钮等控件风格是随主题变化的



三、但是下面是一个旧的MFC工程,用当前VS05重新编译出来的风格是跟API的风格一样的,这是什么原因或是在哪调整属性呢?



还有API写的外观是否打开编译器的什么选项或生成.manifest能不需要在程序里添加任何代码即能跟新MFC工程一样继承用户当前应用的主题外观?即不用visual styles及自绘等方案
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
muzizongheng 2010-08-25
  • 打赏
  • 举报
回复
这个要在stdafx.h里添加如下代码:


#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
Applic 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 applic 的回复:]
引用 3 楼 elysium 的回复:
指定manifestdependency


你好,经过部分测试,好像只有部分commctrl如tab、trackbar、progress bar,以及commdlg的color dialog、openfile dialog等少数公共控件起作用;

而其他的窗口比如MessageBox、Check box、Radio button、组合框Comb……
[/Quote]

我尝试加了InitCommonControlsEx,结果可以了,感谢
Applic 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 elysium 的回复:]
指定manifestdependency
[/Quote]

你好,经过部分测试,好像只有部分commctrl如tab、trackbar、progress bar,以及commdlg的color dialog、openfile dialog等少数公共控件起作用;

而其他的窗口比如MessageBox、Check box、Radio button、组合框ComboBox、ListBox、Edit Control、Tooltip等自绘自CreateWindow的空间好像不行,反而都出不来不显示了,这是个问题
Applic 2010-08-25
  • 打赏
  • 举报
回复
API程序还有哪些方案能够使控件继承用户主题外观风格呢?
Elysium 2010-08-25
  • 打赏
  • 举报
回复
指定manifestdependency
Applic 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 muzizongheng 的回复:]
这个要在stdafx.h里添加如下代码:


C/C++ code

#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture……
[/Quote]

非常感谢,MFC确实可以,API的不行吗

15,980

社区成员

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

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