4章.CMenuクラス メニュー 4−5.不定個のアイテムを追加して処理する(ID_の有効範囲) |
あらかじめIDを設定しといて、それを使用するという方法があります。 その場合はMFC Class Wizardで関数をつくるなり、ON_COMMAND_RANGEで処理したりします。 ヘルプ(MSDN)の「テクニカル ノート 20: ID 名および番号に関する規約」によると「0x8000 -> 0xDFFF」と定まっていますので、それを利用すると以下のようなことができるかと思います。 ここでは、最後の方は使われてないものとし、0〜99のアイテムと考えます。 void CTest0038View::OnButton55() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください int i; POINT pt; CMenu cme; char buf[256]; GetCursorPos(&pt); cme.CreatePopupMenu(); for(i=0;i<10;++i) { sprintf(buf,"item%d",i); cme.AppendMenu(MF_STRING|MF_BYCOMMAND,0xDFFF-i,buf); } cme.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,pt.x,pt.y,this); } BOOL CTest0038View::OnCommand(WPARAM wParam, LPARAM lParam) { // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください int i; if((i=0xDFFF-LOWORD(wParam))<100) TRACE("item%d\n",i); return CFormView::OnCommand(wParam, lParam); } |
Top へ戻る |