|
|
ウィンドウを最大化
|
|
Windowsでは、メッセージのやり取りにより各種コントロールなどのオブジェクトを制御しており、
ウィンドウもまた、メッセージを渡して処理を行わせ、何らかのイベントを起こすとメッセージを返します。
HSPで作成したと言えど、生成されたウィンドウは上記の対象となっているので、
例えば、送信Win32メッセージに「WM_SYSCOMMAND(=0x0112)」を、
送信パラメータに「SC_MAXIMIZE(=0xF030)」を指定すれば、ウィンドウを最大化にできます。
メッセージのやり取りを行うにはobjsend命令(HSP2)、sendmsg命令(HSP3)を使用し、
メッセージの送り先は自ウィンドウとします。HSP3ではシステム変数から簡単に取得できますが、
HSP2ではBMSCR構造体からしか取得ができませんし、
何より、objsend命令はHSP3のsendmsg命令と同じ内容であるものの、
メッセージの送信先対象がコントロール(HSPでのオブジェクト)に限定されており、
パラメータに指定するのは1つ目のオブジェクトを0としたオブジェクトIDとなっています。
コレは表向きなもので、実はオブジェクトIDを指すというより、
BMSCR構造体の要素41(hCld)からの要素番号を指しているので、
ウィンドウハンドルが保持されている要素13(hwnd)を指せば、ウィンドウを指定したことになるのです。
HSP2「objsend 13 - 41, 0x0112, 0xF030, 不使用変数(=0), 0」
HSP3「sendmsg hwnd, 0x0112, 0xF030, 不使用(=0)」
尚、最大化ボタンが使えるようになっても、最大化サイズは指定されたウィンドウサイズ以上にはなりません。
もし、最大化時にディスプレイ全体を覆う様にしたい場合は、ディスプレイサイズで作成しましょう。
|
 |
| winmaximize |
| | | |
| [パラメータなし] | ウィンドウを最大化するだけのためパラメータは必要ない。 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#module
#deffunc winmaximize
objsend -28, 0x0112, 0xF030, nonuse, 0
return
#global
screen 0, dispx, dispy
width 400, 300
pos 10, 10 : button "最大化", *maximize
pos 10, 50 : button "終了", *exit
stop
*maximize
winmaximize
stop
*exit
|
|
 |
| winmaximize |
| | | |
| [パラメータなし] | ウィンドウを最大化するだけのためパラメータは必要ない。 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#module
#deffunc winmaximize
sendmsg hwnd, 0x0112, 0xF030, 0
return
#global
screen 0, ginfo_dispx, ginfo_dispy, , , , 400, 300
pos 10, 10 : button gosub "最大化", *maximize
pos 10, 50 : button gosub "終了", *exit
stop
*maximize
winmaximize
return
*exit
end
|
|