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

小ワザ

BMSCR構造体

BMSCR構造体を使うといろいろ画面関係の情報が取得できるそうです。
というわけで、頻繁に使いそうなものだけモジュールをこさえました。

  • 一時的に設定を変更し、あとで元に戻したいときなんかに使えると思います。
  • 通常はこのモジュールそのままよりも、モジュールを作ったときにその中で こういう処理を入れてやったほうがいいかと。
  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
 45
 46
 47
 48
 49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;#############################################################################
;	for HSP 3.32
;#############################################################################
#module
;アクティブウィンドウのBMSCR構造体を取得
#deffunc getbmscr
    mref bm, 67
    return
;colorで設定した色情報を取得する
#deffunc getcolor array clr
    clr.0 = bm.40 & $ff
    clr.1 = bm.40>>8 & $ff
    clr.2 = bm.40>>16 & $ff
    return
;posで設定できるカレントポジションを取得
#deffunc getpos var p1, var p2
    p1 = bm.27
    p2 = bm.28
    return
;ウィンドウサイズを取得
#deffunc getwinsize var p3, var p4
    p3 = bm.1
    p4 = bm.2
    return
#global
 
dim cl,3
 
screen 1,480,360
getbmscr
color 255,0,0
pos 10,50
gosub *bmpara
 
screen 0
getbmscr
mes "BMSCR構造体のパラメータ取得"
color 0,0,255
gosub *bmpara
stop
 
*bmpara
    getpos x,y
    mes "カレントポジション:x = "+x+", y = "+y
    getcolor cl
    mes "カラーコード:"+cl.0+" "+cl.1+" "+cl.2
    getwinsize w,h
    mes "ウィンドウサイズ:横 = "+w+", 縦 = "+h
    return
  • 他にも沢山の情報が取得できます。詳細はマニュアルかさくらさんとこのHSP Tipsをご覧下さい。
    基本的な使い方の例と言うことで…。(ォィ
  • オブジェクトIDや文字列操作の中のサンプルでも使用例があります。

コメント

  • 個人的には頻繁に使いそうな小ワザ。今日発見♪(BMSCR構造体むずかしそうで今まで避けてました..._| ̄|○) -- GENKI? 2005-09-17 23:58:01 (土)
  • 構造体の内容については今の私が書くとさくらさんの解説をそのままコピペしてしまうだけになっちゃうので省略。 -- GENKI? 2005-09-17 23:58:22 (土)
  • 普通システムの内部情報(BMSCR構造体はHSPの内部情報)を取得するものって読み取り専用だったりするけど、オブジェクトIDに見られるように取得後BMSCR構造体のメンバを書き換えられるってことは・・・BMSCR構造体のポインタを取得しているのかなぁ・・・ごにょごにょ。 -- kz3 2005-09-18 08:55:55 (日)
  • あ、それからGENKIさん、無理やりコメントをこんな風にしなくても「*コメント」でもいいですよ^^;いっぱい見出しのあるページで見出し毎にコメントの付きそうなページにそれをやっちゃうと#contentsを書いたときにコメントコメントコメントコメントみたいになっちゃうかなと思って避けただけなので^^; -- kz3 2005-09-18 08:57:54 (日)
    • どこかで使われてたのかっこよかったので何も考えずなんとなくコピペしてました。それをまたコピペ…。そですねここはそんなに増えないと思うんで普通に変更しときます。--GENKI?
  • 書き方いろいろ
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
    
     
     
     
     
     
     
     
     
     
     
     
     
    
    /*
        clr.0 = bm.40&(1<<8-1)
        clr.1 = bm.40&(1<<16-1)>>8
        clr.2 = bm.40&(1<<24-1)>>16
     */
        clr.0 = bm.40 & $FF
        clr.1 = bm.40 >> 8 & $FF
        clr.2 = bm.40 >>16 & $FF
     
    ;   Bはこれでもいいかな。
    ;   clr.2 = bm.40 >> 16 下位16ビット切り捨て。マスクなし。
    ;   上位8ビットは$00だろうからシフトしてもMSBに1が立つことはないだろうし。
    
      1
      2
      3
      4
      5
      6
      7
      8
      9
    
     
     
     
     
     
     
     
     
     
    
    /*
        clr.0 = bm.40&(1<<8-1)
        clr.1 = bm.40&(1<<16-1)>>8
        clr.2 = bm.40&(1<<24-1)>>16
     */
        ; 上と同じ意味
        clr.0 = bm.40&0xFF
        clr.1 = bm.40&0xFFFF>>8
        clr.2 = bm.40&0xFFFFFF>>16
    まぁマスクが先か、シフトが先か、だけの話でしたね^^; -- kz3 2005-09-18 10:14:01 (日)
  • いつもサンクスです。おかげでようやく意味が理解できました。何だかよく理解できなかったけど、これ以上洗練させるには時間かかりそうだったし、後で…とか思ってると忘れそうでもあったしというわけでそのまま書き込んでました。(現に忘れてた [worried2])(正直ほんのちょっぴりkz3さんあてにしてました [hiki2] )すみません。 -- GENKI? 2005-09-18 20:39:38 (日)
  • 個人的には前者よりも後者のほうが意味が明確になるような気がして好きです。加えて言うと、
      1
      2
      3
    
     
     
     
    
        clr.0 = bm.40&0x0000FF
        clr.1 = bm.40&0x00FF00>>8
        clr.2 = bm.40&0xFF0000>>16
    とするとより意味が明確になってサンプルとしては分かりやすくてよさそうな雰囲気。ただ実際使うときはどうなんでしょう、記述が短い前者のほうがいいのかな。 -- GENKI? 2005-09-18 20:47:23 (日)
  • HSP2からの移植の際、BMSCR構造体を調べてウインドウIDを調べましたが、Hsp3にはhwndというのがあるんですね。 -- hiroki? 2005-11-20 (日) 13:14:44
  • ウィンドウIDとウィンドウハンドルはちょっと違いますよー。 -- kz3 2005-11-21 (月) 08:58:11
  • ごめん書き間違えてました。 ウィンドウハンドルのことです。 -- hiroki? 2005-11-21 (月) 18:35:22

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

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-08-06 (火) 11:18:44 (124d)