アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual C++ 6.0 MFCにて質問があります。

[環境]
Visual C++ 6.0 MFC

[タスクバーのアイコンの処理]
リソースにMenuを作成して、以下のソースを作成いたしました。しかし、タスクバーのアイコンをクリックして、Menuが表示されるはずなのですが、途中でエラーが出てしまいます。CMenu*pMenu;がうまく処理されていないみたいなのですが、ソース的に問題ないように思うのですが....
何か問題があるのでしょうか??

[ソース]
CMenuMyMenu;
CMenu*pMenu;
POINTpt;

// 現在のカーソル位置を取得
::GetCursorPos(&pt);

// フォーカスを当てる
SetFocus();

// メニューのロード
VERIFY(MyMenu.LoadMenu(IDR_MENU1));

// 0番目のメニューを取得
pMenu = MyMenu.GetSubMenu(0);

ASSERT(pMenu != NULL); <-- ここでエラーがでる。
// メニューの表示
if(pMenu->TrackPopupMenu( TPM_LEFTALIGN| TPM_RIGHTBUTTON, pt.x, pt.y , this) == 0){
return FALSE;
}

// メッセージを送る
PostMessage(WM_NULL);

return TRUE;

A 回答 (2件)

リソース->右クリック->挿入->Menu を選択し->新規作成->右クリック->ポップアップに表示にチェック


でMenuは作成しています。

はい、作り方間違ってます(^^;;
これではロードしたメニューそのものがポップアップメニューなので、その中の0番目の項目からさらにポップアップメニューがないとGetSubMenuは失敗します。

ちなみに「ポップアップ表示」、ただ単純に見え方が変わってるだけです。一旦閉じて開きなおせば元に戻ってます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

見た目で判断をしていたみたいです。(^^;
うまくいきました。

お礼日時:2005/05/20 10:36

>// 0番目のメニューを取得


>pMenu = MyMenu.GetSubMenu(0);

0番目のメニューがサブメニューじゃないとかしか考えられないような。
その前のLoadMenuができてるんですし。

この回答への補足

ありがとうございます。

>0番目のメニューがサブメニューじゃないとかしか考えられないような。

リソース->右クリック->挿入->Menu を選択し->新規作成->右クリック->ポップアップに表示にチェック
でMenuは作成しています。

TrackPopupMenuにくるとハンドルされていない例外がでます。
また、pMenu = MyMenu.GetSubMenu(0);の値が0x00000000になってしまうため、おかしいなと。
GetSubMenu(0)の戻り値が帰っていないみたいです。

GetSubMenu(0)の使い方にもんだいがあるのでしょうか??

補足日時:2005/05/20 00:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!