ポップアップが細長いものしかでない – プログラミング – Home

ポップアップが細長いものしかでない
 
通知
すべてクリア

[解決済] ポップアップが細長いものしかでない


熱血
 熱血
(@熱血)
ゲスト
結合: 15年前
投稿: 100
Topic starter  

VC++6.0 XPで開発しています
メニューエディターでメニュー(IDR_MODESELECT)を作成し、右クリックで表示させた
いのですが、作成したメニューがすべて表示されず、細長いメニューの一部だけがひょ
うじされてしまいます。(ちなみにサブメニューはありません)
どうしたら、よろしいのでしょうか?メニューの表示にサイズ指定は、なさそうなんで
すが?

void CEd2GPolyView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフ
ォルトの処理を呼び出してください
CMenu wPopUp;
VERIFY(wPopUp.LoadMenu(IDR_MODESELECT));

ClientToScreen(&point);

wPopUp.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, AfxGetMainWnd());

CScrollView::OnRButtonDown(nFlags, point);
}


引用未解決
トピックタグ
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

LoadMenu()しただけでは駄目です。
GetSubMenu()しましょう。
それで表示されるはずです。

それから、ポップアップメニューは、
WM_RBUTTONDOWN メッセージ
で表示するより、
WM_CONTEXTMENU メッセージ
で表示した方が都合の良い場合が多いです。

違いは文章で説明するよりやってみた方が
早いので省略します。


返信引用
熱血
 熱血
(@熱血)
ゲスト
結合: 15年前
投稿: 100
Topic starter  

bun さん、早々レスありがとうございます。
GetSubMenu(0)をすると、サブメニューをつくっていないためか、NULLが返されて、
落ちてしまいます。
かならず、作る必要があるのでしょうか?
仕様の上であらないのですが。
void CEd2GPolyView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフ
ォルトの処理を呼び出してください
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MODESELECT));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);

ClientToScreen(&point);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, AfxGetMainWnd());

CScrollView::OnRButtonDown(nFlags, point);
}


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

一般的にはポップアップメニューといえば

○○○
***
×××

といった並びのものが出ますが、(この場合は、サブでつくる必要がある)
熱血さんの求めてるものはそうではなく

ウィンドウの上のほうについてることの多い
「ファイル」「編集」といったメニューのような右方向に細長い
外見・形状のものをポップアップさせたい

ということでしょうか?


返信引用
熱血
 熱血
(@熱血)
ゲスト
結合: 15年前
投稿: 100
Topic starter  

ryoさん、レスありがとうございます。
ryoさんのレスを参考にヘルプを読み、トライ&エラーでいろいろ、ためしたところ。
「一次元目のメニューバーのところにメニューを書くことはできない」という結論にな
りました。サブメニューのところに描き、何番目(0~)のサブメニューかをGetSubMenu
()の引数で指定すると上手いきました。
ご意見、ありがとうございました。


返信引用
熱血
 熱血
(@熱血)
ゲスト
結合: 15年前
投稿: 100
Topic starter  

(PS’)メニューバーをクリックしてポップアップ表示をクリックすると、縦長に表
示するので、それを表示したいと思っていました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました