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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1012
Atsu0504Aero Glassの使い方は?3解決


Atsu0504

リンク

2009/10/12(Mon) 13:42:18|NO.28280

ウインドウの中をAero Glassを使って透明にしたいのですが、
ネットでみつけた

#uselib "dwmapi.dll" #func defica "DwmExtendFrameIntoClientArea" int, var cls 4 //黒で通常のガラス効果が得られる margins = -1, 0, 0, 0 //-1 を指定するとウィンドウ全体 defica hwnd, margins
を使うと黒い色が透明になって文字が思うように書けないのですが、
どうすればいいでしょうか?



この記事に返信する


inovia

リンク

2009/10/13(Tue) 17:24:31|NO.28290

GDI+を利用して描写しないと、黒文字が一緒にグラス化されるみたいですね。

下記のサイトにHSPでのグラス化のやり方が掲載されていますが、どうでしょうか?
http://waiei.blog7.fc2.com/blog-entry-509.html



inovia

リンク

2009/10/13(Tue) 18:38:43|NO.28291

GDI+ を使わずに 黒の文字を表示させるサンプル
ID 0のウィンドウに透過させ、子ウィンドウ化させたID 1ウィンドウを使用しています。
文字を書く場合は ID 1 に書き込みます。



#uselib "dwmapi.dll" #func defica "DwmExtendFrameIntoClientArea" int, var #uselib "user32.dll" #cfunc GetWindowLongA "GetWindowLongA" int,int #func SetWindowLongA "SetWindowLongA" int,int,int #func SetLayered "SetLayeredWindowAttributes" int,int,int,int #func SetParent "SetParent" int,int #define WM_MOVE 0x0003 #define WM_ACTIVATE 0x0006 margins = -1, 0, 0, 0 //-1 を指定するとウィンドウ全体 defica hwnd, margins _hwnd=hwnd:boxf oncmd gosub *_move ,WM_MOVE // ID 0 の位置に合わせて ID 1 の bgscr ウィンドウ作成 _x=(ginfo(10)-ginfo(12))/2:_y=(ginfo(11)-ginfo(13))-_x bgscr 1,320,480,0,_x+ginfo(4),_y+ginfo(5):gsel 1,2 // 背景(ID 1)を 透明化 & 子ウィンドウ化 SetWindowLongA hwnd,-8,_hwnd SetWindowLongA hwnd,-20,GetWindowLongA(hwnd,-20)|0x00080000 SetLayered hwnd,0xFEFEFE,0,1 // 254,254,254 を透過色として利用 color 254,254,254:boxf // 黒で書いてみる color:font "",12, repeat 32:mes "ほっとすーぷぷろせっさー":loop button "END",*exit stop *_move // 移動したときに ID 0 の位置に ID 1のウィンドウを移動させる xPos=lParam&0xFFFF:yPos=(lParam>>16)&0xFFFF gsel 0,0:__x=ginfo(4):__y=ginfo(5) gsel 1,0:width ,,_x+__x,_y+__y return *exit end



Atsu0504

リンク

2009/10/13(Tue) 22:46:57|NO.28296

これでうまくいきそうです。
透明色を微妙な色に指定できるようにしたんですね!
ありがとうございました!



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