ラジオボタン再表示時に一瞬チェックが付くのをやめたい – プログラミング – Home

ラジオボタン再表示時に一瞬チェックが付...
 
通知
すべてクリア

ラジオボタン再表示時に一瞬チェックが付くのをやめたい


DTY
 DTY
(@DTY)
ゲスト
結合: 8年前
投稿: 2
Topic starter  

環境:MFC

OnShowWindowをオーバーライドし
画面表示時にラジオボタンのチェック切り替えをしています。

●AAA チェック有
○BBB チェック無

デフォルトが上記のような状態で、

○AAA チェック無
●BBB チェック有

としてから画面を閉じ、再度画面を表示させた場合に
デフォルト状態に戻したく、BBBのチェックを外してAAAにチェックを入れたいです。
そこで、OnShowWindowに以下を記述しています。

AAA.SetCheck( BST_CHECKED );
BBB.SetCheck( BST_UNCHECKED );

こうすると、画面再表示時に一瞬だけBBBにチェックがついた状態が見えて
その後にAAAにチェックがつきます。

この一瞬BBBにチェックが付いてしまうのをやめたいのですが、どうすれば良いでし
ょうか?

更新を止めればいけるかな・・・と思い、
OnShowWindowの中で
AAA.SetRedraw( FALSE );
BBB.SetRedraw( FALSE );

AAA.SetRedraw( TRUE );
BBB.SetRedraw( TRUE );
で囲ってみても駄目でした。


引用解決済
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

BBB.SetCheck( BST_UNCHECKED );
AAA.SetCheck( BST_CHECKED );

の様に、順番を入れ替えるのはもう試しましたか。


返信引用
AR2
 AR2
(@ar2)
Estimable Member
結合: 5年前
投稿: 110
 

あと、ラジオボタンならリソース上でグループ化してしまえば、必ず片方しか選択できな
くなりますので試してみてください。


返信引用
DTY
 DTY
(@DTY)
ゲスト
結合: 8年前
投稿: 2
Topic starter  

>仲澤@失業者さん
順番を入れ替えて、どちらのパターンも試しましたが駄目でした。

>ARさん
既にグループ化しています。

そもそも、グループ化していても
AAA.SetCheck( BST_CHECKED );
BBB.SetCheck( BST_CHECKED );
とすると両方チェック出来てしまいますよね・・・


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

WM_SHOWWINDOWが来たときには、既にWM_PAINT済みなのかもしれません。
この場合は、表示=>消去 のタイミングで設定を戻すしかないかもしれませんね。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

仲澤さんの意見通り、On_Paint()で初期化されている可能性がありますね。
 WM_SHOWWINDOW時にフラグを立てて、On_Paint()で変更するでいいのでは?
ダイアログでないときは、On_Draw()ですね。
やはり、直すのはできるだけ1箇所で行った方がいいですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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