MFC

CFileDialog::GetOFN

MFC

CFileDialog::GetOFNで、OPENFILENAME構造体を取得する。CFileDialog クラス | Microsoft LearnCFrameWnd_.cppは、こうする。 Item1-2を押すと、Item1-2を押すと、 "名前を付けて保存"なので"test2.txt"と指定。"名前を付けて保存"なので"test2.txt"と指定。…

CFileDialog

MFC

CFileDialogはファイル選択ダイアログクラス。CFileDialog クラス | Microsoft Learnコンストラクタの第1引数がFALSEだと"名前を付けて保存"ダイアログになる。 resource.hは、ID_ITEM_1_2を追加。 CFileDialog.rcは、Item1-2を追加。 CFrameWnd_.hは、OnUpd…

CFileDialog::DoModal

MFC

MFCでは、CFileDialog::DoModalで、ファイル選択ダイアログを表示する。CFileDialog クラス | Microsoft LearnCFrameWnd_.cppで、OnItem1_1で、CFileDialogのコンストラクタ引数の最初をTRUEにすると、"ファイルを開く"ダイアログとして表示される。 Item1-1…

CMenu::DeleteTempMap

MFC

CMenu::DeleteTempMapで、CMenu::FromHandleの時に作成された一時オブジェクトマップを削除する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、こうすると、 この時点でハンドルはある。この時点でハンドルはある。 ここまで行くと、もうメニューハンド…

CMenu::CheckMenuRadioItem

MFC

メニューのラジオ項目にチェックを付けるには、CMenu::CheckMenuRadioItemを使う。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 Item1-2を押すと、Item1-2を押すと、 チェックが付く。チェックが付く。Sample/mfc/CMenu/CheckMenuRadioItem/sr…

ON_COMMAND_RANGE

MFC

項目IDの連続した範囲を1つのハンドラ関数にマップするには、ON_COMMAND_RANGEを使う。メッセージ マップ マクロ (MFC) | Microsoft Learnメニューのラジオ項目とかのイベントを拾う時はこれを使う。 CFrameWnd_.hは、とする。 CFrameWnd_.cppは、とする。 …

CMenu::CheckMenuItem

MFC

CMenu::CheckMenuItemで、指定のメニュー項目にチェックを付けたり外したりできる。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 Item1-1を押すと、Item1-1を押すと、 チェックが付いて、また押すと、チェックが付いて、また押すと、 チェック…

CMenu::GetMenuState

MFC

CMenu::GetMenuStateで、メニュー項目の状態を取得する。CMenu クラス | Microsoft LearnCFrameWnd_.hは、とする。 CFrameWnd_.cppは、とする。 Item1-4押すと、Item1-4押すと、 これが出て、これが出て、 これが出て、これが出て、 これが出る。これが出る…

CMenu::ModifyMenu

MFC

CMenu::ModifyMenuで、メニュー項目のテキストを指定した文字列に更新する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とすると、 Item1-1を押すと、Item1-1を押すと、 こうなる。こうなる。Sample/mfc/CMenu/ModifyMenu/src/CMenu at master · bg1b…

CMenu::GetMenuString

MFC

CMenu::GetMenuStringで、指定の項目のテキストを取得する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 押したら、押したら、 こうなる。こうなる。Sample/mfc/CMenu/GetMenuString/src/CMenu at master · bg1bgst333/Sample · GitHub

CMenu::GetMenuItemID

MFC

CMenu::GetMenuItemIDで、指定位置の項目IDを取得する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 Item1-1を押すと、Item1-1を押すと、 0番目の項目IDはID_ITEM_1_1と同じ0番目の項目IDはID_ITEM_1_1と同じ。Sample/mfc/CMenu/GetMenuItemI…

CMenu::GetMenuItemCount

MFC

CMenu::GetMenuItemCountで、メニュー項目数を取得する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 Item1-1を押すと、Item1-1を押すと、 項目数は4。項目数は4。Sample/mfc/CMenu/GetMenuItemCount/src/CMenu at master · bg1bgst333/Sampl…

CMenu::GetDefaultItem

MFC

CMenu::GetDefaultItemで、どれが既定のメニュー項目かを判定する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、とする。 そのままItem1-3を押すと、そのままItem1-3を押すと、 既定の項目がないのでこうなる。既定の項目がないのでこうなる。 Item1-1…

CMenu::SetDefaultItem

MFC

CMenu::SetDefaultItemで、既定のメニュー項目にする。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、Item1-1が押されたら、Item1-2を既定の項目にする。 押したら、押したら、 既定の項目の特徴である太字になるが、なんで文字列途中で切れるんだろ。既…

CMenu::EnableMenuItem

MFC

CMenu::EnableMenuItemで、メニュー項目の有効化や、無効化や、グレーアウトをセットする。CMenu クラス | Microsoft Learn EnableMenuItem: 日々題resource.hは、項目4つ。 CMenu.rcは、こうする。 CFrameWnd_.hは、こうして、CFrameWnd_.cppは、こうする。…

CMenu::DeleteMenu

MFC

CMenu::DeleteMenuでメニュー項目を削除する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、Item1-3が押されたら、1番目を削除。 Item1-1を押すと、Item1-1を押すと、 Item1-2が挿入されたので、Item1-3を押すと、Item1-2が挿入されたので、Item1-3を押…

CMenu::InsertMenu

MFC

CMenu::InsertMenuで、メニュー項目を挿入する。CMenu クラス | Microsoft Learnresource.hは、ID_ITEM_1_1からID_ITEM_1_3の3つ。 CMenu.rcは、デフォルト表示は、Item1-1とItem1-3。 CFrameWnd_.hは、Item1-1からItem1-3までのハンドラ。 CFrameWnd_.cppは…

CMenu::GetSubMenu

MFC

CMenu::GetSubMenuで、サブメニューを取得する。CMenu クラス | Microsoft Learnresource.hは、ID_ITEM_1_2だけ増えた。 CWinApp_.cppは、LoadFrameでIDM_MAINMENUをロード。 CFrameWnd_.hは、OnUpdateItem1_2や、OnItem1_2が追加。 CFrameWnd_.cppは、OnIte…

CMenu::CreatePopupMenu

MFC

CMenu::CreatePopupMenuで、ポップアップメニュー(サブメニュー)を作成する。CMenu クラス | Microsoft Learnresource.hは、メニュー差し替え後は9つの項目。 CMenu.rcは、最初はItem1-1だけ。 CFrameWnd_.hは、ポップアップメニューはメンバーとして持って…

CWnd::DrawMenuBar

MFC

CWnd::DrawMenuBarで、メニューバーを描画する。CWnd クラス | Microsoft LearnCWinApp_.cppは、pFrameWnd_->LoadFrameでIDM_MAINMENUをロード。 CFrameWnd_.cppは、 // ハンドラOnItem1_1() void CFrameWnd_::OnItem1_1(){ // メニュー項目Item1_1のコマン…

CMenu::Detach

MFC

CMenu::Detachで、メニューハンドルとCMenuオブジェクトの紐付けを解除する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、 // ハンドラOnItem1_1() void CFrameWnd_::OnItem1_1(){ // メニュー項目Item1_1のコマンドハンドラ // メニュー項目の追加. C…

CMenu::Attach

MFC

CMenu::Attachで、メニューハンドルとCMenuオブジェクトを紐付ける。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、こういった場合は、Detachは不要。 破棄する前提というのもあるし、cMenu.DestroyMenuの中でDetachしてDestroyMenuしてm_hMenuはNULLに…

CMenu::FromHandle

MFC

CMenu::FromHandleで、メニューハンドルからCMenuオブジェクトポインタを取得する。CMenu クラス | Microsoft LearnCWinApp_.cppは、CFrameWndには、m_hMenuDefaultというデフォルトメニューハンドルのメンバがあるが、LoadFrameじゃないとセットされない。 …

CWnd::Detach

MFC

CWnd::Detachで、CWndオブジェクトとウィンドウハンドルの紐付けを解除する。CWnd クラス | Microsoft LearnCFrameWnd_.cppで、結局、メンバにしなくても、ローカルオブジェクトでAttachして、操作して、Detachすればいい。 Item1-1を押すと、Item1-1を押す…

CWnd::Attach

MFC

CWnd::Attachで、CWndオブジェクトにウィンドウハンドルを紐付ける。CWnd クラス | Microsoft Learnこれでも操作できるがスコープを抜けると破棄されるので注意しないといけない。 子ウィンドウクラスCChildWndを定義。 CChildWnd.hは、CChildWnd.cppは、と…

CWnd::FromHandle

MFC

CWnd::FromHandleで、ウィンドウハンドルからCWndオブジェクトポインタを一時的に取得できる。CWnd クラス | Microsoft LearnCWinApp_.cppで、ウィンドウクラスにメニューリソース指定有。 CFrameWnd_.hで、メンバに子ウィンドウハンドルm_hChildを追加。 CF…

CMenu::LoadMenu

MFC

CMenu::LoadMenuで、メニューリソースをロードする。CMenu クラス | Microsoft LearnCWinApp_.cppで、メニューリソース指定なし。 CFrameWnd_.hは、OnPaintを追加。 CFrameWnd_.cppは、今回も、ON_WM_PAINTマクロとOnPaintハンドラで無理矢理起点を作って、C…

CMenu::DestroyMenu

MFC

CMenu::DestroyMenuで、メニューを破棄する。CMenu クラス | Microsoft LearnCFrameWnd_.cppで、こういう風に書くこともできる。 Item1-1を押して、Item1-1を押して、 Item2に差し替わる。Item2に差し替わる。Sample/mfc/CMenu/DestroyMenu/src/CMenu at mas…

CWnd::SetMenu

MFC

CWnd::SetMenuで、ウィンドウにメニューをセットする。CWnd クラス | Microsoft LearnCWinApp_.cppで、またウィンドウクラスにメニューリソースを指定。 CFrameWnd_.hで、CMenuオブジェクトポインタm_pMenuを用意。 CFrameWnd_.cppで、CFrameWnd_::OnItem1_1…

CMenu::CreateMenu

MFC

CMenu::CreateMenuで、メニューを作成する。CMenu クラス | Microsoft Learnresource.hを、微妙に変えてる。 メニューそのもののIDは100, 110, 120としたほうがいいかな。でもこれ100とか許されるんかな。 CWinApp_.cppは、ウィンドウ作成時にメニューを指定…