3

私は単純だと思っていた何かをする必要があります-2つのタブを持つタブコントロールを作成します。これは私のアプリの2つの操作モードを意味します。ユーザーがTab1をクリックすると、いくつかのボタンとテキストボックスが表示され、Tab2をクリックすると、他の入力方法が表示されます。MFCでタブを追加するために使用されるCTabCtrlクラスがあることに気づきました。ただし、UIデザイナーを使用してタブコントロールを追加すると、プロパティウィンドウを使用してタブの数を指定できませんでした。ネットで検索すると、いくつかの例が見つかりましたが、それらはすべて、CtabCtrlから派生し、2つ以上の子を作成する必要がありました。ダイアログなど、独自のカスタムクラスを作成します。私の質問は、非常に基本的なことをしたいので、使い慣れたイベントハンドラーの追加/メンバー変数の追加ウィザードを使用してそれを実行し、アプリのクラス内の他のすべてを処理できないのはなぜですか?確かに、デフォルトのCTabCtrlクラスは、それから派生する必要なしに何か便利なことをすることができますか?

4

3 に答える 3

3

CTabCtrl のことは忘れて、はるかに簡単に操作できる CMFCTabCtrl を使用してください (これは、VS2008 SP1 で作業していることを前提としています)。

そうしないと、タブ コントロールのしくみを誤解しているようです。上部に「タブ ストリップ」を提供するだけで、ユーザーが別のタブをクリックするとメッセージが送信されます。コントロールを配置できる「タブ キャンバス」は提供されません。タブ上のコントロールの表示と非表示は、プログラマーが処理する必要があるものです。リソース エディタは、そこでほとんどサポートを提供しません。Stewart が言うように、最も一般的な作業方法は、タブに子ダイアログを作成し、現在のタブ以外のすべてのダイアログを非表示にすることです。

CTabCtrl から派生させる必要はありません。CTabCtrl の親であるウィンドウに切り替え動作を実装することもできます。

于 2010-04-27T11:29:51.287 に答える
2

MFC タブ コントロールは、win32 タブ コントロールのかなり薄いラッパーであり、説明したとおりに機能します。タブで子ウィンドウを切り替えるウィンドウです。たまたま、ストレートな win32 では、これが機能する最も便利な方法です。個々のウィンドウを切り替えるよりも高度なことをしたい場合は、子ダイアログを使用してこれを行います。MFC はあまり役に立ちませんが、CTabCtrl から派生させて子ダイアログを使用することは、それほど難しくありませんが、WinForms がタブ コントロールを行う方法に慣れている場合は不要に思えます。

ダイアログのルートにタブ コントロールを配置し、他のコントロールを配置しない場合は、CPropertySheet ( http://msdn.microsoft.com/en-us/library/d3fkt014(VS.80 .aspx ) の方がおそらく使いやすいでしょう。ウィザード機能を使用したい場合を除き、そこから派生させる必要さえありません。いくつかの子ダイアログ クラスを作成するだけで、プロパティ シートを作成する場所にオブジェクトを作成し、ページを呼び出して呼び出します。

于 2010-04-27T05:16:34.283 に答える