开发者社区> 杰克.陈> 正文

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

简介: 原文 http://restools.hanzify.org/article.asp?id=109 是否觉得在使用 ISSkin 的时候感觉窗口太过平板,尤其对于那些窗口边缘和窗口内部颜色一致的皮肤尤其是这样,继续使用 Sakura 皮肤作为讲解,下图就是安装程序的截图,是否觉得就像一张纸一样,缺...
+关注继续查看

原文 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 引用来自 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;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
win32 字体变换与窗口同大同小
[cpp] view plaincopy   #include    #include "res/resource.h"         LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA...
715 0
Windows cmd窗口改变字体或背景颜色
Windows cmd窗口改变字体或背景颜色
21 0
UbuntuEclipse颜色提示修改(WinXP窗口背景颜色修改)+快捷方式启动
<h2>1.颜色提示修改</h2> <p>大家用过ubuntu都知道在11.04后,ubuntu采用来unity这个桌面,无疑很多人不适应这个界面,但是对于开发人员来说,这些都是小事了,但是对于一个铁血java当来说,eclipse的提示颜色看不清这可真是要命了的,我结合网上的文章,自己探索一一种好用的方法。</p> <p><br></p> <p><span style="font-
1622 0
Win10桌面图标显示问题
Win10桌面图标显示问题
26 0
【技术贴】xp任务栏字体变大变小
今天远程到服务器上,发现任务栏字体变小了,百度了很久,发现百度就是个渣渣,什么答案都搜不到。就自己摸索了一下。 方法一: 桌面右击属性-外观-字体大小, 下拉匡 方法二 :桌面右击【属性】-【外观】- 【高级】-项目里面-选择-【活动窗口标题栏】-字体大小改成8就可以了~!看截图。
752 0
win7,如何设置成XP系统那样,打开的窗口都显示在任务栏
win7,如何设置成XP系统那样,打开的窗口都显示在任务栏
103 0
背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸
原文:背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 [源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1、窗口全屏UI/FullScreen.
1194 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载