Test

CUserControl::Destroy

CMainWindow、そしてCUserControlにも、Destroyを実装する。 MainWindow.hに、Destroyを追加。 MainWindow.cppで、こう定義する。 UserControl.hにもDestroyを追加し、 UserControl.cppでは、MessageBoxを出すためにオーバーライドしてるけど、これ定義しな…

CWindow::Destroy

ウィンドウを破棄するCWindow::Destroyを実装する。 Window.hで、Destroyを追加。 Window.cppでは、Destroyをこのように定義。デストラクタで呼ぶ。OnCloseから呼べるけど、閉じた後はどちらにしろウィンドウは破棄されるので、これはコメントアウト。 MainW…

CWindow::OnClose

ウィンドウが閉じられる時のイベントハンドラOnCloseを実装する。 Window.hで、OnCloseを追加。 Window.cppで、OnCloseの定義は、こうして、WM_CLOSEの部分はこうする。 MainWindow.hにも、OnCloseを追加し、MainWindow.cppは、MessageBoxでOKを押したときだ…

CUserControl::RegisterClass

CWindow::RegisterClassでも、ウィンドウクラス登録は出来るが、ウィンドウ自体はCUserControlで作っているわけだから、CUserControl::RegisterClassでもウィンドウクラス名を指定して登録できるようにする。 UserControl.hで、ウィンドウクラス名を指定する…

CUserControl::Create

CUserControlに独自のウィンドウクラス名を付ける。 といっても、ウィンドウクラス名の登録はCWindow::RegisterClassで行う。 で、CUserControl::Createでそのウィンドウクラス名を指定するカタチ。 UserControl.hで、lpctszClassNameを指定するバージョンを…

CUserControl

独自のコントロール、CUserControlを追加し、CMainWindowの子ウィンドウとして配置する。 UserControl.hを追加し、こう書く。 UserControl.cppは、と書く。 Createの中では、ウィンドウスタイルとしてdwStyleにWS_CHILDとWS_VISIBLEが追加される。 MainWindo…

CWindow::OnDestroy

今度は、WM_DESTROYのメッセージハンドラOnDestroyをつくる。 Window.hに、OnDestroyを追加。 Window.cppは、CWindow::OnDestroyで、PostQuitMessage。WM_DESTROYで、OnDestroyを呼ぶ。 MainWindow.hにも、OnDestroy。 MainWindow.cppは、メッセージボックス…

CWindow::OnCreate

ウィンドウメッセージWM_CREATEが来た時の処理を、OnCreateメッセージハンドラにまとめる。 Window.hに、OnCreateを追加。 Window.cppで、0を返す。 あとは、WM_CREATEのところで、OnCreateにhwndとlParamを渡して、戻り値をreturnで返す。 これだけでもいい…

CWindow::RegisterClass

CMainWindowにもRegisterClassを追加することで、"CMainWindow"という指定を減らしてほんの少しコンパクトにする。 MainWindow.hに、staticなRegisterClassを追加。 MainWindow.cppは、CMainWindow::RegisterClassの中身は、CWindow::RegisterClassで"CMainW…

CWindow::Create

CWindowを継承したCMainWindowでウィンドウを作成するようにする。 そのためには、いろいろやることがある。 CWindow::Createのウィンドウクラス名省略バージョンを作るのもそのひとつ。 まずは、MainWindow.hを追加し、省略バージョンを作っておく。 MainWi…

CApplication::ExitInstance

前回は、CApplication::ExitInstanceはいじらずに、外でCWindowオブジェクトポインタm_pMainWndを解放してたけど、今回はCApplication::ExitInstanceでm_pMainWndを解放する。 Application.cppは、とする。 WinMain.cppは、とする。 これで必ず終了時にExitI…

CApplication::InitInstance

ひさびさに、CApplicationとCWindowの実装について再開。 前回はちょうど1年前の1月23日なのか。 今回は、CApplicationを継承したCMainApplicationのInitInstanceで、CWindowを作ることにする。 まず、Application.hは、CWindowのインスタンスをm_pMainWndと…

CWindow::DynamicWindowProc

今回はひさびさにこちらをやった。 前回言ってたDynamicWindowProcの書き方。 Window.hで、static変数のm_mapWindowMapを追加し、本題のDynamicWindowProcも追加。 Window.cppは、これで、StaticWindowProcを経由して、CWindowやCWindowの派生クラスごとに用…

CWindow::StaticWindowProc

ウィンドウプロシージャをメンバにするには、staticにする。このように。 そして、Window.cppは、こうして、RegisterClassの時も、StaticWindowProcを指定。変わらず表示できた変わらず表示できた。 そして、CApplicationや、CWindowも含めて、ここまでのク…

CWindow

ウィンドウクラスの登録、ウィンドウの作成、ウィンドウの表示については、CWindowクラスにまとめる。 (MFCでいうところのCWndに相当する。) ウィンドウプロシージャは、Window.h/Window.cppに移動するものの、今回はメンバにしない。 Window.hは、メンバ変…

CApplication

InitInstance、Run、ExitInstance、これらのアプリケーションに関する処理をCApplicationクラスにまとめる。 (MFCでいうところのCWinAppに相当する。) まず、Application.hは、CApplicationクラスのメンバに、InitInstance、Run、ExitInstance、を追加する。…

ExitInstance

終了処理を行うExitInstanceを切り出す。といっても、0で返すだけ。 ただ、Runの中と、InitInstanceに失敗した時の2カ所で呼ばれるようにしている。変わらずウィンドウの表示変わらずウィンドウの表示。Test/winapi/ExitInstance/ExitInstance/src/ExitInsta…

Run

メッセージループを処理するRun関数を切り出す。実行すると、特に変わらずウィンドウが表示される特に変わらずウィンドウが表示される。Test/winapi/Run/Run/src/Run at master · bg1bgst333/Test · GitHub

InitInstance

ウィンドウクラスの登録、ウィンドウの作成、ウィンドウの表示、をInitInstanceにまとめた。コードとしては、これまでも散々書いてきた内容。実行すると、ウィンドウが表示されるウィンドウが表示される。 ただ、今回はせっかくなので、YouTubeで生配信して…

get_time_now_string

時刻文字列を素早く取得したいので、get_time_now_stringを作成。ctimeを使っている。 また、改行を除去しないといけないのが厄介なので、trim_end_lfを利用。 $ vi main.c $ gcc main.c -o main $ ./main now_str = Sun Feb 16 00:51:25 2020 $実行したらこ…

print_input_form

C++版のprint_input_formは、改行付き出力と、改行コードの除去が不要なので、このように、1行で出力->入力->出力を完結できる。 $ vi main.cpp $ g++ main.cpp -o main $ ./main str: ABCDE ABCDE $ このようになる。Test/cpp/print_input_form/print_input…

print_input_form

入力フォームを表示し、入力文字列を指定の配列に格納する。fgetsで入力文字列を取得し、trim_end_lfで改行文字を除去している。 入力フォームは、"str: "という形式にしている。 $ vi main.c $ gcc main.c -o main $ ./main str: ABCDE ABCDE $入力フォーム…

trim_end_lf

渡された文字配列の末尾の改行を除去する。まず、そのままstrを'['と']'で囲んで出力。 trim_end_lfの中では、len - 1番目が'\n'なら'\0'にする。 また、strを'['と']'で囲んで出力。 もう一回trim_end_lfを呼んで、そのあと、またstrを'['と']'で囲んで出力…

print_line

もう何度目かの作り直しかわからないけど、Testカテゴリをリブート。 まずは、C言語で改行付き出力関数print_lineを作ってみる。中身はprintfであり、strに"\n"をつなげて出力しているだけ。 コンパイルして実行すると、 $ vi main.c $ gcc main.c -o main $…