目前共有23篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:马新简体▼
 
點擊 回復
1386 22
【教程】让Win32程序拥有XP风格控件
一派掌門 二十級
1樓 發表于:2015-4-4 12:44
在Visual Studio中,默认创建的Win32 Project的对话框中,控件是Windows 2000风格的,很难看。


本教程主要讨论如何让Win32程序的控件拥有XP风格。最终效果如图:

(说实话我也不知道对话框中为何多出了一个α的图标。。。)
一派掌門 二十級
2樓 發表于:2015-4-4 12:46
【第一步】
打开Win32Project1.cpp文件(新建的工程貌似只有一个cpp文件),在这个文件的头部加上:
#pragma comment (lib, "comctl32.lib")
#include "commctrl.h"

其中最后一个也可以写成#include <commctrl.h>
 
一派掌門 二十級
3樓 發表于:2015-4-4 12:48
找到InitInstance函数,在函数中加入
InitCommonControls();
如图:

那个注释是我加上的= =
//Make sure this is here so you can use XP Styles
这个可以不加的。
 
一派掌門 二十級
4樓 發表于:2015-4-4 13:17
【第二步】
打开Win32Project1.rc文件

新建一个资源
 
一派掌門 二十級
5樓 發表于:2015-4-4 13:21
点Custom按钮

输入24,然后点OK
 
一派掌門 二十級
6樓 發表于:2015-4-4 13:22
在新建的空白文件中,粘贴如下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    name="Microsoft.Windows.Shell.notepad"
    processorArchitecture="amd64"
    version="5.1.0.0"
    type="win32"/>
<description>Windows Shell</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <dpiAware  xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
</application>
</assembly>


 
一派掌門 二十級
7樓 發表于:2015-4-4 13:24

然后在右下角的Properties(属性)模块中,把ID改成1,把Filename改成“工程名.manifest”,如:Win32Project1.manifest
 
一派掌門 二十級
8樓 發表于:2015-4-4 13:28
回复:7楼
注意:
这一步是先点击了(6楼所示截图)刚才新建的那个资源的内容区域,使光标落在那个区域之后,再到Properties(属性)模块中修改属性值。

当然也可以 选中 Resource View中的RT_MANIFEST(或24)下新建的资源,再在属性模块中改。反正目的是要把文件名改成“工程名.manifest”,资源名称改成1

 
一派掌門 二十級
9樓 發表于:2015-4-4 13:28
然后运行程序就行了。
 
一派掌門 二十級
10樓 發表于:2015-4-4 13:30
 
一派掌門 二十級
11樓 發表于:2015-4-4 13:34
对于MFC程序,从VS2005开始就已自动启用了XP控件风格,无需用户干预。
而在VC6中,则只需要新建一个24资源,复制6楼所述内容,然后把资源ID改为1就行了。不需要加入其它的C++代码。
 
一派掌門 二十級
12樓 發表于:2015-4-4 13:44

对话框中的控件可以直接在rc文件中的dialog资源中添加。
 
一派掌門 二十級
13樓 發表于:2015-4-4 13:45
 
一派掌門 二十級
14樓 發表于:2015-4-4 13:46
1>------ Build started: Project: Win32Project1, Configuration: Release Win32 ------
1>  stdafx.cpp
1>  Win32Project1.cpp
1>  Generating code
1>  Finished generating code
1>  Win32Project1.vcxproj -> f:\users\octopus\documents\visual studio 2013\Projects\Win32Project1\Release\Win32Project1.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

生成Release版本的exe文件。。。
 
一派掌門 二十級
15樓 發表于:2015-4-4 14:06

该方法在VS2010中也适用。
 
一派掌門 二十級
16樓 發表于:2015-4-4 14:11

这是在没有安装VS的电脑上运行的效果。
 
一派掌門 二十級
17樓 發表于:2015-4-4 14:28

回复:15楼

如果觉得字体不好看,可以改成“新宋体”

 
一派掌門 二十級
18樓 發表于:2015-4-4 20:08
其实,我VS2005,2008,2010,2013都用过。。。。
 
一派掌門 二十級
19樓 發表于:2015-12-1 22:38

回复:2楼

comment和括号中间可以不需要空格。

 
一派掌門 二十級
20樓 發表于:2015-12-3 22:35
回復7樓 @巨大八爪鱼 的內容:
然后在右下角的Properties(属性)模块中,把ID改成1,把Filename改成“工程名.manifest”,如:Win32Project1.manifest
【补充】
如果实在想用IDR_RT_MANIFEST1作资源ID,那就必须把对应的宏定义值改为1。

 
一派掌門 二十級
21樓 發表于:2015-12-3 22:38

在Resource.h中修改资源ID也是可以的。
 
一派掌門 二十級
23樓 發表于:2015-12-3 22:59
http://www.bianceng.cn/Programming/cplus/201306/36676.htm
在这篇文章里介绍了另一种启用XP风格控件的方法,貌似说的是不需要24资源的XML文件。

 
一派掌門 二十級
26樓 發表于:2015-12-5 14:46
另一种更简单的方法:
【教程】用三行C++代码让Win32程序拥有XP风格控件,无需manifest文件或24资源
https://zh.arslanbar.net/post.php?t=23522
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:1386 回複數:22
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2015-12-5 14:46
精品區:未分類
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。