HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1126
MAXIMヘルプメニューの応用のしかたについて3解決


MAXIM

リンク

2007/11/26(Mon) 15:35:43|NO.12609

またググってものっていなかったのですが

#func CreateMenu "CreateMenu" #func CreatePopupMenu "CreatePopupMenu" #func AppendMenu "AppendMenuA" int,int,int,sptr #func SetMenu "SetMenu" int,int #func DrawMenuBar "DrawMenuBar" int
これらの意味がわかりません。どこか解説されているサイトはありませんでしょうか
これ以外にも #func radiocheck?など複数あるようですが
そういうのはどこを見れば詳しくのっているでしょうか


下記のプログラムはwikiにのっていたものを転載しました。
残念ながら応用がきかなくて困ってます。メニューバーにテスト(T)という項目が
表示されない理由を教えて下さい。


; <<<< HSP 3.0 サンプル >>>> ; ; メニューアイテムのヘルプテキストをステータスバーに表示 ; #uselib "comctl32.dll" #func InitCommonControls "InitCommonControls" #uselib "user32.dll" #func CreateMenu "CreateMenu" #func CreatePopupMenu "CreatePopupMenu" #func AppendMenu "AppendMenuA" int,int,int,sptr #func SetMenu "SetMenu" int,int #func DrawMenuBar "DrawMenuBar" int #define WM_COMMAND 0x0111 #define WM_MENUSELECT 0x011F #define SB_SETPARTS 0x0404 #define SB_SETTEXT 0x0401 #define SB_SIMPLE 0x0409 #define SB_SIMPLEID 255 #define SBT_NOBORDERS 0x0100 #define CMD_OPEN 1001 ;「開く」 #define CMD_SAVE 1002 ;「保存」 #define CMD_QUIT 1003 ;「終了」 #define CMD_MESSAGE 1004 ;「終了」 #define CMD_ME 1005 ;「テスト1」 screen 0, 300, 200 oncmd gosub *OnCommand, WM_COMMAND oncmd gosub *OnMenuSelect, WM_MENUSELECT ; コモンコントロールライブラリの初期化 InitCommonControls ; ==== メニューバー ==== ; 「ファイル」メニュー CreatePopupMenu : hmenuFile = stat AppendMenu hmenuFile, 0, CMD_OPEN, "開く(&O)" AppendMenu hmenuFile, 0, CMD_SAVE, "保存(&S)" AppendMenu hmenuFile, $800, 0, "" ; 区切り線 AppendMenu hmenuFile, 0, CMD_QUIT, "終了(&Q)" CreatePopupMenu : hmenuFile2 = stat AppendMenu hmenuFile2, 0, CMD_ME, "てすと(&T)" ; 「ヘルプ」メニュー CreatePopupMenu : hmenuHelp = stat AppendMenu hmenuHelp, 0, CMD_MESSAGE, "メッセージ表示(&M)" ; メニューバー作成 CreateMenu : hmenu = stat AppendMenu hmenu, $10, hmenuFile, "ファイル(&F)" AppendMenu hmenu, $10, hmenuHelp, "ヘルプ(&H)" SetMenu hwnd, hmenu DrawMenuBar hwnd ; ==== ステータスバー ==== ; ステータスバー作成 winobj "msctls_statusbar32","",0,$50000003 hStatus = objinfo_hwnd(stat) ; ステータスバーを3つのパーツに分ける partpos = 50, 120, -1 sendmsg hStatus, SB_SETPARTS, 3, varptr(partpos) sendmsg hStatus, SB_SETTEXT, 0, "パーツ1" sendmsg hStatus, SB_SETTEXT, 1, "パーツ2" sendmsg hStatus, SB_SETTEXT, 2, "パーツ3" stop *OnCommand ; ==== WM_COMMAND メッセージを受け取ったとき ==== if lParam == 0 : gosub *OnMenuCommand return *OnMenuCommand ; ---- メニューアイテムからのコマンドメッセージ ---- itemId = wParam & $FFFF ; メニューアイテム ID if itemId == CMD_OPEN { dialog "*", 16 if stat { dialog refstr+"を開きました" } } if itemId == CMD_SAVE { dialog "*", 17 if stat { dialog refstr+"に保存しました" } } if itemId == CMD_QUIT { dialog "終了します" end } if itemId == CMD_MESSAGE { dialog "メニュー作成のテストです", 0, "メッセージ表示" } return 0 *OnMenuSelect ; ==== メニューアイテムの選択状態が切り替わったとき ==== if (wParam >> 16 == -1) & (lParam == 0) { ; --- メニューが閉じられたとき --- ; シンプルモード解除 sendmsg hStatus, SB_SIMPLE, 0, 0 } else { ; --- メニューが開かれた or アイテムが選択されたとき --- ; メニューアイテム ID から表示文字列を選択 msgtext = "" itemId = wParam & $FFFF if itemID == CMD_OPEN : msgtext = "ファイルをオープンします。" if itemID == CMD_SAVE : msgtext = "ファイルに保存します。" if itemID == CMD_QUIT : msgtext = "アプリケーションを終了します。" if itemID == CMD_MESSAGE : msgtext = "メッセージダイアログを表示します。" if itemID == CMD_ME : msgtext = "てすと" ; シンプルモードに設定 sendmsg hStatus, SB_SIMPLE, 1, 0 ; 文字列を表示 sendmsg hStatus, SB_SETTEXT, SB_SIMPLEID, msgtext } return 0 *mm dialog "てすと" end



この記事に返信する


f

リンク

2007/11/26(Mon) 16:34:57|NO.12610

しょっぱなのCreateMenuからでも普通にヒットするのだが。
どんなキーワードでググってみたのか説明してくれ。

メニューが出ないのは、hmenuFile2をメニューバーに加えてないからでね。



FN

リンク

2007/11/26(Mon) 17:44:01|NO.12611

本当に理解したいのならこことかを地道に読んでいくしかないと思います。
http://yokohama.cool.ne.jp/chokuto/advanced/index.html
まずはWin32APIとは何かからかな?

上は執筆途中なのでHSP2向けですが一応・・・
http://yokohama.cool.ne.jp/chokuto/urawaza/



MAXIM

リンク

2007/11/26(Mon) 17:58:03|NO.12612

掲示板みる前、抜けていることにさっき気がつきました。
申し訳ありません。



ONION software Copyright 1997-2021(c) All rights reserved.