12

少し前に、テスト目的で CMenu 項目にツールチップを追加しようとしました。今、私はそれが必要であり、同じ問題に再び直面しています。

この質問と回答: MFC : Cmenu 項目にツールチップを追加する方法は?
この「改行マジック」は単に機能していないため、まったく役に立ちません。

また、問題を抱えているのは私だけではないようです: MFC CMenu tooltip not being displayed

void CTextListCtrl::CreateMenu(void)
{
    m_Menu.CreateMenu();
    CMenu submenu;
    submenu.CreatePopupMenu();
    submenu.AppendMenuW(MF_STRING, IDC_RESEND_POPUP, L"&Resend\nShow me the tooltip");
    //Other menu items...
    m_Menu.AppendMenuW(MF_POPUP, reinterpret_cast<UINT_PTR>(submenu.m_hMenu), L"");
    submenu.Detach();
}

結果は次のとおりです。

ここに画像の説明を入力

ただし、テキストの文字数を増やすと、メニュー ツールチップではなく、ポップアップ メニューが大きくなります。

この回答の他のリンクを見て、それらとプロジェクトを確認しました。しかし、これらは私が望むものではありません。

誰かが私が間違っていたことを知っていますか、または役立つ可能性のある別のソリューション/ソースがありますか?


編集: 以前にコメントで述べたように、問題を再現するための最小要件を備えたサンプル ソリューションを次に示します。(参照CMenuListCtrl.cpp(100))
VS2010 & VS2015 でテスト済み (同じ結果)。

4

1 に答える 1

1

問題を解決するトリックは次のとおりです。「改行マジック」は確実に機能します。

ComCtl32.dll のバージョン 6 を使用していることを確認してください。

以下のブロックを stdafx.h ファイルに追加し、プロジェクトを再構築します。

#pragma comment(linker, "\"/manifestdependency:type='win32'\
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

ここに画像の説明を入力

于 2015-08-17T09:21:13.560 に答える