net应用程序如何批上XP的外衣?

程序

net framework 所提供的开发控件也太少了,也太难看了,自已画又费时费力也不见得会得出个什么好的效果。如果能够上我们的程序运行在XP环境中能自动应用XP的主题样式那就省时多了,让MICROSOFT给我们去画控件!以下是我所所试验过的解决办法:

1.Application.EnableVisualStyles方法(只适和.NET 1.1及以后版本支持)

在Main方法中执行Application.Run(...)方法前先执行一下Application.EnableVisualStyles()方法,可以让接下来运行的应用程序中的控件自动套用XP的样式。不过有几点要注意:

所有控件都必须保持预设的状态,不能改变其边框样式及背景颜色等属性.如果有System选项的样式属性(如Button的FlatStyle)则必须选择System;

此方法在WIIN2003中可以完全正常运行,但在WIN XP中工具条上的图标会不能显示.(这个也许是XP的BUG,用下种方法可以解决这个问题);

2.加入manifest文件(适合所有WINDOWS应用程序)

在执行文件相同目录中加入一个yourApplicationName.exe.manifest的XML文件,可以迅速实现我们的需求,文件内容如下(加下划线片为需进行适当改变):

<?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="X86"

name="CompanyName.ProductName.YourApp"

type="win32"

/>

Your application description here.

type="win32"

name="Microsoft.Windows.Common-Controls"

version="6.0.0.0"

processorArchitecture="X86"

publicKeyToken="6595b64144ccf1df"

language="*"

/>

我已用这种方法改变很多不同的应用程序,都取得了成功。不过只能套用那些保持着Windows预设属性的控件。它的实现原理是Windows中所有控件都是交给一个ComCtl32.dll的组件来画的。XP以前的最高版本是5.0,XP中带了一个6.0的ComCtl32.dll,我们以上所做的目的就是通知应用程序采用t.6.0的ComCtl32来展示控件.

时间: 2024-10-02 03:57:01

net应用程序如何批上XP的外衣?的相关文章

C#做的程序,在有些XP的电脑上无法运行。如何解决

问题描述 各位好,你们有没有碰到这样的问题.C#做的程序,在有些XP电脑无法运行,提示错误,不论我用什么方法,1.把NET全部删除掉了.从2.0开始装,一直试到3.5,4.0还是不能运行.2.重装系统,从2.0开始装,一直试到3.5,4.0还是不能运行.3.或者直接装3.5.4.0都不能运行.4.VC运行库,从2005_86x一直装到2014_x86都不行.5.随便编译的hello程序,从2.0一直4.0,各个版本在这些不能安装的电脑上,全部可以运行正常.更奇怪的是,这些不能安装的电脑,配置有些

c# label-C#开发的程序为啥装在XP上,label就显示为空了呢,本来是有字体的呀

问题描述 C#开发的程序为啥装在XP上,label就显示为空了呢,本来是有字体的呀 C#开发的程序为啥装在XP上,label就显示为空了呢,本来是有字体的呀,我在自己的电脑上市显示的出来的,为啥装别的电脑上不能显示,而且不是所有的都为空,有些页面是全部都空,有些页面就没有..救命啊 解决方案 这个你别盯在字体这个问题上. 可能是你程序本身的问题,比如说相对路径出错,权限问题,缺失一些文件等等.

c#-installsheild打包发布程序在winxp上安装提示(null)非win32程序

问题描述 installsheild打包发布程序在winxp上安装提示(null)非win32程序 c# 开发的程序打包后在win7上安装正常,winxp上无法使用,使用net4.0 解决方案 很难说,你的xp是不是ghost山寨盗版的,一些盗版xp精简了windows installer,或者感染了360等流氓软件,所以有各种奇怪的问题. 解决方案二: windowXP 的net没得那么高不支持啊 解决方案三: windowXP 的net没得那么高不支持啊

dotNET 程序奔向Window XP,体验绚丽的外表?

我的朋友中终于有忍不住开始安装Windows XP了,感觉是被华丽的界面诱惑.好像最近网上流传的一个Windows XP 2600的版本十分稳定而且不用激活(所以安装的人渐渐又多起来了haha).由于要帮他安装一些外设,我也才可以做这样的实验,开始考虑将自己原来的一些dotNET程序向XP上迁移,特别是一些WinForm的程序,因为我想自己的程序也可以利用XP的华丽UI. 有关XP的版本有很多说法,有的说已经预装了dotNet Framework Beta2,有的说没有装,我想这主要是dotne

在 Windows 应用程序中使用 Windows XP 的外观风格和 PrintWindow(转)

注意:此示例仅适用于运行 Windows XP 的计算机.打开示例并打开两个或多个应用程序窗口之后,请使用 AltTab 功能键来运行 TaskSwitcher 应用程序.摘要:本文介绍了一种增强的 AltTab 应用程序 TaskSwitcher,并以此为框架演示了在 Windows 应用程序中使用 Windows XP 新的外观风格和 PrintWindow 的方法.目录简介 TaskSwitcher 应用程序 截取键盘输入 枚举顶层应用程序窗口 显示顶层应用程序窗口 使用 Comctl32

winform程序对界面上控件的统一控制【二】组件版

继上篇文章winform 程序对界面上控件的统一控制[一](赋值\清空\验证- -) ,本篇文章将实现一个同样功能的Component(组件). 先看看组件的实现,如下所示: 代码一 public partial class CtrlValidation : Component { public CtrlValidation() { InitializeComponent(); typeCache = new TypeCache(); } public CtrlValidation(IConta

十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤:

iOS程序在模拟器上无法运行,报错126

问题描述 iOS程序在模拟器上无法运行,报错126 .../Pods/Target Support Files/Pods/Pods-resources.sh: /bin/sh: bad interpreter: Operation not permitted Command /bin/sh failed with exit code 126 解决方案 iOS 模拟器运行报错 解决方案二: * ## 首先你要确定是程序问题还是模拟器问题.这样:新建一个iOS项目,直接运行,如果能正常运行,就说明模

oj问题-为什么我的这个大数相加程序在oj上跑出来的结果是OLE

问题描述 为什么我的这个大数相加程序在oj上跑出来的结果是OLE #include<stdio.h>#include<string.h>int main(){ char str1[1001]str2[1001]*num1*num2*p1*p2; int ncase/*多组输入数目*/mcase=1/*输出时的第几个输出计数器*/up/*进位存储器*/len1len2len; scanf(""%d""&ncase); while(nca