読者です 読者をやめる 読者になる 読者になる

CWnd

MFC

CWndは、あらゆるウィンドウのベースとなるウィンドウ基底クラス・・・。

CWnd クラス

CFrameWndもCWndの派生クラス・・・。

CFrameWndの項では、CFrameWnd_のコンストラクタでウィンドウ作成のCreateを呼んでいたが、それだとCWinApp_クラスから自由に使えないので、

CFrameWnd_オブジェクトを作成し、ポインタをpFrameWnd_、さらにはm_pMainWndにも渡しておく・・・。
m_pMainWndは(CWnd *)型ポインタであり、メインウィンドウのオブジェクトポインタを格納しておくところ・・・。
元々はCFrameWndの親クラスのCWndのさらに親クラスのCWinThreadのメンバ・・・。
これはウィンドウを使う時は必ずセットしないとエラーが出るのでセットしてる・・・。
しかし、pFrameWnd_じゃないと、CFrameWnd_クラスとしてのメソッドを呼べないので、両方用意している・・・。

Createによるウィンドウの作成は、pFrameWnd_のCreateを呼んでいる・・・。
CFrameWnd_のCreateのほうが楽だし、そもそも親ウィンドウはこれじゃないと作成できないので・・・。
(CWndのCreateは、親ウィンドウポインタが必要で、子ウィンドウの作成しかできない・・・。)

ShowWindow、UpdateWindowは、親のCWndクラスのものなので、m_pMainWndから呼んでいる・・・。

f:id:BG1:20160105160503p:plain

ウィンドウを表示できた・・・。

Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.h at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.cpp at master · bg1bgst333/Sample · GitHub