S-JIS[2002-07-28]

MFCのソースの探し方

AppWizardを使って作ったMFCのプログラムは、MFCで用意されているクラスから派生させることで 作られています。
普通に必要とされる関数についてはヘルプにだいたい載っているわけですが、 載っていないものや内容が知りたい時には、MFCのソースが用意されているので それを見ることが出来ます。

ソースを直接探す

一番ストレートな方法は、VC++をインストールした場所から ソースファイルをサーチすることです。
ツールバーのファイルから検索ボタンをクリックし、

検索する文字列には 探したいクラスや関数名等を
ファイルの種類には 普通に*.cpp;*.h等を
フォルダ には VC++をインストールしたドライブ(やフォルダ)を

指定して検索します。

ただしこの方法だと、検索する文字列が使われている場所が全て出てきてしまいますが…。

定義位置を表示

ソースファイル上の検索したい名称の部分にマウスカーソルを持っていき、 右クリックして出てくるポップアップメニューから「〜の定義位置を表示」や「〜の参照位置を表示」を 選ぶと、定義位置や宣言位置が表示されます。

ただしこの方法だと、MFCソースの場合はヘッダーファイル部分しか表示されませんが…。

(注) この方法を使うには、ブラウズ情報(拡張子bscのファイル)が生成されている必要があります。
定義位置や宣言位置を表示しようとした時にブラウズ情報ファイルが無い場合、 「ブラウズ情報を作成するためにリコンパイルしていいか」を聞いてくるので作成を選びましょう。
このファイルはけっこう大きいのですが、便利なので我慢、我慢。 要らなくなったらファイルを削除してしまえばいいのですから。 ただ消しただけではビルド時にまた生成してしまいますが、 メニューバーの「ビルド」→「設定」から「設定の対象」をブラウズ情報を削除したい方を選び 「C/C++」タブの「ブラウザ情報を生成する」のチェックを外しておけば大丈夫です。

ブレークポイントを使う

少々面倒ですが、一番確実に必要なソースを表示するには、ブレークポイントを利用することです。

例えばCFrameWndのソースを知りたい場合、CFrameWndから派生しているCMainFrameの関数の中に ブレークポイントを設定しておきます。
ブレークポイントを設定するには、設定したい行にマウスカーソルを持っていき、 右クリックして出てくるポップアップメニューから「ブレークポイントの設定/解除」を選びます。 設定された行には、左側に赤丸が付きます。

MainFrm.cpp:
 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
 	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
 		return -1;

その状態で実行すると、ブレークポイントの所で止まります (もちろん、実行される場所にブレークポイントを設定しておかないと駄目ですが)。
この状態でステップイン(方法は下記参照)すると、CFrameWnd::OnCreateのソースが表示されます。

また、この時表示されるコンテキスト(コンボボックス)には、ブレークポイントで停止中の場所に来るまでに 呼ばれてきた関数の一覧があります。この一覧の中から1つを選ぶと、 その関数のソースが表示されます。

ただし、中にはMFCから外れてしまっている部分等もあり、 その場合には「混合モード」というウィンドウが開きます。 これは、実行中のコードをアセンブリ言語で表示したものです。


VC++ページへ戻る / 技術メモへ戻る
メールの送信先:ひしだま