【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (960レス)
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 http://mevius.5ch.net/test/read.cgi/tech/1270793556/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
597: デフォルトの名無しさん [sage] 2013/12/28(土) 17:54:40.37 >>596 理想の実装になるかわからない&C++しかわからないが wxMenuをそのまま使うのが良いと思います 実装の骨子 ・メニューの項目一つ一つにwxWindowID ( enum )を振る ・wxWindowIDはwxCommandEventで起動するようにしておく ・上記のwxCommandEventを処理する関数はenumをswitch文で処理する ・wxCommandEventはEVT_MENU_RANGEで定義しておく(enum値が 1000~1200の場合反応する関数を作るなど) アイテムを編集可能にするために ・EVT_UPDATE_UIをwxMenuに設定しておき、ユーザーがメニューの項目を触ったら更新を実施 右クリック ・wxのConnectとかBindでwxMouseEventをくっつければいいと思う ------------------------------------------------------- 上記をやろうとすると、ユーザーが設定した項目でループを回して常に更新かける 感じになるんじゃないでしょうか。 wxMenu *menu = new wxMenu; wxMenu *foo = new wxMenu; for ( ユーザーが設定した数だけループ ) { foo->Append(wxID_HOGEHOGE_RANGE + i , wxT("ユーザー設定項目1")); foo->Connect(); // 右クリックイベントを定義しておく } http://mevius.5ch.net/test/read.cgi/tech/1270793556/597
598: 596 [sage] 2013/12/29(日) 12:00:00.67 >>597 レスありがとうございます。 wxMenu に対して Connect/Bind を試してみたのですが、 クリックイベントは wxEVT_MENU または wxEVT_MENU_RANGE だけが呼び出されました。 LEFT_UP, RIGHT_UP, COMMAND_LEFT_UP, COMMAND_RIGHT_UP, CONTEXT_MENU のイベントを試しましたが、 こちらは EVT_MENU の有無にかかわらず呼び出されませんでした。 試したソースコード : http://codepad.org/S9vtw4yX wxEVT_MENU の際に右クリックか左クリックかわかれば処理を分岐できるのですが、 wxCommandEvent でクリックしたボタンの情報の取得方法がわかりません。 wxWindow::PopupMenu では wxMenu を参考にして GUI を作り出すようですが、 そこですでにイベントが途絶えているように思えてしまいます。 ウィンドウハンドルも得られないようだし、 ポップアップメニューにイベントを追加することはサポートされていないように感じます。 wx.ListCtrl でも思ったことなのですが、 wx.CommandEvent 系のイベントを使うコントロールクラスでは wx.MouseEvent 系のイベントは関連付けられないのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1270793556/598
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s