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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0111
××ポップアップメニューを表示しても処理を続行したい9解決


××

リンク

2009/1/11(Sun) 20:10:15|NO.22695

最近質問多くてすいません

以前 

 TrackPopupMenuでポップアップメニューを表示すると
 戻り値が返ってくるのを待つ=処理がとまる

ということをここで教えていただきました

用は↓

#include "user32.as" onclick gosub *onjump onexit *exit //メインのメニュー CreatePopupMenu hMenu_0 = stat AppendMenu hMenu_0, 0,1, "メニュー項目 1" AppendMenu hMenu_0, $800, 0, "" AppendMenu hMenu_0, 0,2, "メニュー項目 2" *main c++ title ""+c await 5 goto *main *onjump if wparam = 2 { TrackPopupMenu hMenu_0, $100, ginfo(0), ginfo(1), 0, hwnd, 0 if stat = 0 : return dialog "メニュー項目 "+stat+" を選択!" return } return *exit //メニューの破棄 DestroyMenu hMenu_1 end
というスクリプトで、右クリックでメニューを表示すると
カウントがストップするということです

で、今回はポップアップメニューを表示してもカウントを続行させたいのですが、

多分
①右クリックしたら、メニューを表示だけしてメインルーチンに戻る
②メニューがクリックされたらoncmdで判定用のルーチンに飛んで
 どのメニューが押されたか判定する

という方法で何とかできないかなーと思い
http://msdn.microsoft.com/ja-jp/library/cc430229.aspx
でそれっぽい関数がないか探していたのですがなかなか良い方法が見つかりません

どなたか方法が分かる方はいらっしゃいませんか? ><



この記事に返信する


New Monkey

リンク

2009/1/11(Sun) 20:38:04|NO.22696

Win32APIのSetTimer関数を呼んで、WM_TIMERメッセージを取得して処理を行えばいいです。



××

リンク

2009/1/11(Sun) 20:48:19|NO.22698

NewMonkeyさんいつもすいません(^ ^;)
以下のようにスクリプトを組みなおしました
こんな感じでしょうか?

#include "user32.as" onclick gosub *onjump oncmd gosub *timer, $113 onexit *exit //メインのメニュー CreatePopupMenu hMenu_0 = stat AppendMenu hMenu_0,0,1,"メニュー項目 1" AppendMenu hMenu_0,$800,0, "" AppendMenu hMenu_0,0,2,"メニュー項目 2" //タイマーをセット 50msごとにカウントを+1 SetTimer hwnd,1,50,0 stop *timer c++ title "count="+c return *onjump if wparam = 2 { TrackPopupMenu hMenu_0, $100, ginfo(0), ginfo(1), 0, hwnd, 0 if stat = 0 : return dialog "メニュー項目 "+stat+" を選択!" return } return *exit //メニューの破棄 DestroyMenu hMenu_1



××

リンク

2009/1/11(Sun) 20:50:19|NO.22699

忘れてました
最後にタイマーのメモリも開放したほうがいいですよね


・・・関数を探してきます(^ ^;)



check

リンク

2009/1/11(Sun) 21:00:26|NO.22700

よしよし、その心がけだ。
しっかり開放していないとメモリリークを起こすからな。



××

リンク

2009/1/11(Sun) 21:02:11|NO.22701

みつけました!
最後の行に

KillTimer hwnd,1
で完成としてよいでしょうか?



check

リンク

2009/1/11(Sun) 21:03:36|NO.22702

OK、それで完了。



××

リンク

2009/1/11(Sun) 21:05:39|NO.22703

おお~やっと完成!!
NewMonkeyさん checkさんありがとうございました^ ^



××

リンク

2009/1/11(Sun) 21:05:52|NO.22704

解決



New Monkey

リンク

2009/1/11(Sun) 21:06:15|NO.22705

僕が実験してみたスクリプトとほぼ同じです^^
あと最後にendを。終了できないので。

それと、もし目的が
「ペイントみたいに選択されているメニューの説明をステータスバーなどに表示したい」ということなら
WM_MENUSELECTメッセージを処理したほうがいいと思う。



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