MFC

CDocManager::OnFileNew

MFC

CDocManager::OnFileNewの中は何してるのか探索する。MFC Document/View documentation and enhancements - CodeProject NULLではないので、NULLではないので、 ここに来れる。ここに来れる。 ここでステップインして、 テンプレートリストが空か確認するが…

CWinApp::OnFileNew

MFC

CWinApp::OnFileNewは、ファイルの新規作成を要求された時に呼ばれる。CWinApp クラス | Microsoft Learn メニューの新規作成のイベントハンドラを追加メニューの新規作成のイベントハンドラを追加。 COMMANDのCWinApp_Appで追加して編集COMMANDのCWinApp_Ap…

AfxFindMessageEntry

MFC

AfxFindMessageEntryでコマンドに対するハンドラを見つける。ウィンドウプロシージャまず、 ここでメッセージマップを取得。ここでメッセージマップを取得。 ここに来たら、ここに来たら、 メッセージはこれメッセージはこれ。 コードはこれ。コードはこれ。…

CCmdTarget::GetMessageMap

MFC

CCmdTarget::GetMessageMapも非公開だが、出てくるし、気になるので。CCmdTarget クラス | Microsoft Learn ここでステップインするとここでステップインすると、 BEGIN_MESSAGE_MAPのところにくるBEGIN_MESSAGE_MAPのところにくる。 ここで何度かステップイ…

_AfxDispatchCmdMsg

MFC

_AfxDispatchCmdMsgは、非公開関数だが、一応中身見ていく。#pragma twice 119 Version 6.19 デバッグウィンドウがいっぱい 前回、ここまで来たので、ステップイン。前回、ここまで来たので、ステップイン。 中はこうなっている中はこうなっている。 渡され…

CCmdTarget::OnCmdMsg

MFC

CCmdTarget::OnCmdMsgで、コマンドメッセージに対するハンドラの呼び出しが行われる模様。CCmdTarget クラス | Microsoft Learn以前も、CCmdTargetの項でやったが、今回はドキュメントビューアーキテクチャでどういう風に呼び出されるか見ていく。 まあ、前…

CWinApp::ProcessShellCommand

MFC

CWinApp::ProcessShellCommanで、rCmdInfoを元に指定されたアクションを実行する。CWinApp クラス | Microsoft Learnここからが本筋で、かなり複雑。 今回は引数をクリアに今回は引数をクリアに。 ここにブレークポイント貼ってここにブレークポイント貼って…

CWinApp::ParseCommandLine

MFC

CWinApp::ParseCommandLineで、コマンドライン引数をパースしている。CWinApp クラス | Microsoft Learnプロジェクトのプロパティで、 コマンド引数をこのように設定コマンド引数をこのように設定。 ここで止めてステップインここで止めてステップイン。 こ…

CWnd::OnSize

MFC

CWnd::OnSizeイベントハンドラは、ウィンドウサイズが変更された時に来る。CWnd クラス | Microsoft LearnnTypeにイベントタイプ(最大化や最小化など)、cxに変更後の幅、cyに変更後の高さが渡される。 ダイアログベースだとリサイズできないので、Borderをサ…

CWnd::OnHScroll

MFC

CWnd::OnHScrollイベントハンドラを追加して、水平スクロールバーの動きも実装する。CWnd クラス | Microsoft Learn これを選択してこれを選択して、 ここに貼り付けるここに貼り付ける。 これでハンドラ追加これでハンドラ追加。 あとは、こうして、こう。 …

CStatic::SetBitmap

MFC

CStatic::SetBitmapで、スタティックコントロールにビットマップをセットする。CStatic クラス | Microsoft Docs resの下にbitmap1.bmpを置いて、resの下にbitmap1.bmpを置いて、 リソースリソース、 BitmapをインポートBitmapをインポート。 bitmap1.bmpをI…

CBitmap::operator HBITMAP

MFC

HBITMAP演算子で、ロードされたビットマップのビットマップハンドルを取得できる。CBitmap クラス | Microsoft DocsCBitmapDlg.cppで、取得したhBitmapも表示する。 成功成功。 hBitmapの値はこれhBitmapの値はこれ。 で、ダイアログが出る。で、ダイアログ…

CBitmap::LoadBitmap

MFC

CBitmap::LoadBitmapで、登録済みビットマップリソースを読み込む。CBitmap クラス | Microsoft Docsビットマップファイルではなく、リソースとして登録したビットマップリソースなのがポイント。 (ビットマップファイルの場合は、ちょっと面倒くさい。) プ…

CStatic::Create

MFC

CStatic::Createで、スタティックコントロールのウィンドウを作成する。CStatic クラス | Microsoft DocsCStaticDlg.hで、CWndポインタのm_pStatic1、CStaticポインタのm_pStatic2を追加。 CStaticDlg.cppで、このように書く。 CStaticのCreateはリソースID…

CEdit::Create

MFC

CEdit::Createで、エディットコントロールのウィンドウを作成する。CEdit Class | Microsoft DocsCEditDlg.hで、CWndポインタのm_pEdit1、CEditポインタのm_pEdit2を追加。 CEditDlg.cppで、このように書く。 CEditのCreateはウィンドウ名も不要。 どちらも…

CButton::Create

MFC

CButton::Createで、ボタンのウィンドウを作成する。 CButtonクラスのCreateなので、ウィンドウクラス名は不要。CButton クラス | Microsoft DocsCButtonDlg.hで、CWndのm_pButton1に加えて、CButtonのm_pButton2を追加。 CButtonDlg.cppでは、どちらもCreat…

CWnd::Create

MFC

CWnd::Createで、ウィンドウを作成する。 子コントロール(子ウィンドウ)を表示するのにも使う。CWnd クラス | Microsoft DocsCWndDlg.hに、CWndオブジェクトポインタm_pButton1を追加。 CWndDlg.cppで、Createに、"BUTTON"ウィンドウクラスと、BS_PUSHBUTTON…

CDialog::OnInitDialog

MFC

ダイアログの初期化時、WM_INITDIALOGに対して呼ばれるのがCDialog::OnInitDialog。CDialog クラス | Microsoft Docsここで初期化をする。メッセージボックスで"CDialogDlg::OnInitDialog"と表示。 これが出てからこれが出てから、 ダイアログ表示ダイアログ…

CWnd::OnDestroy

MFC

ウィンドウが破棄された時に、CWnd::OnDestroyに来る。CWnd クラス | Microsoft Docsリソースエディタで、 WM_DESTROYの時のハンドラを追加する。WM_DESTROYの時のハンドラを追加する。 このOnDestroyに書く。このOnDestroyに書く。こう。 OKでもキャンセル…

CWnd::GetWindowText(rString)

MFC

CWnd::GetWindowTextは、CStringの参照を引数にとるオーバーロードメンバ関数があるので、TCHARバッファを用意しなくてもいい。CWnd クラス | Microsoft DocsCWndDlg.cppで、こう書く。 Button1押すと、Button1押すと、 こっちでも取れるこっちでも取れる。S…

CWnd::GetWindowText

MFC

CWnd::GetWindowTextで、テキストを取得する。CWnd クラス | Microsoft DocsCWndDlg.cppで、こう書く。 これでButton1を押すと、これでButton1を押すと、 こうなる。こうなる。Sample/mfc/CWnd/GetWindowText/src/CWnd at master · bg1bgst333/Sample · GitH…

CWnd::GetWindowTextLength

MFC

CWnd::GetWindowTextLengthで、テキストの長さを取得する。CWnd クラス | Microsoft Docs エディットコントロールを追加エディットコントロールを追加。 CWndDlg.cppで、こう書く。 "ABCDE"と入力して、Button1を押すと、"ABCDE"と入力して、Button1を押すと…

CWnd::SetWindowText

MFC

CWnd::SetWindowTextで、テキストをセットする。CWnd クラス | Microsoft DocsCWndDlg.cppで、こうすると、 Button1を押すと、Button1を押すと、 "Clicked!"に変わる"Clicked!"に変わる。Sample/mfc/CWnd/SetWindowText/src/CWnd at master · bg1bgst333/Sam…

CWnd::GetDlgItem

MFC

CWnd::GetDlgItemで、指定のリソースIDの子ウィンドウ(コントロール)オブジェクトポインタを取得する。CWnd クラス | Microsoft DocsWin32API版で取得したウィンドウハンドルと、こちらで取得したポインタのウィンドウハンドルが同じかどうか調べる。 ボタン…

CCommandLineInfo

MFC

CCommandLineInfoは、コマンドライン情報を持つクラス。CCommandLineInfo クラス | Microsoft DocsMFCのプロジェクトを作成したら、 CCommandLineInfoのところにブレークポイント貼っておくCCommandLineInfoのところにブレークポイント貼っておく。 実行して…

CDocTemplate

MFC

CDocTemplateは、ドキュメントテンプレートの基本抽象クラス。CDocTemplate クラス | Microsoft Docs今回は、前回素通りしたpTemplate->LoadTemplateを見ていこう。CDocTemplate クラス | Microsoft DocsCDocTemplate:: LoadTemplateというメンバ関数。ここ…

CDocManager::AddDocTemplate

MFC

CDocManager::AddDocTemplateは、ドキュメントテンプレートを追加するメンバ関数。MFC Document/View documentation and enhancements - CodeProjectCDocManagerCDocManagerから開始。ここでステップイン。CWinApp::AddDocTemplateここにくる。ここまで進め…

CDocManager

MFC

CDocManagerは、ドキュメントテンプレートを管理しているようだが、どういう役割をしているか詳細はこれから調べていく。MFC Document/View documentation and enhancements - CodeProjectしかも、インターナルクラスなのか、MSDNやdocsのリファレンスにはな…

CSingleDocTemplate

MFC

CSingleDocTemplateは、シングルドキュメントインターフェース用のドキュメントテンプレート。CSingleDocTemplate クラス | Microsoft DocsMFCアプリケーションMFCアプリケーションで、現在のプロジェクト設定現在のプロジェクト設定はそのまま。アプリケー…

CWinApp::AddDocTemplate

MFC

ここからは、SDIアプリケーションについて扱っていく。ドキュメント/ビュー アーキテクチャ | Microsoft Docs MFC編 - ドキュメント・ビューの基本MFCアプリケーションMFCアプリケーションプロジェクトを選択。現在のプロジェクト現在こうなっているが、シン…