私はATL::CWindowImpl<CMyCustomControl>
からカスタムコントロールを派生し、DECLARE_WND_CLASS(_T("CMyCustomControl"))
と宣言しました。ATL/WTLダイアログでカスタムコントロールを登録するには?
また、クラス名がCMyCustomControl
のカスタムコントロールでダイアログリソースを作成しました。
コントロールを適切に登録してダイアログに表示できるようにするにはどうすればよいですか?
私はATL::CWindowImpl<CMyCustomControl>
からカスタムコントロールを派生し、DECLARE_WND_CLASS(_T("CMyCustomControl"))
と宣言しました。ATL/WTLダイアログでカスタムコントロールを登録するには?
また、クラス名がCMyCustomControl
のカスタムコントロールでダイアログリソースを作成しました。
コントロールを適切に登録してダイアログに表示できるようにするにはどうすればよいですか?
WTLでカスタムコントロールを作成する典型的な方法があります。
DECLARE_WND_CLASS
/DECLARE_WND_SUPERCLASS
+ RegisterClassEx
APIは、ESP、ウィンドウクラスを実装するクラス名CWindowImpl
から継承し、手動で制御を作成します。 OnCreate
/OnInitDialog
(などの強調表示色を持つ編集コントロール、カスタムリストビュー、ハイパーリンクなどの静的)、ウィンドウクラスを実装ダイアログテンプレートによって、標準コントロールをインスタンス化し、その動作を変更するためにコントロールのインスタンスをサブクラス化3つすべてでは、クラス定義のマクロだけでなく、それ以上のことをする必要があります。あなたはここで素晴らしい例を見つけるでしょう:http://www.viksoe.dk/code/all_wtl.htm "コントロール"セクションの下に。
確かに4番目の方法は、ActiveXコントロールを実装することです。
viksoe.dkを忘れました。 +1 - 参考に感謝します。 – bvj
あなたはこの質問で探しているものを見つけるかもしれません:http://stackoverflow.com/questions/575532/pre-registering-an-atl-window-class明らかにそれは不可能です。 –
@ MarkRansom:Shooooot ...これは本当に "事前登録"ですか?私は本当に気にしない*それが登録されている(何もサードパーティーのことはありません)、私はちょうどそれが表示されたい...カスタムコントロールのためのかなり標準のように聞こえる... – Mehrdad
あなたはリソースダイアログが作成されたときにコントロールを自動的に作成するには、明らかにWindowsはウィンドウクラスについて事前に知っていなければなりません。ダミーのコントロールを作成し、OnInitDialogでサブクラス化する方法はかなりうまくいく。 –