ISSkin 使用技巧,WinXP 下的窗口阴影

原文 http://restools.hanzify.org/article.asp?id=109

是否觉得在使用 ISSkin 的时候感觉窗口太过平板,尤其对于那些窗口边缘和窗口内部颜色一致的皮肤尤其是这样,继续使用 Sakura 皮肤作为讲解,下图就是安装程序的截图,是否觉得就像一张纸一样,缺乏立体感呢?

作为 Vista 以上的 Windows 版本,我们都能够看见窗口的阴影,但是在 WinXP 里面却看不见,但是我们能看见的只有 Windows 提示的阴影.所以以下就是使用了 WinXP 的提示阴影效果,达至看上去窗口有一些立体的感觉.

脚本:
下载地址:
http://restools.hanzify.org/inno/ISSkinSakura/ISSkinSakura.zip

 引用来自 ISSkinSakura.iss

; 脚本编写: restools
; 我的 BLOG: http://restools.hanzify.org

[Setup]
AppName=ISSkin Example
AppVersion=1.0
DefaultDirName={pf}\ISSkin
SolidCompression=true
WizardImageFile=SakuraWizard.bmp
WizardSmallImageFile=SakuraSmall.bmp
OutputDir=.
OutputBaseFilename=ISSkinSakura

[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Sakura.cjstyles; DestDir: {tmp}; Flags: dontcopy

[Code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function GetClassLong(Wnd: HWnd; Index: Integer): Longint;
external 'GetClassLongA@user32.dll stdcall';
function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint;
external 'SetClassLongA@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Sakura.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Sakura.cjstyles'), '');
  Result := True;
end;

procedure DeinitializeSetup();
begin
  // Hide Window before unloading skin so user does not get
  // a glimse of an unskinned window before it is closed.
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;

function CheckWin32Version(AMajor: Integer; AMinor: Integer): Boolean;
var
  WinVer: TWindowsVersion;
begin
  GetWindowsVersionEx(WinVer);
  Result := (WinVer.Major > AMajor) or
            ((WinVer.Major = AMajor) and
             (WinVer.Minor >= AMinor));
end;

procedure InitializeWizard();
begin
  WizardForm.WizardBitmapImage.Height := WizardForm.WelcomePage.Height;
  if CheckWin32Version(5, 1) and (not CheckWin32Version(6, 0)) then
    SetClassLong(WizardForm.Handle, -26, GetClassLong(WizardForm.Handle, -26) + $20000);
end;

时间: 2024-11-05 20:28:13

ISSkin 使用技巧,WinXP 下的窗口阴影的相关文章

WinXP下共享打印机连接失败如何紧急处理

  WinXP下共享打印机连接失败,首先要想到的问题就是重新连接打印服务器,连接成功后才需要考虑下一步操作. 打印机共享具体步骤如下: 1.配置打印机主机 首先我们要在主机上配置打印机.我们暂且称直接连接打印机的电脑为"主机",而局域网内其他需要和主机共享打印的电脑称为"客户机". 第一步:将打印机连接至主机,打开打印机电源,通过主机的"控制面板"进入到"打印机和传真"文件夹,在空白处单击鼠标右键,选择"添加打印机&

如何去除Mac截图的窗口阴影

  使用 Mac 的朋友应该都知道,同时按下 Command + Shift + 3,你就可以对屏幕进行快速截屏,而同时按下 Command + Shift + 4,则可以拖动光标,选择希望截图的区域.但不知道大家有没有注意到,当你对一个窗口进行截图的时候,截图总是会伴随着阴影(drop shadow)出现,那么今天我们就来一起学习如何去除这些阴影. 下面是如何去除Mac截图的窗口阴影的详细操作步骤: 1.首先打开终端窗口,然后输入下列指令 defaults write com.apple.sc

WinXP下如何删除进程管理器中的GoogleUpdate进程

  使用WinXP系统的朋友经常都会用到进程管理器,进程管理器可以帮你监控到每一个悄悄在后台运行的程序.有不少细心的WinXP用户会发现,进程管理器中总是出现GoogleUpdate.exe进程,看名字我们就知道用户一定是安装了Google相关程序,虽然可以将该进程强行终止,不过每次开机后又会出现,而且无论你怎么查找启动项,禁止Google Update Service它都一直会出现,这确实是一个棘手的问题,难道真没有解决方法了吗?为了解决这个问题我们还应当了解它的运行方式. 既然GoogleU

WinXP下光纤拨号出问题的原因及解决方法

  现在大多数家庭都使用光纤接入式宽带,这种宽带速度比传统的网络连接速度更快,也更稳定.由于不少朋友刚接触这种宽带,在使用过程中常常会出现一些问题,比如在WinXP下安装FTTB拨号程序出现了如下故障: 故障原因: 在Windows XP中按照在Windows 98下的操作步骤,安装FTTB专用拨号程序后输入用户名和密码,系统要求重启.重启系统后双击拨号程序,奇怪的是它要求笔者再次建立新的连接,而以往在Windows 98下,就可直接拨号上网了.再次建立一个连接,仍然如此. 故障分析: 由于在安

Mac怎么将Mission Control下的窗口按应用成组

  Mac电脑怎么将Mission Control下的窗口按应用成组 不过,一个好消息是,在使用 Mission Control 的时候,我们可以将类似的应用程序进行分组.更重要的是,在启用分组功能的时候,所有相关联的应用程序都会被放置在一个窗口里,并且该窗口下方会显示对应应用程序的图标. 很显然,有了图标之后,我们可以更容易识别某一个特定的应用程序窗口.下面,我们来看看具体应该怎么操作. 1. 打开系统偏好设置,进入 Mission Control. 2. 在弹出的窗口中勾选"使窗口按应用程序

win7系统下某个窗口程序无声音的原因以及解决方法

  电脑声音出现问题是很多用户都遇到过的问题,通常情况下我们队音频设置进行调整或重装声卡驱动即可解决,而小编在今天遇到一个特别奇怪的问题,同时运行多个应用程序,却发现其中一个程序没有声音,而其他窗口程序声音则正常,对于出现该问题是什么原因造成的,我们需要如何解决?下面小编就以自身的经验,为大家带来解决方法,希望对您有所帮助! 原因分析: Win7系统中有合成器调节,可以帮助用户对程序单独调节音量,如其他声音都正常,那么很有可能就是你不小心单独关闭了某个游戏的音量. 解决方法: 1.单击右下角,音

WinXP下USB驱动开发(一)

  目  录 第1节    概述.... 4 第2节       USB相关技术.... 4 2.1.      USB拓扑结构... 4 2.2.      USB数据流模式... 5 2.3.      USB四种传输模式... 7 2.3.1.      批量传输... 7 2.3.2.      控制传输... 7 2.3.3.      中断传输... 8 2.3.4.      同步传输... 9 2.4.      USB协议层规范... 10 2.5.      USB HUB规

java-JAVA 实现Windows下切换窗口到指定的应用程序

问题描述 JAVA 实现Windows下切换窗口到指定的应用程序 JAVA 实现Windows下切换窗口到指定的应用程序,具体实现及code

WinXP下USB驱动开发(十)

3.4.       其他说明 Ø       编译环境:Win XP Checked Build Environment/Win XP Free Build Environment Ø       开发环境:Microsoft Visual C++ 6.0 Ø       调试工具:Debugging Tools for Windows (x86)(WinDbg) Ø       开发周期:2009-11-7到2009-10-24 Ø       设计人员/编码人员/调试人员:罗振辉 第4节