WindowsXPプラットフォームでVisualStudio6.0(VC ++とMFC)を使用しています。グループボックスのタイトルをチェックボックスとしてグループボックスを作成しようとしています。私の意図はこれです:チェックボックスが有効になっている場合、グループボックス内のコントロールを有効にする必要があります。または無効になります。
これを達成することは可能ですか?はいの場合、いくつかの指示を教えてください。
ありがとう。
WindowsXPプラットフォームでVisualStudio6.0(VC ++とMFC)を使用しています。グループボックスのタイトルをチェックボックスとしてグループボックスを作成しようとしています。私の意図はこれです:チェックボックスが有効になっている場合、グループボックス内のコントロールを有効にする必要があります。または無効になります。
これを達成することは可能ですか?はいの場合、いくつかの指示を教えてください。
ありがとう。
自分のアイデアにどれだけ忠実であり続けたいか、そしてその努力にどれだけの労力を費やす準備ができているかに応じて、いくつかのことを試すことができます。
通常のグループ ボックスを使用し、その中で最初の項目をチェック ボックスにします。これは簡単に実現できますが、チェックボックスをタイトルにするという目標を失います。
通常のグループ ボックスを使用し、タイトルを配置する場所がわかっている場所にチェックボックスを配置します。うまく収まり、ちらつきなしでうまく描画するには、いくつかのトリッキーな計算を実行する必要があります。
グループ ボックスで何らかの形式のスーパークラスまたはサブクラス/サブクラスを使用します。WM_PAINT ハンドラをオーバーライドして、グループ ボックスのフレームのみを描画できます。タイトルを配置することがわかっている場所に、通常のチェックボックスを配置します。これは、描画をより細かく制御できるため、うまく機能するはずですが、うまくいくのは難しいでしょう。私の経験では、サブクラス化はスーパークラス化よりも実装のリスクが低くなります。
ダイアログエディタを使用していますか? その場合は、グループ ボックスを下に置きます。次に、その上にチェックボックスをグループボックスのライン上に置きます。リソースを編集して Z オーダーを設定するか、コードで実行します。チェックボックスをグループ ボックスの上に配置します。チェックボックスのハンドラーを追加し、チェックボックスの状態に応じてコントロールを有効/無効にします。
私は数年前に CGroupCheck と呼ばれるものを作成しました。これは CodeProject から入手できます: http://www.codeproject.com/KB/buttons/groupcheck123.aspx