1

C# で何年も働いた後、私は自分が書いた古い MFC アプリケーションに戻ってきました。しかし、いくつかのことについて復習が必要なようです。

チェック ボックス コントロールを既存のダイアログ ボックスに追加しました。次に、Class Wizard を使用して、type の非コントロール変数を追加しましたbool。変数は期待どおりに作成されました。

ただし、DoDataExchange()メソッドにエントリが追加されていません。そして、手動で追加しようとしたとき:

DDX_Check(pDX, IDC_PRINT_SUMMARY, m_bPrintSummary);

IntelliSense エラーが発生します。

タイプ "int &" (const 修飾されていない) の参照は、タイプ "bool" の値で初期化できません

1.DoDataExchange()変数を追加したときにエントリが作成されなかったのはなぜですか?

2.DDX_Check()と が期待される場合int &、Class Wizards がデフォルトboolでチェックボックスの値を入力するのはなぜですか?

4

1 に答える 1

2

チェック ボックスは 3 つの値のいずれかになる可能性があるため、int が必要です。

BST_CHECKED- ボタンがチェックされています。

BST_INDETERMINATE- ボタンが灰色になり、不確定な状態を示します (ボタンが BS_3STATE または BS_AUTO3STATE スタイルの場合にのみ適用されます)。

BST_UNCHECKED- ボタンがクリアされます

DoDataExchange が自動編集されない理由については、おそらくクラスの C++ フォーマットの問題です。

于 2012-09-20T16:15:01.337 に答える