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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0731
うひょポップアップメニュー2解決


うひょ

リンク

2006/7/31(Mon) 09:42:53|NO.1657

ポップアップメニューの項目をグレーにする(押せなくする)には、
どうすればいいですか?
単純なことかもしれませんが、
検索しても途中で変更するのが見つからないんです。
お願いします。



この記事に返信する


Irisawa

リンク

2006/7/31(Mon) 16:04:24|NO.1663

EnableMenuItem()API関数を使用してください。

http://yokohama.cool.ne.jp/chokuto/urawaza/api/EnableMenuItem.html
http://yokohama.cool.ne.jp/chokuto/urawaza/changemenu.html
http://www.kumei.ne.jp/c_lang/sdk/sdk_47.htm


#uselib "user32.dll" #cfunc CreatePopupMenu "CreatePopupMenu" #cfunc TrackPopupMenuEx "TrackPopupMenuEx" int, int, int, int, int, int #cfunc EnableMenuItem "EnableMenuItem" int, int, int #cfunc SetMenuItemInfo "SetMenuItemInfoA" int, int, int, var #cfunc DestroyMenu "DestroyMenu" int #func AppendMenu "AppendMenuA" int, int, int, sptr #const WM_COMMAND 0x0111 #const WM_RBUTTONDOWN 0x0204 ; メニューアイテムIDを定義 oncmd gosub *OnCommand, WM_COMMAND oncmd gosub *OnRButton, WM_RBUTTONDOWN onexit *exit ; ショートカットメニューの作成 hmenuPopup = CreatePopupMenu() flg(0) = 0 AppendMenu hmenuPopup, flg(0), 12, "1: 有効" flg(1) = 0x00000003 AppendMenu hmenuPopup, flg(1), 13, "2: 無効" AppendMenu hmenuPopup, 0, 14, "3: 変更" stop ;---------------WM_COMMAND が送られたときの処理------------------ *OnCommand itemid = wparam & 0xffff switch itemid case 12 dialog "1: を選択しました", , "報告" swbreak case 13 dialog "2: を選択しました", , "報告" swbreak case 14 dim menuitem, 12 menuitem = 48, 0x00000040 if flg(0) { flg(0) = 0 buf = "1: 有効" menuitem(9) = varptr(buf), strlen(buf) + 1 } else { flg(0) = 1 buf = "1: 無効" menuitem(9) = varptr(buf), strlen(buf) + 1 } ret = SetMenuItemInfo(hmenuPopup, 12, 0, menuitem) ret = EnableMenuItem(hmenuPopup, 12, flg(0)) dim menuitem, 12 menuitem = 48, 0x00000040 if flg(1) { flg(1) = 0 buf = "2: 有効" menuitem(9) = varptr(buf), strlen(buf) + 1 } else { flg(1) = 1 buf = "2: 無効" menuitem(9) = varptr(buf), strlen(buf) + 1 } ret = SetMenuItemInfo(hmenuPopup, 13, 0, menuitem) ret = EnableMenuItem(hmenuPopup, 13, flg(1)) dialog "有効/無効を変更しました", , "報告" swbreak swend return ;---------------WM_RBUTTON が送られたときの処理------------------ *OnRButton ret = TrackPopupMenuEx(hmenuPopup, 0 | 0x0002, ginfo(0), ginfo(1), hwnd, 0) return 0 ;---------------終了処理------------------ *exit ret = DestroyMenu(hmenuPopup) end



うひょ

リンク

2006/7/31(Mon) 18:31:03|NO.1670

ありがとうございます!
変更することができました。
APIはサンプルを改良して使ってるだけなので、
もっと勉強しないとだめですね。



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