[Win32SDK基本]开启UI系统风格

本文由CSDN用户zuishikonghuan所作,转载请注明出处: http://blog.csdn.net/zuishikonghuan/article/details/46802423 

最近太忙了,马上就期末考试了,本来想说说模态窗口来的,但是稿子没写完,所以今天先说说系统风格:

先看看我之前做的一系列程序的运行图片:

[Win32SDK基本]开启UI系统风格_第1张图片

开启系统风格之后:

[Win32SDK基本]开启UI系统风格_第2张图片

可以发现按钮可以文字图片共存了,同时界面漂亮了很多,这是如何实现的呢?

其实系统风格就是使用win32的控件版本6.0

方法一:直接在cpp里头文件include下面加上这么一行即可:

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")

方法二:使用清单文件

先写一个manifest,放到工程的目录下面:

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

再在RC资源文件中加入:

1 MANIFEST "文件名.manifest"

如果是从VS的IDE模式编译,应该同时在工程属性里去掉清单工具。

注:如果这两种方法无效,应该再进行以下步骤:
添加头文件:

#include<commctrl.h>
#pragma comment(lib,"comctl32.lib")

在WinMain的开始调用:

InitCommonControls();

即可。


<p> 还有一个问题,细心的你可能已经发现系统风格打开之后text control的背景默认变成白色了,原因是我在博文:“[Win32SDK基本]Static Control(1)Text Static Control 和 WM_CTLCOLORSTATIC“(地址: http://blog.csdn.net/zuishikonghuan/article/details/46604945)中对 WM_CTLCOLORSTATIC 消息中把第二个text control设置背景后其他的我给return 0;了,return 0代表我已处理此消息,系统不再处理,把else全部改成break;即可,退出switch,然后交给DefWindowProc处理了,这个问题就解决了。

你可能感兴趣的:(Win32,windows,Desktop,sdk)