论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格

论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格

  • 实现过程:

对于win32自带的98按钮风格样式来说,很多人应该不是很喜欢,但在网上找了很久,发现很多方法都是没有用的,时间长了自然就放弃,或转VS编程来达到改变风格的效果, 但经过本人的不懈努力,终于在微软官网找到了实现方法,具体实现链接>:Microsofi.启动视觉风格样式

  • 上图
    启动前 : 启动后:
    论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第1张图片 论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第2张图片
    可以明显看出成功启动后跟随了控件风格系统而变化。

实现过程:

声明:这里不讲述Win32窗口创建流程
DEV C++版本为5.11

  1. 创建带有资源文件(xxx_private.rc)的项目文件论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第3张图片

2.在连接器中加入 ‘空格’-lComCtl32 注意要加空格!
论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第4张图片

3.定义INITCOMMONCONTROLSEX结构体,调用InitCommonControlsEx( )函数;
在静态区写入 创建结构体:
INITCOMMONCONTROLSEX I;

在WinMain中写入

	I.dwICC = ICC_STANDARD_CLASSES | ICC_WIN95_CLASSES;
	I.dwSize = sizeof(I);
	
	InitCommonControlsEx(&I);

对与为什么这样用,官方说法是:

论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第5张图片


论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第6张图片


论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第7张图片


论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第8张图片

含义
ICC_ANIMATE_CLASS 加载动画控制类。
ICC_BAR_CLASSES 加载工具栏,状态栏,跟踪栏和工具提示控件类。
ICC_COOL_CLASSES 加载钢筋控制类。
ICC_DATE_CLASSES 加载日期和时间选择器控件类。
ICC_HOTKEY_CLASS 加载热键控件类。
ICC_INTERNET_CLASSES 加载IP地址类。
ICC_LINK_CLASS 加载超链接控件类。
CC_LISTVIEW_CLASSES 加载列表视图和标头控件类。
ICC_NATIVEFNTCTL_CLASS 加载本地字体控件类。
ICC_PAGESCROLLER_CLASS 加载寻呼机控件类。
ICC_PROGRESS_CLASS 加载进度栏控件类。
ICC_STANDARD_CLASSES 加载固有的User32控件类之一。用户控件包括按钮,编辑,静态,列表框,组合框和滚动条。
ICC_TAB_CLASSES 加载选项卡和工具提示控件类。
ICC_TREEVIEW_CLASSES 加载树视图和工具提示控件类。
ICC_UPDOWN_CLASS 加载上下控件类。
ICC_USEREX_CLASSES 加载ComboBoxEx类。
ICC_WIN95_CLASSES 加载动画控件,标题,热键,列表视图,进度栏,状态栏,选项卡,工具提示,工具栏,跟踪栏,树视图和上下控件类。

4.用XML编写YYY.exe.manifest文件(这里的YYY.exe是程序编译运行后自动生成的exe文件)

在网上随便找一款XML编辑器论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第9张图片
输入以下代码:

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

论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第10张图片
保存为X.exe.manifest文件(X这里为YYY)

此时工程文件目录应为
在这里插入图片描述

5.将X.exe.manifest添加到应用程序的资源文件中

打开对应的资源文件论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第11张图片

添加如下代码:

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YYY.exe.manifest"

如图:论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第12张图片

切记一定要先保存资源文件再运行程序!

6.测试风格
随便写了一个信息盒子
论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第13张图片

编译运行结果:

成功 失败
论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第14张图片 论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格_第15张图片

注意:可改变风格得不光有按钮控件,其他控件也均会改变,若想在某些控件上保留98风格,改变3.中结构体的.dwICC即可

你可能感兴趣的:(论如何在DEVC++中使用win32编程更改子控件风格(如按钮)为系统风格)