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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1226
Crystalステータスバーの塗りつぶし2解決


Crystal

リンク

2021/12/26(Sun) 23:18:52|NO.94780

Microsoft Visual StudioやVisual Studio Codeのようにステータスバーを特定色で塗りつぶすことは可能でしょうか?
例えば、ステータスバーを、青で塗りつぶすことは可能でしょうか?それともboxfで簡易的ステータスバーを作成しないと厳しいでしょうか?
教えていただけると幸いです。



この記事に返信する


沢渡

リンク

2021/12/27(Mon) 19:26:25|NO.94793

調べてみるとSB_SETBKCOLORなるウィンドウメッセージを送れば背景色を変更できる…という
記述が出てきたのですが、試してみても上手くいかず、もう少し調べてみると
「ビジュアルスタイルには対応していない」という記述があり、
この方法はWindows10や11では使えない様子…?

他のやり方もわからないので、妥協案として、スタティックコントロールで「ステータスバーもどき」を
作ってみる方法でやってみました。
他に良い方法があるかもしれませんが、これでよろしければ。

//コメントの冒頭に"*"がついている行の色指定は0xBBGGRRという形で行うこと。(RRGGBBではないことに注意) #include "comctl32.as" #include "user32.as" #include "gdi32.as" #const WS_VISIBLE 0x10000000 #const WS_CHILD 0x40000000 #const CCS_BOTTOM 0x3 #const SS_CENTERIMAGE 0x200 //スタティックコントロールにこれを指定すると縦方向に中央揃えできる模様 #const WS_EX_CLIENTEDGE 0x200 #const WS_BORDER 0x800000 #const WM_SETTEXT 0xC #const WM_CTLCOLORSTATIC 0x138 dim rect,4 //ステータスバーの高さを調べるために、一旦本物のステータスバーを作る CreateStatusWindow WS_VISIBLE|WS_CHILD|CCS_BOTTOM,"",hwnd,0 : s_h=stat GetWindowRect s_h,varptr(rect) : height=rect(3)-rect(1) //height:ステータスバーの高さ DestroyWindow s_h //ステータスバーを消去 //スタティックコントロールでステータスバーもどきを作る。 //ここでは試しに画面の左端から右端までのサイズのもの一つを作る。 pos 0,ginfo_winy-height //↓第3パラメータの「WS_EX_CLIENTEDGE」と第4パラメータの「|WS_BORDER」の有無で枠線の太さが変わる。 //「|WS_BORDER」だけを削除すれば少し細く、「WS_EX_CLIENTEDGE」だけを0にすればさらに細くなる。 winobj "static","",WS_EX_CLIENTEDGE,WS_VISIBLE|WS_CHILD|SS_CENTERIMAGE|WS_BORDER,ginfo_winx,height st_h=objinfo(stat,2) //スタティックコントロールのハンドル CreateSolidBrush 0xFF0000 : br_h=stat //*背景色のブラシを作成。ここでは青。 onexit *exit oncmd gosub *st_color,WM_CTLCOLORSTATIC s="hoge" : sendmsg st_h,WM_SETTEXT,0,varptr(s) //スタティックコントロールのテキストを変更 color 127,127,127 : boxf //わかりやすくするために灰色で染める。この行は削除して構いません。 stop *st_color if lparam=st_h { //lparamがステータスバーのハンドルかどうかを調べ、そうならば処理を行う。 SetTextColor wparam,0xFFFFFF //*文字の色 ここでは白 SetBkColor wparam,0xFF0000 //*背景色 ここでは青 return br_h //ブラシを返す必要がある } return *exit DeleteObject br_h //終了時にブラシを削除 end



Crystal

リンク

2021/12/27(Mon) 21:52:55|NO.94796

>沢渡さん
ありがとうございます。私も調べたのですが、これはboxfで簡易的なものでしか無理かなと感じました。でも、沢渡さんの方法が確実な感じです。ありがとうございます。
これでひとまず解決にします。(一部自己解決になってしまいすみません...)



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