はじめまして。 日曜プログラマのTaroと申します。
下記のようにCView.cpp内にコーディングしても
ポップアップがうまく表示されません。
どうすれば良いでしょう?
void CXXXView::OnRButtonDown(UINT nFlags, CPoint point)
{
ClientToScreen( &point );
SetForegroundWindow();
CMenu Popup;
if(Popup.LoadMenu(IDR_POPUPMENU1)!=0){
Popup.TrackPopupMenu( TPM_CENTERALIGN | TPM_LEFTBUTTON,
point.x, point.y, this);
}
CWnd::OnRButtonDown(nFlags, point);
}
環境はWindows98SEでVC++SP5パッチをあててます。
基本的な質問ですみません。 よろしくお願いします.
LoadMenuした後にPopupからGetSubMenu()せにゃあかんのでわ?
Popup.TrackPopupMenu( ... )
↓
CMenu* p = Popup.GetSubMenu( 0 );
p->TrackPopupMenu( ... )
このようにしてみて下さい。
ありがとうございます。
説明不足ですみませんが実はその方法で
やってみたのですが、lpRectやm_hWndのシンボルが
Error:式を評価できないようです。
なにか他にやることはありますか?
考えられる原因があればよろしくお願いします。
this ぢゃなくて AfxGetMainWnd() としてみてわ?
メニューを所有するウィンドウは通常CMainFrameですから。
Bunさん お久しぶり
私としては
>CWnd::OnRButtonDown(nFlags, point);
が気に入らないのですが。
CView:: じゃないのかな?というのと先にやっちゃえば?
と思うのですが 関係ないかな?
あとリソースのメニューの作り方にコツがなかったですか?
Popup.TrackPopupMenu( TPM_CENTERALIGN | TPM_LEFTBUTTON,
point.x, point.y, AfxGetMainWnd());
として、リビルドした後に実行してみてのですが、
同じ結果になりました。 なにか他の原因はないでしょうか?
リソースのメニューの作り方にコツってなんですか?
>Bunさん お久しぶり
ちわ。お久しゅうごぢぇーます。
>>CWnd::OnRButtonDown(nFlags, point);
>が気に入らないのですが。
あ、ホントだ。
>はじめまして。 日曜プログラマのTaroと申します。
ちわ。
------------------------------------------------------
疑問点1
今日は何曜日?(爆)
疑問点2
右クリックメニューってWM_CONTEXTMENUを使いません?
ClientToScreen()がいらない分だけ、効率的でわあーりませんか。
void ChogeView::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
if (menu.LoadMenu(IDR_MENU1))
menu.GetSubMenu(0)->TrackPopupMenu(
TPM_LEFTALIGN, point.x, point.y, AfxGetMainWnd(), NULL );
}
自分のソースを見たら、アサートもせずに、こんな風で動いてました。
>Popup.TrackPopupMenu( TPM_CENTERALIGN | TPM_LEFTBUTTON,
> point.x, point.y, AfxGetMainWnd());
>として、リビルドした後に実行してみてのですが、
>同じ結果になりました。 なにか他の原因はないでしょうか?
くたくたさんのアドバイス通りの方法でやってますか?
通常サブメニューのポインタを取得するから
p->TrackPopupMenu() という形でアクセスするんぢゃないかな?
これでダメならソースをそっくりのせてみますか?
a1. 日曜プログラマ->水曜プログラマの間違えでした。
a2. Bunさんのとおりにやってみました。やはりErrorです。
半日もこの問題にハマってます。助けてください。
ちょっと前にもこんなのがありました。
参考になるかもしれません。
ツリービューと右クリックメニューについて
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200204/02040009.txt
みなさん ありがとうございました。
メニューリソースを削除したのち新しく作り直したら、
無事に走りました。
リソースメニューの作りかたのコツ知りませんでした。
これからもお世話になります。 よろしく。
で、lpRectやm_hWndはどっからでてきたのでしょうか?
最初の質問では使用していないようですが。
ちなみに、「Error」というのウォッチ式での話ですよね。
コンパイルもリンクもうまくいき、それで実行してもうまく表示されないんですよね?
あと皆さんがいっているようにGetSubMenuは必須でしょう。
このときに、ウォッチ式に「Error」がでると何かまずいのでしょうか?