Aoi #13 エディットボックスのテキストを取得

"名前を付けて保存"を押したら、エディットボックスに入力されたテキストを取得し、メッセージボックスで表示してみる・・・。

まずは、MenuBar.hで、

ウィンドウハンドルを渡すCMenuBarのオーバーライドコンストラクタを追加・・・。
MenuBar.cppで、

引数のウィンドウハンドルをメンバにセット・・・。

MainMenuBar.hは、

CMenuBarのhwnd付きコンストラクタをCMainMenuBarでも・・・。
OnFileSaveAsも・・・。

コンストラクタは、CMenuBarのコンストラクタに丸投げ・・・。
OnFileSaveAsでエディットボックスのテキストを取得し、表示する処理・・・。
ちなみにIDC_EDITBOX1は、

こんな感じでresource.hに独自のIDをセット・・・。

MainWindow.cppで、

CMainMenuBarに差し替え・・・。

f:id:BG1:20170201001051p:plain

入力して、

f:id:BG1:20170201001307p:plain

これを押すと、

f:id:BG1:20170201001440p:plain

こんな風に表示・・・。

f:id:BG1:20170201001533p:plain

日本語も、

f:id:BG1:20170201001629p:plain

から、

f:id:BG1:20170201001901p:plain

こうなる・・・。

・エディットボックスのテキストを取得 · bg1bgst333/Aoi@be7a095 · GitHub

Aoi #12 メインメニューバーの定義

メニューバーを継承したメインメニューバーを定義して、メニューをカスタマイズする・・・。

f:id:BG1:20170131114922p:plain

MainMenuBar.hを追加して、

CMenuBarを継承して、CMainMenuBarを定義・・・。
とりあえずOnFileSaveAsだけ・・・。

あ、オーバーライドできるように、

MenuBar.hでハンドラにも全部virtualを付けた・・・。

で、MainMenuBar.cppは、

"CMainMenuBar::OnFileSaveAs()"と出すように・・・。

そして、MainWindow.cppで、

CMenuBarからCMainMenuBarに差し替え・・・。

f:id:BG1:20170131115720p:plain

これを選ぶと、

f:id:BG1:20170131115732p:plain

基底クラス側のハンドラが呼ばれるが、

f:id:BG1:20170131115802p:plain

こちらは、

f:id:BG1:20170131115812p:plain

派生クラス側のハンドラが呼ばれる・・・。

・メインメニューバーの定義 · bg1bgst333/Aoi@697752c · GitHub

ObjeqtNote #12 エディットボックスクラスの定義

エディットボックスをObjeqtNoteにも追加・・・。

EditBox.h、EditBox.cppを追加し、MainWindow.hは、

CCustomControlをCEditBoxに差し替え・・・。

こちらも差し替え・・・。

f:id:BG1:20170130171510p:plain

とくに変化なし・・・。

・エディットボックスクラスの定義 · bg1bgst333/ObjeqtNote@ce36933 · GitHub

Aoi #11 エディットボックスクラスの定義

ウィンドウクラス"Edit"なカスタムコントロールクラスはエディットボックスクラスと定義する・・・。

f:id:BG1:20170130160540p:plain

EditBox.hでは、

CEditBoxは、CCustomControlベース・・・。
Createはウィンドウクラスのないタイプをオーバーライド・・・。

EditBox.cppでは、

Createの定義では、CCustomControl::Createの第1引数にウィンドウクラス名"Edit"を指定・・・。
あとは、そのまま引数を渡す・・・。

MainWindow.hで、

CCustomControlのm_pCustomControlを、CEditBoxのm_pEditBoxに差し替え・・・。

MainWindow.cppで、

こちらも差し替え・・・。

f:id:BG1:20170130162215p:plain

変わらない・・・。

・エディットボックスクラスの定義 · bg1bgst333/Aoi@b8b8ef6 · GitHub

VizCommand #7 メインウィンドウとメインアプリケーションの定義

VizCommandにも適用する・・・。

MainWindow.hは、

他の2つと違うのは、CBasicWindowをベースとしているところ・・・。
でもユーザコントロールm_pUserControl、カスタムコントロールm_pCustomControlは持っている・・・。

MainWindow.cppは、

メニューの処理が無い・・・。
CBasicWindowベースだと無いからね・・・。

MainApplication.hは、

こちらは、CStandardApplicationをベースにしている・・・。

MainApplication.cppは、

CStandardApplication::InitInstanceを呼んで、CMainWindow::RegisterでCMainWindow登録して、CUserControl::RegisterClassでCUserControlも登録して、あとはm_pMainWindowの生成と表示・・・。

これによって、BasicWindow.hは、

ユーザコントロール、カスタムコントロール、ともに不要に・・・。

BasicWindow.cppもこんな感じ・・・。

StandardApplication.cppは、InitInstanceでCBasicApplication::InitInstanceを呼ぶだけに・・・。
他の2つ(Aoi、ObjeqtNote)のStandardApplication.cppは、CStandardWindow::RegisterClassも呼ぶのだが、CStandardWindowは使わないので追加しないし、そのためインクルードとか呼び出しをコメントしてる・・・。
(共通化するなら追加したほうがいいか・・・。まあ、あとで・・・。)

WinMain.cppは、

CMainApplicationに差し替え・・・。

f:id:BG1:20170128094033p:plain

これでようやく、3つともメインアプリケーションとメインウィンドウで処理を定義するようになった・・・。

・メインウィンドウとメインアプリケーションの定義 · bg1bgst333/VizCommand@b146482 · GitHub