ファイル表示、ダイアログの値

[戻る]
フーミン 2002/09/11(水) 22:05:38
フーミン、男です。
MFCを始めて1週間、WinAPIの経験もなく初心者です。
よろしくお願いします。

・[ファイル]-[開く]でファイルを開きたいのですが、
 ファイルを選んだだけでは表示されません。
 仕方がないので、
  OnLButtonDown→OnInitialUpdate
 と苦肉の策を使っています。

・ダイアログでチェックボックス、ラジオボタン等々を
 使っているのですが、ダイアログを呼ぶたびに
 変更した値を保持して呼びたいのですが、
 デフォルト値に戻って呼ばれてしまいます。
 呼ぶたびにコンストラクタで初期化されているとは
 思うのですが対策がわかりません。

初歩的な質問ですいません。
心優しき御方お願いします。

tib 2002/09/12(木) 00:07:31
[ファイルを開く]
結局何をなさりたくて、現在どのようにプログラミングしていて、
どのような結果になっているのかが見えてこないのでコメントしづらいですが、
CFileDialogを使っているのでしょうか。これは画面上に「開く」と表示されますが
実際は開くファイルを選択するだけなので、そのファイルを開いて、メモリ上に展開して、
何らかの形で表示する、という部分を別途実装する必要があります。

[ダイアログの値保持]
コンストラクタで初期化されているのなら、Dialogの値をどこかに保存しておいて
CDialog::OnInitDialog()などで表示すべき値を取得・設定するといいでしょう。

コンストラクタをオーバーライドする、という方法もありますね。デフォルトコンストラクタ
とは別にDialogの値を引数で与えられるようなコンストラクタも用意すると使い分けができて
何かと便利でしょう。

フーミン 2002/09/12(木) 21:07:37
こんばんわ。

tibさん 早速のレスありがとうございます。

おかげさまで、ダイアログの方は解決しました。

ファイルの方は説明が足らなかったみたいですね、すいません。

今作っているプログラムというのは、
AppWizardで自動生成(SDI)されるものをもとに、
メニューバーで[ファイル]→[開く]でファイルを選択し、
OnFileOpen()でファイルからデータを読み込み、
OnDrawで描画という、とても一般的なものだと思います。

OnDraw()の中でOnInitialUpdate()を書くと、
常に再描画されてしまい、OnFileOpen()にフラグを立てて、
その値を見てOnInitialUpdate()をかけると描画されません。
(デバッグモードで見るとできてる感じなのですが)

どなたかお願いします。

アイススケーター 2002/09/12(木) 21:59:04
OnFileOpen()の中でOnInitialUpdate()をコールではだめですか。

フーミン 2002/09/13(金) 00:11:11
アイススケーターさん レスありがとうございます。

OnFileOpen()の中だと、OnDraw()の前なので
だめだと思い込んでました。

家にはプログラムを持ってきていないので、
明日、早速試したいと思います。

フーミン 2002/09/14(土) 01:48:54
[[解決]]
こんばんわ

OnFileOpen()の中でUpdateAllViews()を
呼ぶことで解決できました。

レスをくれた方々ありがとうございました。
またお願いします。

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