1

CListCtrl から派生した FolderLister や色付きのリッチ エディット コントロールなど、MFC を使用してコントロール派生クラスを作成しました。プロジェクトがこのように非常に面倒になるため、それらをファイルに保持したいと思います。コントロールから派生した独自のコントロールを作成できますかツールボックスで使用しますか?または、クラスをファイルに保存して、ファイルに保存できますか? これを 2 日間検索していますが、スタティック ライブラリを使用するか、ActiveX コントロールを作成する必要がありますか? または atl を使用します。

私の英語でごめんなさい。前もって感謝します。

4

2 に答える 2

2

おそらく、ActiveX コントロールを作成したいと思うでしょう。MFC、ATL、または (自虐的であれば) 自分でそれを行うことができます。

これら 3 つのうち、一般的に MFC を使用するのが最も簡単で、自分で行うのが最も困難です。MFC の問題は、コントロールが非常に大きくなる傾向があることです。ATL を使用すると、完全に手動で記述したかのように小さなコントロールを生成できます。また、開発が MFC よりわずかに難しいだけです。

于 2013-06-23T21:57:05.610 に答える
1

これは Windows 固有の機能です。ボタン コントロールは良い例です。CreateWindowsEx() を呼び出して、クラス名として L"Button" を渡すだけで、ボタン コントロールを作成できます。これらは、Windows に組み込まれているコントロールです。

このスキームを使用して独自のものを作成するのは非常に簡単です。エクスポートされた Initialize() 関数を使用して DLL プロジェクトを作成するだけです。その関数で RegisterClassEx() を呼び出して、独自のコントロール クラスを登録します。クライアント コードは、CreateWindowEx() を呼び出すだけで、コントロール クラス名を渡してウィンドウ上のコントロールを取得できるようになりました。ウィンドウに独自の動作を与えるのは、WNDCLASSEX に登録したウィンドウ プロシージャです。独自のメッセージを追加して、クライアントがコントロールを構成し、カスタム機能を呼び出せるようにします。これはまさにコモン コントロールの動作方法であり、初期化関数は InitCommonControls であり、カスタム メッセージは CommCtrl.h ヘッダー ファイルで宣言されています。

Windows が自動的に DLL を見つけてロードし、デザイナーでコントロールを機能させるスキームを使用して、そのパターンを無限に複雑にすることができます。ActiveX コントロールの背後にある考え方。かなりの学習曲線です。シンプルに保つのが最善です。

于 2013-06-23T22:27:05.270 に答える