0

私は現在、MFC の学習の過程にあります。まず、各イベントが説明されているサイトを知っている人はいますか?たとえば、リボンの [新規] をクリックすると、そこでこのイベントがトリガーされます。 .

実際、これは私の質問です。リボンのファイルをクリックし、(mfc のテンプレートから) 新規をクリックすると、見つからないため、どこで実行されますか?

ありがとうございました

4

1 に答える 1

0

Scot Wingo の本MFC Internalsをお勧めします。この本では、MFC のメッセージ ルーティング メカニズムについて説明しています。少し古いかもしれませんが、コンパイラに同梱されている MFC ソース ファイルのどこを見ればよいかを示しています。手短に、

1) File-New ボタンをクリックすると、メッセージがアプリケーションに投稿されます 2) 最終的に AfxInternalPumpMessage() は GetMessage() を呼び出し、AfxInternalPreTranslateMessage() を呼び出し、おそらく TranslateMessage() と DispatchMessage() を呼び出します 3) 最終的にメッセージが送信されますAfxWindowProc()、AfxCallWindowProc()、および CFrame 派生ウィンドウの仮想 WindowPrc() (リボン、ツールバー、またはメニュー生成コマンドを想定)。4) 最終的に、ウィンドウ プロシージャは、それが WM_COMMAND メッセージであると判断し、OnCmdMsg() を呼び出します。5) MFC のコマンド ルーティングにより、ビュー、ドキュメント、フレーム ウィンドウ、およびアプリケーションがメッセージを処理する際に亀裂が生じる可能性があります。

メッセージを処理するには、CCmdTarget 派生オブジェクト (CView、CDocument、CFrameWnd、CWinApp) 派生にメッセージ マップ BEGIN_MESSAGE_MAP(classname)/END_MESSAGE_MAP() が必要ですvoid 引数を持つ void 戻り型である派生クラスの関数。

BEGIN_MESSAGE_MAP(CMyApp)
   ON_COMMAND(ID_FILE_NEW, OnFileNew)
END_MESSAGE_MAP()
于 2012-10-09T20:26:40.760 に答える