Last Update : 2009/04/xx
様々なウィンドウ関連情報を取得する関数です。関数名の由来は「general information」。
HSP2では命令形式で提供されていましたが、HSP3では関数として記述法が変わってます。また、HSP2ではシステム変数から得られたものも加わって取得できる情報の数が増えてます。
ginfo (取得タイプ)
第1パラメータに取得するタイプを指定します。
この取得タイプは、マクロとしてcommonフォルダ内の「hspdef.as」ファイル内でシステム変数として定義されてます。スクリプトのコンパイルの際にginfo関数へと置き換えられます。
マウスカーソル(ポインタ)の表示位置をXY座標で取得します。基点はモニタ画面全体の左上になります。マクロ定義のシステム変数としてginfo_mxとginfo_myが割り当てられてます。
repeat title ""+ginfo(0)+" x "+ginfo(1) wait 10 loop
ちなみに、HSPの自ウィンドウ内でのカーソル位置を取得したい場合はステム変数のmousexとmouseyを利用します。mouse命令を使えばカーソル表示位置を変更、カーソルの非表示ができます。
現在アクティブになってるウィンドウID値を取得します。アクティブなウィンドウIDはscreen命令、bgscr命令で指定するウィンドウの番号で、HSPが用意したウィンドウ以外の場合は-1が返ります。マクロ定義のシステム変数としてginfo_actが割り当てられてます。
screen 1, 200, 200 screen 2, 200, 200 screen 3, 200, 200 bgscr 4, 200, 200 gsel 0 repeat title "ウィンドウID : "+ginfo(2) wait 10 loop
ちなみに、スクリプトからHSPのウィンドウをアクティブ化するには、gsel命令(スイッチオプションの1、2)を利用します。
現在操作対象先となってるウィンドウID値を取得します。操作先のウィンドウIDはscreen命令、bgscr命令、buffer命令で指定するウィンドウやバッファ画面の番号です。マクロ定義のシステム変数としてginfo_selが割り当てられてます。
ウィンドウやバッファ画面の操作先はgsel命令で変更できます。
ウィンドウの表示位置を左上XY座標、右下XY座標で取得します。基点はモニタ画面全体の左上になります。対象はscreen命令かbgscr命令で用意したウィンドウです。マクロ定義のシステム変数としてginfo_wx1とginfo_wy1、ginfo_wx2とginfo_wy2が割り当てられてます。
このサンプルコードでは、タイトルバーやウィンドウ枠をドラッグ中にプログラムの処理が一時停止するため、リアルタイムで位置表示が変動しません。
repeat title "左上 "+ginfo(4)+" x "+ginfo(5)+" / 右下 "+ginfo(6)+" x "+ginfo(7) wait 10 loop
// サイズ可変が可能なウィンドウID1以降 screen 1 repeat gsel 1 wx1 = ginfo(4) : wy1 = ginfo(5) wx2 = ginfo(6) : wy2 = ginfo(7) gsel 0 title "左上 "+wx1+" x "+wy1+" / 右下 "+wx2+" x "+wy2 wait 10 loop
ちなみに、ウィンドウの表示位置や表示サイズをスクリプト上から変更するにはwidth命令を利用します。
(準備中)
ウィンドウの表示サイズを取得します。タイトルバーやウィンドウ枠の部分が含まれるため、PC環境(OSの種類、ビジュアルスタイルの有無、GUIフォントのサイズ)によっては数値が異なります。ウィンドウの左上部分から右下部分のサイズになるので、取得タイプ4〜7から得られた数値を減算すれば結果が同じです。
mes ""+ginfo(10)+" x "+ginfo(11) mes ""+(ginfo(6) - ginfo(4))+" x "+(ginfo(7) - ginfo(5))
ウィンドウ内の描画部分のサイズを取得します。これはクライアント領域(クライアントエリア)と呼ばれる部分で、HSPで図形や文字を描画したり、オブジェクトの設置ができる白色(デフォルト)の領域です。
screen命令の場合はタイトルバーやウィンドウ枠が含まず、タイトルバーの真下の左上部分が基点です。bgscr命令の場合は取得タイプ4〜7から得られた数値を減算すれば結果が同じです。仮想画面のbuffer命令も取得できます。
デフォルトのサイズはscreen命令、bgscr命令、buffer命令でPC環境関係なく640x480の固定サイズです。
mes命令(print命令)を利用した文字描画の出力サイズ(右下部分)がドット単位で返ります。基点はそれぞれの先頭文字描画の左上部分です。マクロ定義のシステム変数としてginfo_mesxとginfo_mesyが割り当てられてます。
表示された位置座標でないことに注意してください。文字の長さをバイトサイズで取得するstrlen関数とは異なり、実際に目に見える描画のサイズです。
これをうまく利用すれば、通常はmes命令を呼ぶたびに改行表示されるところを、pos命令の位置指定で後方に反映させることができます。(mes命令とcolor命令の講座ページに実例あり)
mes "HSPプログラミング" outy += ginfo(15) mes "をはじめちゃお!" outy += ginfo(15) color $FF mes "Windowsプログラム" color , $FF pos ginfo(14), outy mes "を作っちゃお!"
現在設定されてる配色のRGB値をそれぞれ取得します。RGB値は赤のR(Red)、青のB(Blue)、緑のG(Green)からなる光の三原色で、文字や図形の描画で反映されます。マクロ定義のシステム変数としてginfo_rとginfo_gとginfo_bが割り当てられてます。
色指定命令のcolor命令やhsvcolor命令やsyscolor命令で変動します。また、dialog命令の配色カラー選択ダイアログや、HSPウィンドウ内の1ドットの点の色を取得するpget命令での結果取得としても利用します。
(準備中)マクロ定義のシステム変数としてginfo_paluseが割り当てられてます。
ディスクトップ(モニタ)の画面全体のサイズ、いわゆる画面の解像度のピクセルサイズを取得します。マクロ定義のシステム変数としてginfo_dispxとginfo_dispyが割り当てられてます。
mes ""+ginfo(20)+" x "+ginfo(21)+" ピクセル
ウィンドウの描画部分(クライアントエリア)で、現在指定されてる位置(カレントポジション)を取得します。基点はHSPが描画できる白色(デフォルト)の左上部分です。pos命令でカレントポジションを指定できます。マクロ定義のシステム変数としてginfo_cxとginfo_cyが割り当てられてます。
mes命令(print命令)で文字描画や、オブジェクトの設置やobjsize命令によるサイズ指定により、自動的にカレントポジションが真下(Y方向)へ変動します。
color , $FF pos 100, 100 mes "HSPプログラミング" color $FF pos ginfo(22) + ginfo(14), ginfo(23) - ginfo(15) mes "をはじめちゃお!"
ウィンドウメッセージの割り込みが行われた時のラベルジャンプ先を指定するoncmd命令で、割り込みが行われたウィンドウIDの番号が返ります。ウィンドウメッセージはWin32プログラミングの領域で、基本的にHSPにはない概念です。マクロ定義のシステム変数としてginfo_initidが割り当てられてます。
HSP 3.0、HSP 3.1にタイプ25のモードは存在しません。HSPエラー21「サポートされない機能を選択しました」が表示されます。
HSP 3.2以降では、screen命令やbgscr命令やbuffer命令で一度も呼ばれていないウィンドウID(1〜)が返ります。マクロ定義のシステム変数としてginfo_newidが割り当てられてます。