Test

エディットボックスのクラス化(WindowsAPI)

エディットボックスに入力されたテキストを取得、またはエディットボックスにテキストをセット、といった部分をクラス化・・・。基底クラスとなるCEditの定義は、tstringをdefineしてstd::wstringとstd::stringのUNICODE切り替えに対応・・・。そのtstringの…

エディットボックスの表示(WindowsAPI)

あるボタンを押したら、エディットボックスに入力されたテキストを取得してメッセージボックスで表示し、別のボタンを押したら、エディットボックスに別のテキストをセットする・・・。"アップデートの確認"ボタンとは別に、新しいボタンを配置・・・。今回…

ボタンのクラス化(WindowsAPI)

ボタンのクラス化は結構大変・・・。ボタンが押された時、WM_COMMANDは親ダイアログに通知されるので、親ダイアログのハンドラにそれに対する処理を書けばいい・・・。しかし、それだと親ダイアログが肥大化しそうなので、各ボタンクラスオブジェクトにその…

ボタンの表示(WindowsAPI)

ダイアログにOKボタンとは別の新たなボタンを配置してみる・・・。ツールボックスでButtonを選択・・・。このように配置・・・。Captionも"Button1"から、"アップデートの確認"に変更・・・。IDも"IDC_BUTTON1"から、"IDC_BUTTON_UPDATECHECK"に変更・・・。…

ダイアログのクラス化(WindowsAPI)

ダイアログをクラス化する・・・。ウィンドウクラスと統一してもいいが、動作が若干違うので個別にダイアログクラスを作る・・・。と、というように前回同様のメニューを用意・・・。ダイアログも、前回同様・・・。基底クラスとなるCDialogクラスは、m_mapD…

ダイアログの表示(WindowsAPI)

ダイアログを表示する・・・。今回は、モーダルで・・・。リソースを追加する・・・。まずはMenuで、これまで通りの項目を挿入・・・。新たにヘルプ(&H)というメインメニューのアイテムを作って、バージョン情報(&A)というサブアイテム・・・。IDをID_APP_AB…

メニューウィンドウ(WindowsAPI)

メニューを載せたウィンドウCMenuWindowをメインウィンドウCMainWindowのベースとなるようにしてみる・・・。MenuWindow.hのCMenuWindowのメンバに、CMenuオブジェクトポインタm_pMenuを用意・・・。SetMenuは、オリジナルのメニューセット関数・・・。引数…

メニューのクラス化(WindowsAPI)

今度はメニューをクラス化してみる・・・。メニューリソースを追加したら、ここまで項目を決めて、IDなども変える・・・。Menu.hのCMenuは、こんな感じ・・・。 m_hWndはメニューを持つウィンドウのハンドル・・・。 ここでもm_pAppをこれに渡して、ここから…

メニューの表示と選択(WindowsAPI)

メニューを表示し、選択されたら、その項目のリソースIDマクロ名を表示する・・・。リソースを追加・・・。Menuを選択・・・。メインメニューの項目1から入力していく・・・。"ファイル(&F)"とする・・・。"(&F)"は、ショートカットキーがFであることを指す…

ウィンドウの表示(MFC)

MFCでできるだけシンプルなウィンドウのプロジェクトを作成してみる・・・。 シンプルといってもシングルドキュメントでドキュメントビューをオフにするぐらいしか削れないのだが・・・。MFCアプリケーションで、シングルドキュメント、ドキュメント/ビュー…

ウィンドウのクラス化(WindowsAPI)

「ウィンドウをただ表示する」からかなりハードルが上がって、Win32だとクラスを自作しないといけないので、ウィンドウをクラス化してみる・・・。 MFC風な設計をベースに、いろいろ試行錯誤してなんとかクラスに押し込めている・・・。まず、WinMain.cppに_…

ウィンドウの表示(WindowsAPI)

ウィンドウを表示する・・・。Win32プロジェクト・・・。空のプロジェクトで・・・。ソース追加・・・。Window.cppとして、ウィンドウクラス名を"Window"とし、あとは既定のものをウィンドウクラスwcに設定・・・。 メニューはなし・・・。RegisterClassでwc…

Hello, world!(Android)

Android版・・・。Android Studioで・・・。newで・・・。HelloWorldプロジェクト・・・。Phone and Tablet用・・・。Emptyで・・・。そのまま・・・。こんな感じ・・・。activity_main.xmlに、もう"Hello World!"と書いてあるので、いじる必要なし・・・。…

Hello, world!(Java)

Java版・・・。Eclipseで、こんなパスで、起動したらJavaプロジェクトを選択し、"HelloWorld"プロジェクト・・・。そのまま・・・。パースペクティブは"はい"で・・・。プロジェクトができたらクラスを追加・・・。HelloWorldクラス・・・。System.out.print…

Hello, world!(MFC)

MFC版・・・。 ダイアログベースにスタティックコントロールで"Hello, world!"・・・。MFCアプリケーション・・・。ダイアログベース、スタティックライブラリでMFC・・・。システムメニューだけ残して、あとはいらない・・・。全部いらない・・・。Appはい…

Hello, world!(.NET Framework)

WinForms版・・・。 今回はメッセージボックスではなく、フォームForm1に"Hello, world!"のラベルを貼る・・・。こんなフォーム・・・。ちょっと小さいので大きくする・・・。これぐらいで・・・。これを、こんな感じで貼る・・・。フォントが小さいので、大…

Hello, world!(C#)

C#のコンソールで・・・。今回は空のプロジェクトで・・・。ソースを追加・・・。コードファイルでHelloWorld.cs・・・。[参照の追加]でSystemを追加・・・。あとは、Console.WriteLineで"Hello, world!"・・・。こんな感じ・・・。Test/HelloWorld.cs at ma…

Hello, world!(WindowsAPI)

そして、Win32版・・・。 レガシー環境でやるか、最新環境でやるか迷ったけど、思い切って最新で・・・。 メッセージボックスで"Hello, world!"・・・。HelloWorldプロジェクト・・・。空のプロジェクトで・・・。ソースを追加・・・。HelloWorld.cpp・・・…

Hello, world!(C++)

次はC++版・・・。出力演算子" $ vi helloworld.cpp $ g++ helloworld.cpp -o helloworld $ ./helloworld Hello, world! $ こんな感じ・・・。Test/helloworld.cpp at master · bg1bgst333/Test · GitHub

Hello, world!(C言語)

新生Test・・・。 逆引きのような形でやっていこうと思う・・・。 順番もSampleよりは自由にやってこうと思う・・・。まずは、"Hello, world!"のC言語版・・・。printfで・・・。 $ vi helloworld.c $ gcc helloworld.c -o helloworld $ ./helloworld Hello,…

CDialog::DoModal

ダイアログクラスCDialogに、ダイアログを表示するメンバ関数DoModalを実装する・・・。Dialog.hに、を追加・・・。Dialog.cppには、と定義・・・。 DialogBoxを呼んでいるだけ・・・。 戻り値はそのままEndDialogで指定したものが返ってくる感じ・・・。Men…

CDialog

ダイアログクラスCDialogを実装する・・・。まず、resource.hに、ダイアログのリソースID、IDD_DIALOGの番号を割り振る・・・。 CDialog.rcのダイアログリソース定義は、こんな感じ・・・。 Dialog.hで、CDialogはと定義・・・。 リソースID、アプリケーショ…

CMenu::OnCommandMenuItem

これまで、メニュー項目を選択した時のハンドラ処理は、CWindowのOnCommand、 そして、その下でメニュー項目ごとに定義したハンドラを呼ぶという構成にしていた・・・。これだと、CWindowクラスが肥大化しそうなので、CMenuクラスにハンドラ処理を移設する・…

CMenu::SetMenu

SetMenuを実装する・・・。 本来MFCだとCWndに実装してあるので、CWindowに実装するのが普通だが、今回はCMenuに実装して、hwndを指定するようなタイプにしてみる・・・。Menu.hは、Menu.cppは、Window.cppのOnCreateで、こんな感じで呼び出す・・・。で、ht…

CMenu::LoadMenu

CMenuクラスにメンバ関数LoadMenuを実装する・・・。Menu.hに、LoadMenuを追加・・・。 戻り値はBOOL、引数はリソースID・・・。 オーバーライドできるようにvirtualにしておく・・・。で、Menu.cppでは、WindowsAPIのLoadMenuでメニューをロードしてるだけ…

CMenu

メニュークラスCMenuを実装する・・・。Menu.hに、アプリケーションインスタンスハンドルm_hInstanceとメニューハンドルm_hMenuを用意・・・。 また、コンストラクタはインスタンスハンドルを引数として渡すものを用意・・・。Menu.cppで、hInstanceを渡すコ…

CWindow::OnCommand

CWindowにメニューを実装する・・・。 ただ、メニューの表示自体はリソースファイルに定義するだけでできるので、加えてOnCommandハンドラと、それぞれのメニュー項目のコマンドハンドラを実装する・・・。resource.hに、リソースID番号・・・。 OnCommand.r…

CWindow::OnCreate

DynamicWindowProcの中のWM_CREATE時の処理を、OnCreateを作ってそちらに移す・・・。 そうすることで、OnCreateなどのハンドラごとにオーバーライドできる・・・。Window.hに、OnCreateを宣言・・・。 引数は、MFCのCWnd::Createと同じCreateStruct構造体ポ…

CWindow::DynamicWindowProc

前回、StaticWindowProcを追加したことで、CWindowクラスにウィンドウプロシージャをメンバとして組み込むことができた・・・。ただ、スタティックなメンバであるため、複数のウィンドウオブジェクトが同時に処理をすると、それぞれ競合してしまう可能性があ…

CWindow::StaticWindowProc

これまで、ウィンドウプロシージャWindowProcは、グローバルなコールバック関数として定義してきた・・・。ただ、CWindowのウィンドウプロシージャとして定義するなら、メンバにしたいところ・・・。しかし、コールバック関数は普通のメンバ関数にすることは…