【HSP3】F10/Altキー、メニュー表示時、タイトルのクリック・ドラッグ時の検出

例によって適当

例によって適当

  • hk1v
  • 2014/5/27 23:26
  • タグ:
  • タグはありません
#define WM_NCLBUTTONDOWN 0x00A1
#define WM_NCLBUTTONUP 0x00A2
#define WM_MOVING 0x0216
#define WM_EXITSIZEMOVE 0x0232
#define WM_SYSKEYDOWN 0x104
#define WM_SYSKEYUP 0x105
#define WM_NCACTIVATE 0x0086
#define WM_INITMENU 0x0116
#define WM_EXITMENULOOP 0x0212
#define WM_NCMOUSELEAVE 0x02A2
#define WM_NCMOUSEMOVE 0x00A0
#define WM_NCRBUTTONDOWN 0x00A4
#define WM_INITMENUPOPUP 0x0117

#define MF_SYSMENU 0x00002000

#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)

oncmd gosub *onNCLBUTTONDOWN, WM_NCLBUTTONDOWN
oncmd gosub *onNCRBUTTONDOWN, WM_NCRBUTTONDOWN
oncmd gosub *onMOVING, WM_MOVING
oncmd gosub *onNCMOUSELEAVE, WM_NCMOUSELEAVE
oncmd gosub *onNCMOUSEMOVE, WM_NCMOUSEMOVE

oncmd gosub *onINITMENU, WM_INITMENU
oncmd gosub *onINITMENUPOPUP, WM_INITMENUPOPUP
oncmd gosub *onEXITMENULOOP, WM_EXITMENULOOP

s = "通常", "ポーズ中(マウスによる)", "ポーズ中(メニューによる)"
repeat

	pos 0, 0 : color 255, 255, 255 : boxf : color
	
	mes cnt
	gosub *update

	wait 12
loop

stop

*update
	title s(pause)
return

// メニューが表示されたときに飛んでくる
*onINITMENU
	pause = 2
	gosub *update
return

// ポップアップメニューが表示されたときに飛んでくる
*onINITMENUPOPUP
	// システムメニューかどうか?
	if HIWORD(wparam) && MF_SYSMENU{
		pause = 2
		gosub *update
	}
return

// メニューが閉じられた時に飛んでくる
*onEXITMENULOOP
	pause = 0
	gosub *update
return

// 非クライアント領域(タイトルバー)が左クリックで押されたとき
*onNCLBUTTONDOWN
	if pause != 2{
		pause = 1
		gosub *update
	}
return

// 非クライアント領域(タイトルバー)が右クリックで押されたとき
*onNCRBUTTONDOWN
	if pause != 2{
		pause = 1
		gosub *update
	}
return

// ウィンドウが移動中の時(WM_MOVEだと移動中は飛んでこない?)
*onMOVING
	if pause != 2{
		pause = 1
		gosub *update
	}
return

// 非クライアント領域(タイトルバー)のクリックが離されたとき
*onNCMOUSELEAVE
	if pause != 2{
		pause = 0
		gosub *update
	}
return

// 非クライアント領域(タイトルバー)上でマウスが移動したとき
*onNCMOUSEMOVE
	if pause != 2{
		pause = 0
		gosub *update
	}
return