HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0327
いくすウィンドウの変形・半透明化2解決


いくす

リンク

2007/3/27(Tue) 10:08:39|NO.6588

ウィンドウを半透明化するモジュールをつくってみました。
公開の目的はhspのユーザー様方にバグの有無、またはそれぞれの環境での動作確認です。
もしろよしければ、お使いになっていただければ幸いです。著作権は放棄します。
私の予想ですが、Win 9xでは透明化ならないような…(2000,XPのみのような気がします)
95のソフトでウィンドウのが抜けているのを見たことがある(透明化はなし)

/* <tomei.hsp> ■ 書式  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ wintra p1,p2,p3,p4,p5 p1 :透明度 ( p1=0〜100 ) % 100=不透明 p2 :透明モード ( 0〜3 ) p3,p4,p5 :設定色 (RGB 各 0〜255) ■ 解説  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ウィンドウの透明化を行う。 透明モード モード :効果 ----------------------------------------------- 0 :透明化しない 1 :p3,p4,p5の色をカラーキーとする透明化 2 :透明度にしたがって半透明化 3 :1と2の複合 ■ サンプルスクリプト  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ #include "tomei.hsp" */ wintra 50,3,255,255,255 ;ウィンドウを透明化する。(透明度50% 白色完全透明化) #module #uselib "user32.dll" #define global GWL_EXSTYLE -20 #func global work1 "GetWindowLongA" int,int #func global work2 "SetWindowLongA" int,int,int #func global work3 "SetLayeredWindowAttributes" int,int,int,int #deffunc wintra int p,int m,int red,int gre,int blu poke colo,0,red poke colo,1,gre poke colo,2,blu work1 hwnd,GWL_EXSTYLE@ work2 hwnd,GWL_EXSTYLE@,0x00080000 work3 hwnd,colo,(255*p)/100,m return #global

どうでしょうか?



この記事に返信する


vn

リンク

2007/3/27(Tue) 19:15:06|NO.6591

あえて掲示板に書き込むということは、それなりの覚悟はあるんだろうな・・・ということで遠慮なく指摘。

> 私の予想ですが、Win 9xでは透明化ならないような…(2000,XPのみのような気がします)

透明にならない以前に、動作しません。

> #include "tomei.hsp"
> */ wintra 50,3,255,255,255

コメントの外に出てますぜ?

> #define global GWL_EXSTYLE -20
> #func global work1 "GetWindowLongA" int,int
> #func global work2 "SetWindowLongA" int,int,int
> #func global work3 "SetLayeredWindowAttributes" int,int,int,int

globalは指定しないほうがよいかと。

> work1 hwnd,GWL_EXSTYLE@
> work2 hwnd,GWL_EXSTYLE@,0x00080000

GetWindowLong の戻り値が無視されています。



いくす

リンク

2007/3/27(Tue) 20:21:55|NO.6597

ご指摘ありがとうございます。

コメントからはみ出しについては貼り付けの際でのミスです。すみませんでした。
その他のミスについては私の知識不足です。すみません
気づくの遅いかもしれませんが関数なので#funcではなく#cfuncですよね
私はまだDLLの使い方などについては初心者・学習途上の段階ですので、
今回のようなご指摘は大変うれしいですし、それに沿えられるようこれからも励みます。

あと、まさしく自分で調べるべきことですが、9xなどと互換性があるAPI(ウィンドウの透明化)はあるのでしょうか?



ONION software Copyright 1997-2021(c) All rights reserved.