ATLで、ウィンドウを作成し、表示するには、CWindowImplが必要。
CWindowImpl クラス | Microsoft Docs
ATL/WTLプログラミング 1:ATL/WTLの概要と基本 (1/2):CodeZine(コードジン)
ちょっと使い方が独特。
まず、
コンソールでプロジェクト作成。
コンソールの空のプロジェクト。
空の状態。
新しい項目を追加。
stdafx.hを追加。
必要なインクルードや、CComModule。
プロパティで、
[ATLに静的にリンク]に変更。
今度は、
CustomWindow.hを追加。
CWindowImplのテンプレート引数をCCustomWindowとしたクラスの派生クラスとしてCCustomWindowを定義する。
DECLARE_WND_CLASSマクロでウィンドウクラス名を登録できる。
メッセーマップもわかりやすい。
ここではOnDestroyでメッセージループ終了処理だけ実装。
また追加。
WinMain.cppだ。
CCustomWindowオブジェクトを作成して、customWnd.Createでウィンドウ作成、customWnd.ShowWindowでウィンドウ表示。
そのあと、メッセージループ処理。
で、これでビルドすると、
コンソールじゃダメなのでは・・・。
Visual Studioアプリケーションの種類を変更する方法
やっぱり・・・。
[サブシステム]を[コンソール]から[Windows]へ。
[プリプロセッサ]も[_CONSOLE]を、
[_WINDOWS]に。
これでビルドできたので、実行すると、
ウィンドウが表示される。
やっぱり、"コンソールアプリケーション"の空のプロジェクトではなく、"Win32プロジェクト"の空のプロジェクトで、"プロジェクト完成後"に、"ATLに静的にリンク"の状態にする。
このプロジェクトの作成の部分が、前回間違ってたので、今回が正しい・・・。
Sample/atl/CWindowImpl/CWindowImpl/src/CWindowImpl at master · bg1bgst333/Sample · GitHub