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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0913
Fubuki各種オブジェクトの文字色・背景色変更について10未解決


Fubuki

リンク

2016/9/13(Tue) 00:29:53|NO.76862

以下のようなスクリプトを書いて、各種オブジェクトの背景色・文字色の変更を使用としています。

しかし、ボタンとコンボボックスがうまくいきません。
また、このスクリプトには長くなるので載せませんでしたが、メニューバーも同様に色を変えたいと思っています。

ボタンについては、下記の通りモジュールにしてくださっているものがあったのでそれを利用していますが、1つ1つ設定せずに済むと楽だなぁと考えています。
http://wiki.hsp.moe/Module%EF%BC%8Fmod_customizebutton_v2.html


 お手数をおかけしますが、ボタン・コンボボックス・メニューバーの色の変更に関して、ご存知の方がいましたらお教えください。



なお、下記スクリプトの政策には下記サイトの開設を参考にさせていただきました。
http://lhsp.s206.xrea.com/hsp_object5.html

<pri>


#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16)
#include "hsp3util.as"
#uselib "gdi32"
#func global SetBkColor "SetBkColor" sptr,sptr
#func global SetBkMode "SetBkMode" sptr,sptr
#func SetTextColor "SetTextColor" sptr,sptr
#func global CreateSolidBrush "CreateSolidBrush" sptr
#func global DeleteObject "DeleteObject" sptr
#uselib "user32"
#func GetComboBoxInfo "GetComboBoxInfo" sptr, sptr
//カラーブラシ作成
CreateSolidBrush RGB($0,$0,$0) //黒
hBrush_bk=stat
// COMBOBOXINFO構造体用
dim COMBOBOXINFO, 13
COMBOBOXINFO = $34


oncmd gosub *ctlcoloredit, $133 //WM_CTLCOLOREDIT
oncmd gosub *ctlcoloredit, $134 //WM_CTLCOLORLISTBOX

oncmd gosub *ctlcoloredit, $135 //WM_CTLCOLORBTN
oncmd gosub *ctlcoloredit, $138 //WM_CTLCOLORSTATIC
onexit *exit

cls 4
objsize 200,24
str1="サンプル"
str2="サンプル\nサンプル2\nサンプル3"

combox a, 100, str2 //中途半端にしか色が変わらない
hCombox = objinfo (stat, 2)
GetComboBoxInfo hCombox, varptr (COMBOBOXINFO)
hComboxList=COMBOBOXINFO.12

button str1,*exit //色が買わなない
hbutton=objinfo(stat,2)

listbox b,100,str2
hlistbox=objinfo(stat,2)

mesbox str1
hmesbox=objinfo(stat,2)

statictext str1,200,24 //後で書き換えが出来て便利
hstatic=objinfo(stat,2)
stop

*ctlcoloredit
if (lparam=hComboxlist) or (lparam=hCombox) or (lparam=hlistbox) or (lparam=hmesbox) or (lparam=hstatic){
setBkMode wparam,2
SetTextColor wparam, RGB ($FF, $FF, $FF)
SetBkColor wparam, RGB($00,$00,$00)
return hBrush_bk
}
return
*exit
DeleteObject hBrush_bk //メモリ会報
end


</pri>



この記事に返信する


MillkeyStars

リンク

2016/9/13(Tue) 04:29:42|NO.76864

ほしい情報はここかな?(すべて C言語で書かれていますが)
http://www50.tok2.com/home2/StillGreen/knowledge/program/backcolor.htm

基本的にスクリプトはすべて正常な動作。
ボタンもよくみると、色が設定されている部分とされていない部分があると思いますが、これは仕様ですので正常となります。
(これは、コントロール側がロールオーバーの処理をしていて規定色で描画している為、ロールオーバー処理以外の部分の色は変更されます)

この制限をなくすために、参考にされた「Module/mod_customizebutton_v2」サイトもオーナードローの設定をし自前で描画してるのです。
メニューに関しても、同様でオーナードローで描画しないといけません。ただし、ビットマップが用意できる場合は作成時に登録し表示させることが可能です。
以上の理由により、色変更できる部分がコントロールによって違います。



Fubuki

リンク

2016/9/13(Tue) 19:19:21|NO.76870

>> MillkeyStars 三。

 返信ありがとうございます。
 残念ながら、お教えいただいたURLにアクセスできません。お手数ですが再度お教えいただければと思います。

 また、追加で申し訳ないのですが、リストボックスのスクロールバーのハンドルについても、取得方法が分かりましたらお教えください。なくしたいのではなく、色を変えたいです。おそらく、ハンドルが分かればoncommandにWM_CTLCOLORSCROLLBAR($137)を追加することで実現できるかと思っています。


 よろしくお願いします。



InoueSoftware

リンク

2016/9/13(Tue) 21:53:06|NO.76872

リストボックスのスクロールバーは、リストボックスに直接付いているので、
リストボックスのスクロールバーハンドルは、リストボックスのウィンドウハンドルになります。
なので、色設定はフラットスクロールバーに設定してから、
FlatSB_SetScrollPropのWSB_PROP_HBKGCOLORインデックスなどで設定します。

ちなみに、WM_CTLCOLORSCROLLBARはScrollBarクラスで作成したコントロールのみ利用できます。

https://msdn.microsoft.com/en-us/library/windows/desktop/bb775438(v=vs.85).aspx

下のようにすればいいのですが、フラットスクロールバーにならないですね。
#include "comctl32.as"
#define FSB_FLAT_MODE 2 #define FSB_ENCARTA_MODE 1 #define FSB_REGULAR_MODE 0 #define WSB_PROP_CYVSCROLL 0x00000001 #define WSB_PROP_CXHSCROLL 0x00000002 #define WSB_PROP_CYHSCROLL 0x00000004 #define WSB_PROP_CXVSCROLL 0x00000008 #define WSB_PROP_CXHTHUMB 0x00000010 #define WSB_PROP_CYVTHUMB 0x00000020 #define WSB_PROP_VBKGCOLOR 0x00000040 #define WSB_PROP_HBKGCOLOR 0x00000080 #define WSB_PROP_VSTYLE 0x00000100 #define WSB_PROP_HSTYLE 0x00000200 #define WSB_PROP_WINSTYLE 0x00000400 #define WSB_PROP_PALETTE 0x00000800 #define WSB_PROP_MASK 0x00000FFF sdim s repeat 100:s+=strf("%03d\n",cnt):loop listbox n,,s hListBox=objinfo_hwnd(stat) InitializeFlatSB hListBox FlatSB_SetScrollProp hListBox, WSB_PROP_VSTYLE, FSB_FLAT_MODE, 1 FlatSB_SetScrollProp hListBox, WSB_PROP_VBKGCOLOR, 0xFFFF00,1



fubuki

リンク

2016/9/15(Thu) 20:05:38|NO.76879

井上ソフトウェア様、返信ありがとうございます。


残念ながら、英語は全くと言ってよいほどわかりませんで・・・おてあげです。

URLをいじって日本語表示を試みましたが、「選択された言語では表示できません。」とかで、ダメでした。


引き続き、わかる方がいらっしゃいましたらよろしくお願いします。



InoueSoftware

リンク

2016/9/15(Thu) 20:13:23|NO.76880

日本語の資料をMicrosoftは持っていないので、翻訳サービスを使って見てください。

▼下のリンクを押すと、Google翻訳で日本語化した資料を見る事が出来ます。
https://translate.google.co.jp/translate?sl=en&tl=ja&js=y&prev=_t&hl=ja&ie=UTF-8&u=https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fdesktop%2Fbb775438.aspx



InoueSoftware

リンク

2016/9/15(Thu) 21:01:26|NO.76881

NO.76870の、
>残念ながら、お教えいただいたURLにアクセスできません。

Wayback Machineでアーカイブを見ることが出来ます。
https://web.archive.org/web/20151029221536/http://www50.tok2.com/home2/StillGreen/knowledge/program/backcolor.htm

なんかいきなりですいません...



MillkeyStars

リンク

2016/9/16(Fri) 00:23:58|NO.76884

Fubuki さん、提示したURL が見れなくてすみません。(tok2 のHP よく見れなくなるんだよねー・・・)
InoueSoftware さん、変わりのページの提示ありがとうございます。

基本的に、自分でサブクラスなどを作成しないで、オーナードローだけを使用するならウインドウメッセージで通知が送られてくるから作成するのも簡単かなーっとURL を提示させていただきました。
(本来はサブクラスを作りたいところですが、なにせHSPにコールバックがないので・・・)



Fubuki

リンク

2016/9/16(Fri) 17:26:48|NO.76887

お二方、返信ありがとうございます。

やはり、オーナードローを覚えないとだめなのかなぁと思い始めました。
オーナードローについては少し見ては見ましたが、ほとんど理解できませんでした。

listbox、statictext、mesboxは簡単なのに、chkbox、cmbbox、buttonについてはとても難しいんですね・・・。



千本桜

リンク

2016/9/16(Fri) 20:20:04|NO.76890

少し、参考となるリンク貼っておきます。

http://tu3.jp/0107

過去ログ
http://hsp.tv/play/pforum.php?mode=pastwch&num=49657



Fubuki

リンク

2016/9/21(Wed) 00:09:35|NO.76920

千本桜 様

 URLありがとうございます。


 早速試してみましたが、やはり

  ・チェックボックスの背景色は変更できても文字色が黒のまま
 ・コンボボックスの色を変更しても、展開して出てくる選択肢部分にしか反映されず、
  トップにいつも表示され続ける部分に影響しない。


という結果でした。複数のモジュールを試していますが、これはやはり共通のようです。
(モジュール内部での処理内容も、ほぼ同じですし)

 windows Airoの導入された7以降での問題のようで、これはどうにもならないのかもしれません。


 世の中、そろそろ諦めが肝心なのかと思っています。



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