MFC
MFCのDECLARE_DYNAMICとIMPLEMENT_DYNAMIC
以下のページに書いてることですが、ググってもすぐにはヒットしないようなので、備忘録として残しておきます。
http://www.geocities.co.jp/Hollywood/2358/mfc_2.html
MFCでは、ユーザー定義のクラスをnewする必要があります。
しかし、MFC内部ではユーザーが定義したクラスの名前は分かりようがないので、newするための関数をユーザーが用意する必要があります。
ただし、newの処理をユーザーが直書きするのはめんどくさい。
そこで用意されたのが、DECLARE_DYNAMICとIMPLEMENT_DYNAMICマクロです(と上記ページでは予想しています)。
DECLARE_DYNAMICは、new処理を行う関数の宣言。
IMPLEMENT_DYNAMICは、その関数の定義。
http://www.geocities.co.jp/Hollywood/2358/mfc_2.html
MFCでは、ユーザー定義のクラスをnewする必要があります。
しかし、MFC内部ではユーザーが定義したクラスの名前は分かりようがないので、newするための関数をユーザーが用意する必要があります。
ただし、newの処理をユーザーが直書きするのはめんどくさい。
そこで用意されたのが、DECLARE_DYNAMICとIMPLEMENT_DYNAMICマクロです(と上記ページでは予想しています)。
DECLARE_DYNAMICは、new処理を行う関数の宣言。
IMPLEMENT_DYNAMICは、その関数の定義。
MFCの解析③ ~ダイアログ最小構成~
今回はダイアログの最小構成。
このソースコードを書くのとは別に、以下の作業が必要です。
➀リソースファイル > 追加 > リソース > Dialog > 新規作成
➁リソースビューで、ダイアログにボタン貼り付け
以上です。
「ここからは複雑になるんだろうなぁ」と思っていたら、とっても簡単でした。
Visual Studioが自動生成するMFCプロジェクトは色々と余計なものがくっついているようですね。
このソースコードを書くのとは別に、以下の作業が必要です。
➀リソースファイル > 追加 > リソース > Dialog > 新規作成
➁リソースビューで、ダイアログにボタン貼り付け
以上です。
「ここからは複雑になるんだろうなぁ」と思っていたら、とっても簡単でした。
Visual Studioが自動生成するMFCプロジェクトは色々と余計なものがくっついているようですね。
MFCの解析➁ ~ボタン付き最小構成~
MFCの解析➀ ~最小構成~
今までブラックボックスとして使っていたMFCを解析してみることにしました。
とりあえず、「最小構成はどうなるんだろ」ってとこを解析してみました。
以下の画像が最小構成コード。「1日でわかるMFC」さんを参考にさせていただきました。
http://hp.vector.co.jp/authors/VA011804/mfc_a0.htm
Debugで追っていくと分かりますが、以下のような処理をしています。
➀MFC内で定義されている_tWinMain()関数が実行される。
➁その中で、アプリケーションクラスのInitInstance()関数が実行される。
③その中で、ウィンドウクラスのインスタンスが生成される。
④ウィンドウクラスのコンストラクタでCreate()関数が実行され、ウィンドウの登録と生成が成される。
←その過程で、PreCreateWindow()関数が実行されている。
⑤ShowWindow()関数でウィンドウを可視化する。
ここまでだと、ウィンドウやアプリケーションがクラス化されただけで、いまいちMFCのメリットが分かりませんね。
とりあえず、「最小構成はどうなるんだろ」ってとこを解析してみました。
以下の画像が最小構成コード。「1日でわかるMFC」さんを参考にさせていただきました。
http://hp.vector.co.jp/authors/VA011804/mfc_a0.htm
Debugで追っていくと分かりますが、以下のような処理をしています。
➀MFC内で定義されている_tWinMain()関数が実行される。
➁その中で、アプリケーションクラスのInitInstance()関数が実行される。
③その中で、ウィンドウクラスのインスタンスが生成される。
④ウィンドウクラスのコンストラクタでCreate()関数が実行され、ウィンドウの登録と生成が成される。
←その過程で、PreCreateWindow()関数が実行されている。
⑤ShowWindow()関数でウィンドウを可視化する。
ここまでだと、ウィンドウやアプリケーションがクラス化されただけで、いまいちMFCのメリットが分かりませんね。