sendmsg命令 Tips集 (ウィンドウ関連)

Last Update : 2007/04/xx

ウィンドウ 関連 | ボタン・チェックボックス | 入力ボックス・メッセージボックス | リストボックス・コンボボックス

HSPの自ウィンドウ関連

 sendmsg命令の第1パラメータに指定する自ウィンドウ(screen命令、bgscr命令)のハンドル値は、HSPのシステム変数hwndに代入されてます。この変数名の由来は「handle of window」から。
 screen命令やbgscr命令で用意したウィンドウIDごとにハンドルの値が違うので、複数のウィンドウを用意しているなら、hwndの値は別の変数に代入しておくようにしてください。

マウスドラッグによる自ウィンドウの移動
 screen命令やbscr命令で用意したウィンドウ画面をマウスでドラッグするとウィンドウ自体が動きます。

	onclick gosub *onjump

	stop

*onjump
;	マウスが左クリックされると、wparam に 1 が返る。
;	WM_NCLBUTTONDOWNメッセージ
	if wparam = 1 {
		sendmsg hwnd, $A1, 2

		return
	}

	return

右クリックでシステムメニューの表示
 自ウィンドウのシステムメニューが表示されます。通常はタイトルバーを右クリックした時などに出現するものです。

//	※エディタの[HSP]メニューの[HSP拡張マクロを使用する]を要有効

	onclick gosub *onjump

	stop

*onjump
;	マウスが右クリックされると、wparamに2が返る。
	if wparam = 2 {
		sendmsg hwnd, $313, , ginfo(0) | ginfo(1) * $10000

		return
	}

	return

ウィンドウタイトル名の取得
 現在の自ウィンドウのタイトルバーに表示されてる文字列を取得します。title命令の逆パターンですな。

//	ウィンドウのタイトルバーの文字列取得

;	文字列取得用の領域を確保(64バイト)
	sdim pszText

;	WM_GETTEXT
	sendmsg hwnd, $D, 64, varptr(pszText)

	mes "["+pszText+"] ("+stat+"byte)

ウィンドウタイトル名の変更
 title命令と機能的には同じですが、gsel命令で操作先ウィンドウを変えることなくタイトルバーの文字列を変更できます。

//	ウィンドウのタイトルバーの文字列変更

	screen 0
	hWindowID0 = hwnd

	screen 1

;	WM_SETTEXT
	sendmsg hWindowID0, $C, , "タイトルを変更したよ〜ん。"

 以下はWM_SYSCOMMANDメッセージ(0x0112)で実現できるもの。

ウィンドウの最小化
 自ウィンドウを最小化して、タスクバー上にアプリケーションを入れます。最小化からの復帰も可能です。

;	SC_MINIMIZE
	sendmsg hwnd, $112, $F020

	wait 200

;	ウィンドウを元の位置に戻す(SC_RESTORE)
	sendmsg hwnd, $112, $F120

ウィンドウの最大化
 自ウィンドウを最大化します。screen命令やbgscr命令で指定した初期ウィンドウサイズが最大化のベースになります。
 ちなみに、HSPのウィンドウは最大化ボタンが無効になってるので、Win32 API関数でウィンドウスタイルを変更すればサイズ可変ウィンドウへ切り替えることが可能です。(→ HSP3 あれこれ ウィンドウ編

	width 200, 200

	wait 200

;	SC_MAXIMIZE
	sendmsg hwnd, $112, $F030

Windowsのスタートメニューの表示
 Windowsのスタートメニューを単純に開きます。

;	SC_TASKLIST
	sendmsg hwnd, $112, $F130

スクリーンセーバーの起動
 Windowsのスクリーンセーバーを立ち上げます。スクリーンセーバーが設定されてなければ何も起こりません。

;	SC_SCREENSAVE
	sendmsg hwnd, $112, $F140

ディスプレイの省電力表示
 モニタを省電力モードに切り替えます。省電力モードが可能なディバイス(ディスプレイ)でないと機能しないなど、環境によって挙動が違うはずなので注意。

;	SC_MONITORPOWER
	sendmsg hwnd, $112, $F170, 1

;	ディスプレイの電源オフ (省電力モードに移行するものもあり)
//	sendmsg hwnd, $112, $F170, 2

;	省電力モード&電源オフから復帰
//	sendmsg hwnd, $112, $F170, -1

↑TOP↑


日本最大のYahoo!オークションで掘り出しものを探しちゃお! (100スタート)円

HSP3 あれこれ | HSP3 オブジェクト | HSP 命令/関数講座

Copyright © 2005-2012 . All rights reserved.