親子関係のあるチェックボックスが表示されない。 – プログラミング – Home

親子関係のあるチェックボックスが表示さ...
 
通知
すべてクリア

[解決済] 親子関係のあるチェックボックスが表示されない。


GEZ
 GEZ
(@GEZ)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

VS2008 Win7

1.ダイアログベースのプロジェクトを作成し、リソースエディタでボタンコントロール

  チェックボックスを貼り付けます。(チェックボックスはボタンの上にくるように貼
ります。)
2.ダイアログのOnInitDialog()の中で、
  ボタンのメンバ変数.ModifyStyle( BS_PUSHBUTTON, BS_GROUPBOX );
  でボタンをグルプボックス化します。
3.そのあと、ダイアログのOnInitDialog()の中で、
  チェックボックスのメンバ変数.SetParent( &ボタンのメンバ変数 );
  でチェックボックスの親をボタン(グルプボックス)にします。

上記のように、
親:ボタン(グルプボックス)、子:チェックボックスのようにすると、
チェックボックスがボタン(グルプボックス)に隠れて見えなくなってしまいます。

親子関係を作成しないと、チェックボックスは表示されますが、
訳あって親子関係を作成したままチェックボックスが表示されるように実装したいです。

親子関係を維持したまま、チェックボックスを表示するにはどのようにしたら良いでしょ
うか?
ご教授お願いいたします。


引用未解決
トピックタグ
ねむねむ
 ねむねむ
(@ねむねむ)
ゲスト
結合: 18年前
投稿: 7
 

チェックボックスの座標の基点がダイアログのままになっているため、
親ウインドウを変えて位置を維持するなら座標を再度セットしないといけないかと。

ボタンの表示を大きくするとずれて表示されると思いますが。

VS2005 WinXPで確認してますが、違うければごめんなさい。


返信引用
GEZ
 GEZ
(@GEZ)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

ねむねむさま

ありがとうございます。 
座標の基点ですがSPYで確認したところ正しい位置(グルプボックスの上)にあります。
SetParentで以下の親子関係になることが原因で、チェックボックスがボタンの下に隠れて
表示されないことは確認しています。

ダイアログ
 |
---ボタン(グルプボックス)
|
---チェックボックス

ちなみに、チェックボックスに対して、SetWindowPosの第一引数にwndTop/wndTopMostや、
BringWindowToTopを試してみましたがNGでした。


返信引用
ねむねむ
 ねむねむ
(@ねむねむ)
ゲスト
結合: 18年前
投稿: 7
 

確認なのですが、2つのコントロールをダイアログの左上(座標で0,0)で重ねても同じ現
象になりますか?

例えば2つのコントロールを座標100,100で重ねて、チェックボックスをボタン(グループ
ボックス)の子ウインドウにすると、
ボタン(グループボックス)の位置から100,100の位置にチェックボックスを表示というこ
とになります。
そのためボタン(グループボックス)の描画範囲外になると表示されないです。
前カキコでは上記の事が起こってるかなと思いました。

VS2005では再現できなかったため、的外れな解答だったら申し分けない。


返信引用
GEZ
 GEZ
(@GEZ)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

ねむねむさま

ありがとうございます。 私の勘違いでした。
親をグルプボックスにすると、親が基点としたRECTを子供にSetする必要があるのですね。
解決しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました