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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0615
ba-sannメニューバーの操作について。4解決


ba-sann

リンク

2013/6/15(Sat) 06:41:49|NO.54900

メニューバーの操作がうまくいきません。

;以下ソース。

#include "user32.as"
#uselib "user32"
#const global WM_COMMAND 0x111

#enum IDM_NULL =0
#enum IDM_EXIT
#enum IDM_MESSAGE
#enum IDM_GOOGLE

onexit *exit

bgscr 0
Createpopupmenu:hm_menu = stat
AppendMenu hm_menu,0,IDM_EXIT,"終了(&Q)"
AppendMenu hm_menu,0,IDM_MESSAGE,"メッセージ(&M)"

CreateMenu :hm_main = stat
AppendMenu hm_main,0x10,hm_menu,"メニュー(&M)"
AppendMenu hm_main,0,IDM_GOOGLE,"Google(&G)"
AppendMenu hm_main,0,IDM_MINI,"最小化"
AppendMenu hm_main,0,IDM_MES,"メッセージボックス"
SetMenu hwnd,hm_main
DrawMenuBar hwnd

oncmd gosub *oncmd_wm_command,WM_COMMAND
stop

*exit
// 作成したメニューは必ず任意に削除
DestroyMenu hm_main // 親メニューを破棄すれば、関連付けられたすべてのメニューが破棄される為これだけでよい。
end
stop

*oncmd_wm_command
wID = wParam & 0xFFFF;
if(lparam==0){
if(wid==IDM_EXIT){
goto*exit
}else:if(wid==IDM_MESSAGE){
dialog "仮メッセージ"
}else:if(wid==IDM_GOOGLE){
exec "http://www.google.co.jp/",16
}else:if(wid==IDM_MINI){
gosub*mini
}else:if(wid==IDM_MES){
dialog "test"
}
}
return


*mini
; SC_MINIMIZE 最小化

gsel 0:sendmsg hwnd, $112, $F020
gsel 0,0
return


実行してみると、
メニューバーには
メニュー Google 最小化 メッセージボックス

とありますが

メッセージボックスを出力できてないみたいです。
解決策などあれはアドバイスお願いします



この記事に返信する


ツノン

リンク

2013/6/15(Sat) 07:02:29|NO.54901

メニューID の定義がされていません。


AppendMenu hm_main,0,IDM_MINI,"最小化" AppendMenu hm_main,0,IDM_MES,"メッセージボックス"
の第三引数にそれぞれ 0 が指定されている状態です。

以下のように、
5行目の #enum によるメニューID定義のスクリプトの末尾に メニューID 名を追加してやると上手く動作します。


#include "user32.as" #uselib "user32" #const global WM_COMMAND 0x111 #enum IDM_NULL =0 #enum IDM_EXIT #enum IDM_MESSAGE #enum IDM_GOOGLE #enum IDM_MES #enum IDM_MIN onexit *exit bgscr 0 Createpopupmenu:hm_menu = stat AppendMenu hm_menu,0,IDM_EXIT,"終了(&Q)" AppendMenu hm_menu,0,IDM_MESSAGE,"メッセージ(&M)" CreateMenu :hm_main = stat AppendMenu hm_main,0x10,hm_menu,"メニュー(&M)" AppendMenu hm_main,0,IDM_GOOGLE,"Google(&G)" AppendMenu hm_main,0,IDM_MINI,"最小化" AppendMenu hm_main,0,IDM_MES,"メッセージボックス" SetMenu hwnd,hm_main DrawMenuBar hwnd oncmd gosub *oncmd_wm_command,WM_COMMAND stop *exit // 作成したメニューは必ず任意に削除 DestroyMenu hm_main // 親メニューを破棄すれば、関連付けられたすべてのメニューが破棄される為これだけでよい。 end stop *oncmd_wm_command wID = wParam & 0xFFFF; if(lparam==0){ if(wid==IDM_EXIT){ goto*exit }else:if(wid==IDM_MESSAGE){ dialog "仮メッセージ" }else:if(wid==IDM_GOOGLE){ exec "http://www.google.co.jp/",16 }else:if(wid==IDM_MINI){ gosub*mini }else:if(wid==IDM_MES){ dialog "test" } } return *mini ; SC_MINIMIZE 最小化 gsel 0:sendmsg hwnd, $112, $F020 gsel 0,0 return



ツノン

リンク

2013/6/15(Sat) 07:08:35|NO.54902

追記

投稿文字列入力用のメッセージボックスの上に記述されているように。
スクリプトは小文字の<pre>〜</pre>で囲むと青く強調されて表示できます。

使ってみると便利ですよ。



ツノン

リンク

2013/6/15(Sat) 07:17:04|NO.54903

更に追記

プリプロセッサ命令 について調べた方が良いかも。

プリプロセッサ命令とは、コンパイル時に、生成された文字列にスクリプトの一部を置き換える機能にあてがわれた命令名の事であり。


#enum id_test = 2 #enum id_test2 #enum id_test3 #enum id_test4 #enum id_test5 mes id_test mes id_test2 mes id_test3 mes id_test4 mes id_test5

上のスクリプトは下の様に記述したのと同じ意味になります。


mes 2 mes 3 mes 4 mes 5 mes 6



ba-sann

リンク

2013/6/15(Sat) 17:05:04|NO.54913

ツノンさん

あーーーーーーーーーーーーーーーーーー
ほんとですねww
すっかりそこを見落としてました!><w
ありがとうございます
完全にミスってましたT_T



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