如何实现XP界面(不用控件)up者有分(200分)

  • 主题发起人 主题发起人 san_fish
  • 开始时间 开始时间
S

san_fish

Unregistered / Unconfirmed
GUEST, unregistred user!
现在想做的是把Form、Menu还有ToolBar改成XP界面(Flat)
——不用现成控件,也不想做成控件
有想法的DFW尽管跟贴,无论对错
分不够可以再加
 
看来只有UP了
 
抄的:
1.建立一个叫themed.manifest的文本文件
< ?xml version="1.0" encoding="UTF-8" standalone="yes"?>
< assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
< assemblyIdentity
name="Your.Application.Name.Here"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
< description> WindowsXP Shell< /description>
< dependency>
< dependentAssembly>
< assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
< /dependentAssembly>
< /dependency>
< /assembly>

2.再建立一个资源文件 就叫 XPStyle.RC吧!内容如下:
1 24 “themed.manifest”
用Brcc32 编译成XPStyle.RES

3. 在Delphi(2~6)中包含这个资源文件就可以了!在哪里包含?!@#$%^&amp; 我倒!

注意:这只在WindowsXP下可以,在旧的操作系统上,外观不变!你就放心的加上吧!万一有人在XP下运行你的程序呢?嗬嗬!
 
<< 注意:这只在WindowsXP下可以,在旧的操作系统上,外观不变!你就放心的加上吧!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~汗~~~~~~~~~~~~~
<< 万一有人在XP下运行你的程序呢?嗬嗬!

至于原理怎样暂且不说,但不会说包含这样一个资源文件就能实现吧??
还有1 24 “themed.manifest”这个24是什么意思呢??
 
我也只能UP 了
 
我想请教各位用过那些可以把界面做成WinXP风格的朋友,你们做的程序在真正的WinXP下,
效果和XP中的程序一样吗?会不会不伦不类的呢?
 
如果是在Windows Xp比较简单
1.建立一个叫AAA.manifest的文件
< ?xml version="1.0" encoding="UTF-8" standalone="yes"?>
< assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
< assemblyIdentity
name="AAA.exe"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
< description> WindowsXP Shell< /description>
< dependency>
< dependentAssembly>
< assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
< /dependentAssembly>
< /dependency>
< /assembly>
跟你的.exe文件放在一起就可以了,注意AAA.exe跟AAA.manifest
是假设你的.exe文件是AAA.exe
 
to san_fish:
我没试过,也不知道原因。
出自:http://expert.csdn.net/Expert/topic/597/597113.xml?temp=.5481073
如果你有兴趣,不妨一试。如果可行,说一声。
 
不需要去编译那么麻烦!
 
首先我是Win2000的,所以这个办法不行(刚刚试过,有没有编译都不行)
还有我并不是想要XP界面的结果(如果是,那控件一大堆)
我只是想掌握写这种界面的原理
 
在线等待啊~~~~~~~~各位高人
 
formstyle为none
然后放image上去然后用xp的图片贴上去可以解决窗口!
至于bar之类的东西,我想如果不怕麻烦,也可以上用这个方法了
 
其实WindowsXP同时支持两种不同的界面风格,一种是和WIN2000等系统一样的界面,另一种
就是XP的新界面风格,然而正是因为这样,在WINDOWS XP运行一个程序时,它必须为这个
程序选择其中的一种界面风格来显示这个程序的界面。如果程序没有通知WIN XP它要使用哪
一种界面风格,则XP会选择旧的界面显示这个程序的按钮、编辑框等通用组件,而不使用
新的界面风格;由此可见,要想使程序在WINDOWS XP中运行时能能XP的新界面风格显示程序
中用到的通用组件,就要通知XP:这个使序使用了通用组件,这些组件(按钮、编辑框、
滚动条等)需要用XP的新界面显示。
要通知XP显示某一程序时使用新界面,有两种实现方法:分别就是“zw84611”说的包含资
源法和“流浪者_2008”所说的建立manifest文件法。
包含资源文件的方法其实很简单,假如资源文件的名称是XPStyle.RES,则只要在任一
个单元中加上代码:
{$XPStyle.RES}
然后重新编译程序,当程序在XP中运行时就可以显示出XP的界面了。
在此纠正一下“流浪者_2008”的说法,如果程序的文件名是AAA.exe,则manifest文件
的文件名应该为AAA.exe.manifest,中间的exe是必须要的,要不然是显示不出XP界面的,只
要将这个文件放到同一个目录,XP就会自动查找这个manifest文件。

以上无论哪种方法,都只有在XP系统下运行程序时才能显示出XP的界面效果,在其它操作
系统下是不会有任何效果的。而且并不是程序中只有操作系统的通用组件能以XP的新界面显
示,一般的第三方组件(主要是界面组件)的显示界面是不会有变化的。

那些实现XP效果的控件,全都是模仿的XP显示界面,这种界面并不是由XP来处理的。
 
同意Perseus
 
在Windows2000上不使用第三方控件,同时又不编定新的界面控件,要实现XP的显示效果是不可能的!
没有必要在这上面浪费时间。
使用第三方控件也只是模仿了XP的界面,不管在什么操作系统上界面都是一样的;与上面说的两种实
现方法的原理是不一样的,用这两种方法写的程序在Windows2000和WindowsXP下运行的显示界面是不一样的!
 
怎么会不可能??我就见过在Win2000下用VC做过的XP界面
只是我VC不熟,对里面的机制都不理解,好像跟chatopsoft说的差不多
只是没这么简单,好像还要加一些配置文件之类的东西
我就不信用VC能实现的东西用delphi没办法

我尝试过做XP的窗体,但是没办法改变窗体的大小的,
一放大那Image里面的bmp就变模糊了

还有比如菜单,用image覆盖的话,我怎么知道它弹出的具体位置等等很多问题
也就因为一箩筐的问题现在才提出请教的
 
如果是D7,有个TXPManifest控件,拖到窗体上即可在XP下实现XP效果,无须任何代码。
和那个manifest文件一样作用。
 

Similar threads

D
回复
0
查看
955
DelphiTeacher的专栏
D
D
回复
0
查看
892
DelphiTeacher的专栏
D
D
回复
0
查看
796
DelphiTeacher的专栏
D
D
回复
0
查看
970
DelphiTeacher的专栏
D
后退
顶部