【HSP3.x 移植版】『HSPの裏技』シンプルモードステータスバー(ハイライト表示されているメニュー項目の説明を表示)

『HSPの裏技』シンプルモードステータスバー(HSP2.x 版)をHSP3.x バージョンへ書き換え、さらに、メニューを表示しているときにハイライト表示されているメニュー項目の説明をシンプルモードステータスバーで表示するコードを追加したサンプルです。

『HSPの裏技』シンプルモードステータスバー(HSP2.x 版)をHSP3.x バージョンへ書き換え、さらに、メニューを表示しているときにハイライト表示されているメニュー項目の説明をシンプルモードステータスバーで表示するコードを追加したサンプルです。

  • タグ:
  • タグはありません
;HSP3.x
;HSP
; ()
; http://chokuto.ifdef.jp/urawaza/statusbar2.html
;
; [] Advanced HSP
; http://chokuto.ifdef.jp/advanced/dropdownmenu.html
#uselib "comctl32.dll"
#func InitCommonControlsEx "InitCommonControlsEx" int
#uselib "user32.dll"
#cfunc CreateMenu "CreateMenu"
#cfunc CreatePopupMenu "CreatePopupMenu"
#func AppendMenu "AppendMenuA" int,int,int,sptr
#func SetMenu "SetMenu" int,int
#func DrawMenuBar "DrawMenuBar" int
;
#define ICC_BAR_CLASSES 4
#define WS_CHILD 0x40000000
#define WS_VISIBLE 0x10000000
#define CCS_BOTTOM 0x00000003
#define SB_SETTEXT 0x0401
#define SB_SETPARTS 0x0404
#define SB_SIMPLE 0x0409
#define SB_SIMPLEID 255
#define NULL 0
#define MF_POPUP 0x10
#define WM_MENUSELECT 0x011F
; ID
#define CMD_ID_OPEN 101 ; ID
#define CMD_ID_SAVE 102 ; ID
#define CMD_ID_MESSAGE 104 ; ID
;
initinfo = 8, ICC_BAR_CLASSES
InitCommonControlsEx varptr(initinfo)
;
;
hmenuFile = CreatePopupMenu()
AppendMenu hmenuFile, 0, CMD_ID_OPEN, "(&O)"
AppendMenu hmenuFile, 0, CMD_ID_SAVE, "(&S)"
;
hmenuHelp = CreatePopupMenu()
AppendMenu hmenuHelp, 0, CMD_ID_MESSAGE, "(&M)"
;
hmenu = CreateMenu()
AppendMenu hmenu, MF_POPUP, hmenuFile, "(&F)"
AppendMenu hmenu, MF_POPUP, hmenuHelp, "(&H)"
SetMenu hwnd, hmenu
DrawMenuBar hwnd
;
styleFlags = WS_CHILD | WS_VISIBLE | CCS_BOTTOM
winobj "msctls_statusbar32", "", 0, styleFlags, 0, 0
statusbarID = stat
; 3
partspos = 80, 220, -1
sendmsg objinfo_hwnd(statusbarID), SB_SETPARTS, 3, varptr(partspos)
;
msgtext(0) = "" ;
msgtext(1) = "\t" ;
msgtext(2) = "\t\t" ;
repeat 3
; SB_SETTEXT
sendmsg objinfo_hwnd(statusbarID), SB_SETTEXT, cnt, msgtext(cnt)
loop
; WM_MENUSELECT
oncmd gosub *OnMenuSelect, WM_MENUSELECT
stop
*OnMenuSelect
;
itemID = wparam & 0xFFFF
flags = (wparam >> 16) & 0xFFFF
hmenu = lparam
if (flags == 0xFFFF) & (hmenu == NULL) {
;
msgtext = ""
} else {
; ID
switch itemID
case CMD_ID_OPEN
msgtext = ""
swbreak
case CMD_ID_SAVE
msgtext = ""
swbreak
case CMD_ID_MESSAGE
msgtext = ""
swbreak
default
msgtext = ""
swbreak
swend
}
if (msgtext == "") {
;
sendmsg objinfo_hwnd(statusbarID), SB_SIMPLE, 0, 0
logmes "SB_SIMPLE (0)"
} else {
;
sendmsg objinfo_hwnd(statusbarID), SB_SIMPLE, 1, 0
sendmsg objinfo_hwnd(statusbarID), SB_SETTEXT, SB_SIMPLEID, varptr(msgtext)
}
return
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX