問題タブ [ctabctrl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
207 参照

c++ - CTabCtrl から派生したクラスの作成

CTabCtrl を使用するためのチュートリアルに従っています。チュートリアルでは、CTabCtrl から派生したクラスを作成するよう求められています。これを正しく行っているかどうかはわかりません。これは私のカスタム クラスのヘッダーです。

私は Visual Studio 2010 を使用しており、このチュートリアルに従っています。私の問題は、チュートリアルで、クラス ウィザードで CTabbyControl 変数を作成するように求められることです。CTabCtrl を使用するオプションしかありません。これは、私が間違って導き出していると私に思わせます。クラスを派生させたことはありません。私がやっている方法は正しい導出方法ですか?

0 投票する
1 に答える
1672 参照

c++ - MFC で CTabCtrl にタブを追加する

MFC アプリケーションに CTabCtrl を追加しようとしています。MSDN を直接フォローしようとしています。

MSDN 追加タブ

* MSDN: タブ コントロールへのタブの追加

これが私が試したことです:

DDX_Control(pDX, TAB1, m_TabCtrl);

次のエラー メッセージが表示されます。 アサーション失敗

無視を押すと、CTabCtrl が表示されますが、タブは表示されません (灰色の四角だけ)。再試行を押すと、次の場所にブレークポイントが設定されます。

ヘッダーを追加しようとしました#include "afxcmn.h"が、何も変わりません。

最初のステップとして、アプリケーションに表示する名前付きタブを取得しようとしています。最終的には、タブにモードレス ダイアログを表示したいと考えています。誰かが私が間違っていることを教えてもらえますか? MFC でタブを使用するより良い方法はありますか?

0 投票する
1 に答える
287 参照

visual-c++ - minimise-restore の後に MFC CListCtrl が表示されない

最初に言っておきますが、私は今日の基準では古い技術を使用しています! これは、Visual Studio 2005 上の MFC で、WinXP で実行されている場合に発生します。(それが壊れていない場合.... ;-))

2 つのタブを持つ CTabCtrl を持つダイアログ ベースのアプリがあります。それぞれに CListCtrl が含まれています。これらは通常の状況下で完全に機能します。それらは正しく入力され、必要に応じて表示および非表示になります。アプリケーションを最初に開いたとき、ディスプレイの選択は正しいです。次に、ダイアログを最小化して復元すると、CList Ctrl が表示されず、タブが空白になります。この問題がある唯一のコントロールです。CTabCtrl の外にある別の CListCtrl は正しく表示されます。次にタブを入れ替えて元に戻すと、他のタブが表示され、最初のタブが通常どおり表示されます。

これは、最小化する前にダイアログの他の部分にアクセスした場合には発生しません。最小化が絶対的な最初のアクションである場合にのみ発生します。CTabCtrlを設定したOnInitDialogで起動時にこのタブを選択するように設定すると、他のタブにあるCListCtrlでも発生します。

OnSysCommand(...) に以下を追加することで、この問題の影響を実際に解決しました。

しかし、そのような奇妙な状況でのみ発生する問題を解決するためにコードを追加していることに悩まされています。この動作につながるセットアップで見逃したものがあると思わずにはいられません。そもそも何が原因なのか説明できる人はいますか?

0 投票する
1 に答える
76 参照

c++ - CTabCtrl を拡張していますが、タブを挿入できません

拡張していますが、拡張オブジェクトCTabCtrlを呼び出すInsertItemと、タブが挿入されません。その理由を誰が知っていますか。私は何を間違っていますか?

メッセージ マップから ON_WM_CREATE() マクロを削除すると、タブを追加できます。OnCreate 関数の実装には m_listCtrl.Create() 関数呼び出しが含まれ、リスト コントロールが正常に作成された場合は 0 が返されます。これの何が問題なのですか?

0 投票する
0 に答える
655 参照

c++ - MFC を使用した CTabCtrl によるオーナー描画

VS 2015 を使用しています。ダイアログ ベースのアプリ (PropertySheet ではありません) があり、特定のタブを無効にしたい CTabCtrl 派生オブジェクトがあります。私がグーグルで調べたところ、オーナードローが道です。わかりました。

私がやりたいのは、所有者が描いたバージョンとまったく同じように機能する所有者が描いたバージョンから始めて、さまざまな調整を開始して実験することです。たとえば、次のようなものを使用したい

そのため、基本的に、変更されていない CTabCtrl が描画を完了するために行うすべてのことを呼び出しています。最も単純な出発点でも役立ちます。これを行うには、どのルーチンをオーバーライドまたはインターセプトする必要がありますか?

私は PreSubclassWindow() で TCS_OWNERDRAWFIXED を設定し、上で示したこと、および他の 1 つまたは 2 つのことを行っていますが、結果はまったく同じに見えません。1 つには、タブにテキストがありません。

どこから始めるべきかについての指針を得ることができれば、本当にうれしいです。ところで、私はこのように(ダイアログリソースなしで)プログラムでコントロールを作成しています(CTabControlはCTabCtrlから継承しています):