Form 變成半透明為何Win2000沒問題,Win98下執行會有錯誤? |
答題得分者是:Justmade
|
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
我下載本站分享程式:(半透明視窗)
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; const
WS_EX_LAYERED = $80000;
AC_SRC_OVER = $0;
AC_SRC_ALPHA = $1;
AC_SRC_NO_PREMULT_ALPHA = $1;
AC_SRC_NO_ALPHA = $2;
AC_DST_NO_PREMULT_ALPHA = $10;
AC_DST_NO_ALPHA = $20;
LWA_COLORKEY = $1;
LWA_ALPHA = $2;
ULW_COLORKEY = $1;
ULW_ALPHA = $2 ;
ULW_OPAQUE = $4; //新增加的常量定義 type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint;
bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函數聲明 var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var l:longint;
begin
l:=getWindowLong(Handle, GWL_EXSTYLE);
l := l Or WS_EX_LAYERED;
SetWindowLong (handle, GWL_EXSTYLE, l);
SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA);
//第二個參數是指定透明顏色
//第二個參數為0則使用第四個參數設置alpha值,從0到255
end;
end.
為何Win2000沒問題,Win98下執行會產生:
"Project1.exe檔案無法連結到輸出函式USER32.DLL;Setlayered Window
程式執行錯誤等訊息"
請問各位大大:要如何解決? 何明昌
------
何明昌 |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
Rocy
一般會員 發表:1 回覆:4 積分:1 註冊:2003-03-13 發送簡訊給我 |
|
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
|
Rocy
一般會員 發表:1 回覆:4 積分:1 註冊:2003-03-13 發送簡訊給我 |
|
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
我改用D6,AlphaBlend=True,并指定AlphaBlendValue=150後
下列函數移除不用:
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint;
bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函數聲明
SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA); 在Win2000執行正常,但在Win98可以執行,但不會透明,是何故? 何明昌
------
何明昌 |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 我改用D6,AlphaBlend=True,并指定AlphaBlendValue=150後 下列函數移除不用: function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函數聲明 SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA); 在Win2000執行正常,但在Win98可以執行,但不會透明,是何故?我想這是因為 WIN98 沒有實作 "半透明" 的功能吧 ! 記得只有 WIN2000 以上才有 ... 如果要在 WIN98 作出 "半透明", 本站好像有元件和Samples可參考.
------
將問題盡快結案也是一種禮貌! |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |