1

システム トレイを右クリックしてコンテキスト メニュー (リソース) を表示しようとすると問題が発生します。

この行を検出しました:

CMenu menu;
menu.LoadMenu(IDR_MENU1);
HMENU hMenu2 = menu.GetSubMenu(0)->Detach();
--> m_pTrayMenu = theApp.GetContextMenuManager()->ShowPopupMenu(hMenu2, point.x-5, point.y, this, TRUE);

プログラムを約 1.5 秒間停止させます。編集:ただし、このコードが実行されるのは初めてです。

ただし、次の行がある場合にのみ停止します。

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));

代わりに Office2003 に変更すると動作します (ただし、必要なビジュアルは得られません)。

MSDN やさまざまなフォーラムを調べてみましたが、*Office2007 が ShowPopupMenu() と互換性がないことについては何も言われていません。

私はアイデアがありません。この問題に光を当てるのを手伝ってくれる人はいますか?

よろしく、アントン。

4

1 に答える 1

0

MSDN フォーラムから次のような回答がありました。

(開発者に連れて行かれた後、これは私が得た応答です):

開発者によると、この動作は設計によるものです。遅延の主な原因は、Office の色を読み込むために XML の解析が行われていることです。色の詳細は、XML リソース ファイルに保存されます。

スレッドは次の場所にあります。

ご回答とご協力ありがとうございます。

私の現在のソリューションはこれを行っています:

CMFCPopupMenu *c = new CMFCPopupMenu;
delete c;

プログラムの開始時に直接実行します (したがって、メイン ウィンドウを表示する前に約 1 秒の読み込みが必要です)。

皆さん、ありがとうございました。

よろしく、アントン。

于 2013-07-01T14:27:17.260 に答える