メンバ変数の初期化について教えてください。

[戻る]
まさ 2004/12/22(水) 16:37:05
環境 : VC++6.0 Windows XP Professional SP2

当方ダイアログベースのプログラムを作成しております。

初歩的な質問で申し訳ないのですが、
現在ダイアログに2つラジオボタンを設定していまして
その内1つはCheckRadioButton関数で
デフォルトで選択されるようにしています。

OKボタンを押下するとラジオボタンの選択状態によって、
1つ目のラジオボタンには"0"を
2つ目のラジオボタンには"1"を
変数に代入するという処理をしているのですが、
デフォルト(1つ目のラジオボタンが選択された状態)
のままOKボタンを押下すると
エラーになってしまい正常に動作しません。

恐らくラジオボタン選択によって
値を代入する変数に"0"が代入されていない
という事が原因だとはわかったのですが、
どの位置で初期化をすれば良いのかがわかりません。

どなたか教えて頂けると助かります。
宜しくお願い致します。

επιστημη [E-Mail] [HomePage] 2004/12/22(水) 16:46:04
コンストラクタ あるいは OnInitDialog() 内ではダメすか?

# 現時点ではどこで初期化してますか?

まさ 2004/12/22(水) 16:54:49
CxxxxDlg::CxxxxDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CxxxxDlg::IDD, pParent)

現在は上記の場所で初期化の設定をしていますが、エラーとなる状態です。

OnInitDialog()では同じようにエラーとなりました。
コンストラクタとはどの場所でしょうか。。

επιστημη [E-Mail] [HomePage] 2004/12/22(水) 17:37:41
> CxxxxDlg::CxxxxDlg(CWnd* pParent /*=NULL*/)
>    : CDialog(CxxxxDlg::IDD, pParent)

これがコンストラクタ。

> 現在は上記の場所で初期化の設定をしていますが、エラーとなる状態です。

コンパイル・エラー? 
どんなコードを書いたらどんなエラーが出ましたか?

ころ 2004/12/22(水) 21:23:53
予想ですが、ダイアログが表示されていないのに
状態を変えようとしているのではないですか?

OnInitDialog内でラジオボタンの状態を変える前に
ShowWindow()を使って自分自身を表示させてみては
いかがでしょうか?

wood 2004/12/23(木) 06:35:26
>その内1つはCheckRadioButton関数で
>デフォルトで選択されるようにしています。

ここでやれば良いと思います、プログラミング上デフォルト値の設定
を行うという行為を行うのは、通常1回ないし、何らかのアクション
により呼び出される関数ですので自分のコーディングで「デフォルト値の設定」
意識のあるところで良いと思います

「OK」ボタン後のエラーとしかわかりませんが、
メッセージかコード提示してみてはいかがでしょうか
意外と違う原因かも知れませんよ

古いスレッドには追加発言できません。