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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0814
ヒラギノinput を透明化する10解決


ヒラギノ

リンク

2014/8/14(Thu) 15:18:36|NO.63793

Input を透明化する方法はありませんか?

http://tu3.jp/0414

を参考にして作ってみましたが、一部が透明になりませんでした><



この記事に返信する


ぴょぴょ

リンク

2014/8/14(Thu) 15:24:15|NO.63794

Input のウインドウ・スタイルを変更してません。

・拡張ウィンドウスタイル
http://chokuto.ifdef.jp/urawaza/prm/extended_window_style.html

ここの WS_EX_TRANSPARENT を追加して下さい。

・ウィンドウスタイルの変更
http://lhsp.s206.xrea.com/hsp_window.html#1

これを参考に拡張ウインドウ・スタイルを変更します。



ヒラギノ

リンク

2014/8/14(Thu) 16:56:25|NO.63795

文字まで、透過されてしまいました><



KOMARI

リンク

2014/8/14(Thu) 19:05:25|NO.63803

1:これらを定義してください。
 関数:SetWindowLong.GetWindowLong
 定数:GWL_EXSTYLE,WS_EX_TRANSPARENT

2:inputを設置し、そのハンドルを変数に格納してください。
 その際、HSP Document Libraryにある"objprm"の項がヒントになるかもしれません。

3:SetWindowLongと、2の変数を使ってinputを透明にします。
 SetWindowLongやGetWindowLongの使い方は自分で調べてみてください。
 HSPでもSetWindowLongを使用したサンプルはいくつかありました。



ヒラギノ

リンク

2014/8/14(Thu) 19:56:12|NO.63810


#uselib "user32.dll" #func GetWindowLong "GetWindowLongA" int, int #func SetWindowLong "SetWindowLongA" int, int, int picload dir_exe + "/sample/demo/sky_bg.jpg" a = "AAAAAAAAAAAAAAAA" input a, 200 hInput = objinfo(stat, 2) GetWindowLong hInput, -20 SetWindowLong hInput, -20, $00000020 stop

これで、あっていますか?
透明になりませんでした><



ぴょぴょ

リンク

2014/8/14(Thu) 20:29:39|NO.63814

> 透明になりませんでした><
なんか難しいですね。
input に WS_EX_TRANSPARENT の代わりに WS_EX_LAYERED スタイルを付けてみるとか。どう?

・第346章 透明ウィンドウを作る
http://www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm
http://www.kumei.ne.jp/c_lang/sdk4/sdk_347.htm
http://www.kumei.ne.jp/c_lang/sdk4/sdk_348.htm
http://www.kumei.ne.jp/c_lang/sdk4/sdk_349.htm

ここを参考に

・SetLayeredWindowAttributes
http://msdn.microsoft.com/ja-jp/library/cc411043.aspx

こちらはAPI関数の資料

ネットで「コントロール 透明化」で検索をかけてみるとか?

いっぱい出るが
http://oshiete.goo.ne.jp/qa/5263202.html

ここによると無理っぽい。



KOMARI

リンク

2014/8/14(Thu) 21:51:34|NO.63817

うげ、できたと思ったら白背景だったからだ(´;ω;`)

結局できてませんごめんなさい(´;ω;`)



KOMARI

リンク

2014/8/14(Thu) 22:54:22|NO.63818

こんなのがあったけど(・ω・)……
http://www.lunaport.net/blog/2011/12/windows.html



ヒラギノ

リンク

2014/8/15(Fri) 11:30:42|NO.63833

テストです。の文字が透明になるってことは、
白い部分が透明になるようにすることもできませんかね。。。



kona

リンク

2014/8/15(Fri) 13:22:40|NO.63834

ヒラギノさんの参考先のスクリプトを一か所変更して枠を消す部分を追加しただけでで動きましたが

#module #uselib "gdi32.dll" #cfunc CreatePatternBrush "CreatePatternBrush" int #func DeleteObject "DeleteObject" #func SetBkMode "SetBkMode" int,int #func SetBrushOrgEx "SetBrushOrgEx" int,int,int,int #uselib "user32.dll" #func GetWindowRect "GetWindowRect" int,int #func MapWindowPoints "MapWindowPoints" int,int,int,int #deffunc UpdateBackgroundBrush if ginfo_sel >= length(hBrush) : hBrush.ginfo_sel = 0 if hBrush.ginfo_sel : DeleteObject hBrush.ginfo_sel mref bmscr,67 : hBrush.ginfo_sel = CreatePatternBrush(bmscr.7) oncmd gosub *OnCtlColor, 0x133 //WM_CTLCOLOREDIT return *OnCtlColor oldSel = ginfo_sel : gsel ginfo_intid : dim rect,4 SetBkMode wParam, 1 // TRANSPARENT GetWindowRect lParam, varptr(rect) MapWindowPoints 0, hWnd, varptr(rect), 2 SetBrushOrgEx wParam, -rect.0, -rect.1, 0 gsel oldSel : return hBrush.ginfo_intid #global //// モジュここまで picload dir_exe + "/sample/demo/sky_bg.jpg" UpdateBackgroundBrush #include "user32.as" a = "AAAAAAAAAAAAAAAA" input a, 200 hInput = objinfo(stat, 2) GetWindowLong hInput, -20 SetWindowLong hInput, -20,stat & $FFFFFDFF SetWindowPos hInput, 0, 0, 0, 0, 0, $0027



ヒラギノ

リンク

2014/8/15(Fri) 13:24:10|NO.63835

kona さん、ありがとうございます!解決です!



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