hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
システムカラーの同期 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

 HSP3.0 

システムカラーの同期

[画面のプロパティ]のデザイン変更に伴うシステムカラーの同期について。

WM_SYSCOLORCHANGE メッセージ

WM_SYSCOLORCHANGE メッセージはシステムカラーが変更された時に発行されるメッセージです。
[画面のプロパティ]のデザインを変更することはすなわち、システムカラーを変更することになります。

画面の背景色をシステムカラーと同期させたい場合はこのメッセージを捕まえて描画すればいいことになります。
また WM_PAINT を捕まえる方法も考えられますが WM_SYSCOLORCHANGE メッセージはシステムカラーが変更された時の1回だけ通知されるのに対して WM_PAINT メッセージは他のウィンドウで隠されたときに出来る無効リージョンに対する描画などもやっているので、 WM_SYSCOLORCHANGE メッセージを捕まえてみました。

HSP2.6 スクリプト

HSP3.0 スクリプト

このスクリプトの動作確認は起動中に[画面のプロパティ]の[デザイン]タブからデザインを変更してください。

filev3_034_FixSysColor.hsp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;===========================================================
;   システムカラーの同期
;                                               for HSP 3.0a
;   2005/12/12 ... kz3
;===========================================================
 
#include "user32.as"
#include "gdi32.as"
 
#define WM_SYSCOLORCHANGE 0x0015
#define WM_SETFONT        0x0030
 
    // 画面をシステムカラーで塗りつぶす
    screen 0, 300,400
    syscolor 15    ; オブジェクトの表面色
    boxf
 
    objmode 1, 1: objsize 150,20
    pos 75, 10    : button gosub "button", *dummy
    pos 75, 40    : buf = "input": input buf,,,63
    pos 75, 70    : chkbox "chkbox", chked
    pos 75, 100    : Llist = "ListItem0\nListItem1\nListItem2"
                  listbox Litemno, 50, Llist
    pos 75, 160    : Clist = "ComItem0\nComItem1\nComItem2"
                  combox Citemno, 50, Clist
    pos 0, 230    : winobj "STATIC", "", 0, $50000001, ginfo_winx, 20, 0, 0 ; ID-5
        // スタティックコントロールにGUIフォント
        GetStockObject 17
        if stat=0: end: else: hfont = stat
        sendmsg objinfo(5,2), WM_SETFONT, hfont, 0
 
    // 同期しない場合はコメントアウト
    oncmd gosub *On_SysColorChange, WM_SYSCOLORCHANGE
    stop
 
*On_SysColorChange
    // 画面をシステムカラーで塗りつぶす
    syscolor 15    ; オブジェクトの表面色
    boxf
    SetWindowText objinfo(5,2),"WM_SYSCOLORCHANGE"
    return
 
*dummy
    return

コメント

  • 歯医者行きます。(ぇ -- kz3 2005-12-12 (月) 11:14:18
  • hsp2.61で標準機能でやろうとするとループ中でpgetを使ってやるか、スタティックコントロールを画面いっぱいに貼り付けてその上にコントロールを置くか・・・。 -- kz3 2005-12-12 (月) 13:45:50

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リファレンス


添付ファイル:
filev3_034_FixSysColor.hsp
330件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:38:54 (2436d)