ラジオボタンの記憶 – プログラミング – Home

通知
すべてクリア

[解決済] ラジオボタンの記憶


はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

Visual Studio2005、ダイアログベースで作成しています。

ダイアログ上にラジオボタン三つ、OKボタン一つが置いてあります。三つの内の一つの
ラジオボタンを選択してOKでデータを書き込むものです。OKの後、画面が一旦閉じま
す。

その後もう一度実行したときに前回選択したラジオボタンにチェックがついているよう
にしたいのですが、よろしくお願いします。今は再開すると一番上のラジオボタンにチ
ェックがいくようになっています。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>その後もう一度実行したときに
とは、どういうことでしょうか?
アプリをもう一度実行ということなのでしょうか?
それとも、そのダイアログだけ再度表示ということでしょうか?

どちらにせよ状態をどこかで覚えておくしかないです。

前者の場合、ダイアログを閉じるときにレジストリやXML,INIファイル等に状態を保存
し、次に起動したときにそこから状態を復元します。

後者の場合、レジスト等を使うのもアリなんですが、本当に1次的であれば
呼び出し元がその状態を覚えておいて、次に表示する前にその状態を教えてあげる。

CFooDlg d;
d.SetRadioState(m_RaidoState); // m_RaidoSateはメンバ変数で前回のラジオボタンの
// 状態を保持している。
d.DoModal();
m_RadioState = d.GetRadioState(); // ラジオボタンの状態を取得して覚えておく

見たいな感じ。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

わかりづらくてすいません。

アプリをもう一度実行するという事です。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

では、普通に
>ダイアログを閉じるときにレジストリやXML,INIファイル等に状態を保存
を調べてください。

INIファイルを使う方法が一番簡明でしょう。

読み込むタイミングや、保存するタイミングは、対象のダイアログは開く/閉じる
時でいいでしょう。
(OnInitDialog/OnDestroy)

アプリケーションクラスを利用すると、とても簡単に出来ます。
参考:
レジストリ
http://www.hiramine.com/programming/windows/registrywriteget.html
INIファイル
http://www.hiramine.com/programming/windows/inifilewriteget.html


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

詳しくありがとうございます。

単純にOnInitDialog()の所へ

CWinApp::WriteProfileInt(○, ○, ○);
CWinApp::GetProfileInt(○, ○, ○);
の追加でよろしいのでしょうか?まだまだ勉強不足なので追加はしてみたものの引数で
エラーが出ている所です。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> エラーが出ている所です。
そうですか。

という反応がほしいのでしょうか?
どんなエラーがでているのか、こちら側ではさっぱりわかりません。
(具合が悪いで、適切な薬を処方できる医者はいない。)

もうそろそろ解答がつく質問の仕方を覚えたほうがよいのでは?


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

質問としては

単純にOnInitDialog()の所へ

CWinApp::WriteProfileInt(○, ○, ○);
CWinApp::GetProfileInt(○, ○, ○);
の追加でよろしいのでしょうか?

です。

今現在のエラーについては問題ではありません。すいません。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>追加でよろしいのでしょうか?
ちがいます。
http://www.hiramine.com/programming/windows/registrywriteget.html
にもサンプルが載っていますが、AfxGetApp関数でアプリケーションオブジェクトのイン
スタンスを取得してWriteProfileIntやGetProfileIntを呼び出します。

OnInitDialogではGetProfileIntで前回の状態を取得して、
WM_DESTORYをハンドルした関数OnDestroyを追加して(もしくはOKボタンでダイアログを
閉じるのであればそこに記述するほうがよいかも)WriteProfileIntで今の状態を保存し
てください。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

ありがとうございました。
わからない所もあるので時間をかけて解決したいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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