MFC
CWnd::OnHScrollイベントハンドラを追加して、水平スクロールバーの動きも実装する。CWnd クラス | Microsoft Learn これを選択してこれを選択して、 ここに貼り付けるここに貼り付ける。 これでハンドラ追加これでハンドラ追加。 あとは、こうして、こう。 …
CStatic::SetBitmapで、スタティックコントロールにビットマップをセットする。CStatic クラス | Microsoft Docs resの下にbitmap1.bmpを置いて、resの下にbitmap1.bmpを置いて、 リソースリソース、 BitmapをインポートBitmapをインポート。 bitmap1.bmpをI…
HBITMAP演算子で、ロードされたビットマップのビットマップハンドルを取得できる。CBitmap クラス | Microsoft DocsCBitmapDlg.cppで、取得したhBitmapも表示する。 成功成功。 hBitmapの値はこれhBitmapの値はこれ。 で、ダイアログが出る。で、ダイアログ…
CBitmap::LoadBitmapで、登録済みビットマップリソースを読み込む。CBitmap クラス | Microsoft Docsビットマップファイルではなく、リソースとして登録したビットマップリソースなのがポイント。 (ビットマップファイルの場合は、ちょっと面倒くさい。) プ…
CStatic::Createで、スタティックコントロールのウィンドウを作成する。CStatic クラス | Microsoft DocsCStaticDlg.hで、CWndポインタのm_pStatic1、CStaticポインタのm_pStatic2を追加。 CStaticDlg.cppで、このように書く。 CStaticのCreateはリソースID…
CEdit::Createで、エディットコントロールのウィンドウを作成する。CEdit Class | Microsoft DocsCEditDlg.hで、CWndポインタのm_pEdit1、CEditポインタのm_pEdit2を追加。 CEditDlg.cppで、このように書く。 CEditのCreateはウィンドウ名も不要。 どちらも…
CButton::Createで、ボタンのウィンドウを作成する。 CButtonクラスのCreateなので、ウィンドウクラス名は不要。CButton クラス | Microsoft DocsCButtonDlg.hで、CWndのm_pButton1に加えて、CButtonのm_pButton2を追加。 CButtonDlg.cppでは、どちらもCreat…
CWnd::Createで、ウィンドウを作成する。 子コントロール(子ウィンドウ)を表示するのにも使う。CWnd クラス | Microsoft DocsCWndDlg.hに、CWndオブジェクトポインタm_pButton1を追加。 CWndDlg.cppで、Createに、"BUTTON"ウィンドウクラスと、BS_PUSHBUTTON…
ダイアログの初期化時、WM_INITDIALOGに対して呼ばれるのがCDialog::OnInitDialog。CDialog クラス | Microsoft Docsここで初期化をする。メッセージボックスで"CDialogDlg::OnInitDialog"と表示。 これが出てからこれが出てから、 ダイアログ表示ダイアログ…
ウィンドウが破棄された時に、CWnd::OnDestroyに来る。CWnd クラス | Microsoft Docsリソースエディタで、 WM_DESTROYの時のハンドラを追加する。WM_DESTROYの時のハンドラを追加する。 このOnDestroyに書く。このOnDestroyに書く。こう。 OKでもキャンセル…
CWnd::GetWindowTextは、CStringの参照を引数にとるオーバーロードメンバ関数があるので、TCHARバッファを用意しなくてもいい。CWnd クラス | Microsoft DocsCWndDlg.cppで、こう書く。 Button1押すと、Button1押すと、 こっちでも取れるこっちでも取れる。S…
CWnd::GetWindowTextで、テキストを取得する。CWnd クラス | Microsoft DocsCWndDlg.cppで、こう書く。 これでButton1を押すと、これでButton1を押すと、 こうなる。こうなる。Sample/mfc/CWnd/GetWindowText/src/CWnd at master · bg1bgst333/Sample · GitH…
CWnd::GetWindowTextLengthで、テキストの長さを取得する。CWnd クラス | Microsoft Docs エディットコントロールを追加エディットコントロールを追加。 CWndDlg.cppで、こう書く。 "ABCDE"と入力して、Button1を押すと、"ABCDE"と入力して、Button1を押すと…
CWnd::SetWindowTextで、テキストをセットする。CWnd クラス | Microsoft DocsCWndDlg.cppで、こうすると、 Button1を押すと、Button1を押すと、 "Clicked!"に変わる"Clicked!"に変わる。Sample/mfc/CWnd/SetWindowText/src/CWnd at master · bg1bgst333/Sam…
CWnd::GetDlgItemで、指定のリソースIDの子ウィンドウ(コントロール)オブジェクトポインタを取得する。CWnd クラス | Microsoft DocsWin32API版で取得したウィンドウハンドルと、こちらで取得したポインタのウィンドウハンドルが同じかどうか調べる。 ボタン…
CCommandLineInfoは、コマンドライン情報を持つクラス。CCommandLineInfo クラス | Microsoft DocsMFCのプロジェクトを作成したら、 CCommandLineInfoのところにブレークポイント貼っておくCCommandLineInfoのところにブレークポイント貼っておく。 実行して…
CDocTemplateは、ドキュメントテンプレートの基本抽象クラス。CDocTemplate クラス | Microsoft Docs今回は、前回素通りしたpTemplate->LoadTemplateを見ていこう。CDocTemplate クラス | Microsoft DocsCDocTemplate:: LoadTemplateというメンバ関数。ここ…
CDocManager::AddDocTemplateは、ドキュメントテンプレートを追加するメンバ関数。MFC Document/View documentation and enhancements - CodeProjectCDocManagerCDocManagerから開始。ここでステップイン。CWinApp::AddDocTemplateここにくる。ここまで進め…
CDocManagerは、ドキュメントテンプレートを管理しているようだが、どういう役割をしているか詳細はこれから調べていく。MFC Document/View documentation and enhancements - CodeProjectしかも、インターナルクラスなのか、MSDNやdocsのリファレンスにはな…
CSingleDocTemplateは、シングルドキュメントインターフェース用のドキュメントテンプレート。CSingleDocTemplate クラス | Microsoft DocsMFCアプリケーションMFCアプリケーションで、現在のプロジェクト設定現在のプロジェクト設定はそのまま。アプリケー…
ここからは、SDIアプリケーションについて扱っていく。ドキュメント/ビュー アーキテクチャ | Microsoft Docs MFC編 - ドキュメント・ビューの基本MFCアプリケーションMFCアプリケーションプロジェクトを選択。現在のプロジェクト現在こうなっているが、シン…
DDX_Scrollは、スクロールバーのつまみの位置を取得できる。DDX_Scroll | Microsoft Docsスクロールバーこのようにスクロールバーを配置し、変数の追加変数の追加で、ControlControlではCScrollBar、ValueValueではintを指定。このように追加される。IDC_SCR…
DDX_CBStringは、選択されたアイテムのテキストや入力されたテキストを取得できる。DDX_CBString (MFC)ValueでCString今回、コンボボックスの変数の追加で、ValueでCStringを指定する。このように追加される。IDC_COMBO1とm_xvComboBox1は、DDX_CBStringで紐…
DDX_CBIndexは、コンボボックスで選択されたアイテムが何番目かを取得できる。DDX_CBIndex | Microsoft Docsコンボボックスの配置コンボボックスを配置する。 Typeはドロップダウン。 ドロップダウンで表示する領域もきちんと拡げておく。変数の追加変数の追…
DDX_LBStringは、選択されたアイテムのテキストを取得できる。DDX_LBString | Microsoft Docsリストボックスまた、リストボックスで、変数の追加変数の追加。ValueでCString前回はValueでintだったが、今回はValueでCStringにする。 前回と同様にControlの変…
リストボックスで選択されたアイテムを取得する場合、Controlにしてクラスオブジェクトから取る方法も、Valueにしてプリミティブ型変数から取る方法もある。 DDX_LBIndexは、プリミティブ型変数から選択されたアイテムが何番目かを取得できる。DDX_LBIndex |…
今回は、リストボックスの操作を行う。DDX_Control | Microsoft Docsこれまではコントロールの状態とプリミティブ型変数の値やCStringなどを紐づけていたが、今回はコントロールの状態とそのコントロールのクラスオブジェクトを紐づけることで、状態を取得し…
ラジオボタンの場合は、DDX_Radioマクロ。DDX_Radio | Microsoft Docs最初のアイテムはGroupをTrueに配置するときは、上から順に。 リソースIDの範囲でグループ化されるので。 最初のアイテムでは、GroupをTrueに。2つ目以降はGroupをFALSEに2つ目以降はGrou…
チェックボックスを配置して、その変数を追加する場合は、DDX_Checkマクロが使われることになる。DDX_Check | Microsoft Docsチェックボックスの変数を追加チェックボックスで変数追加。変数の種類はBOOLIDC_CHECK1は、m_xvCheck1という変数で状態管理し、変…
DDX_Textマクロには、オブジェクトの値がCStringのタイプだけでなく、intのタイプもある。(というよりいろんな型が選択できる。)DDX_Text | Microsoft Docsすでに配置されているのでこの場合では選択不可であるがエディットコントロールに入力された値を入れ…