生成したダイアログで再描画 – プログラミング – Home

生成したダイアログで再描画
 
通知
すべてクリア

[解決済] 生成したダイアログで再描画


おぐけん
 おぐけん
(@おぐけん)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

こんにちわ。おぐけんといいます。
VC++でプログラムを組んでいるのですが、どうしても分からない
ところがあるので教えてください。
今、簡単な住所録を作っています。(VC++の勉強として)検索結果(例えば氏名に
*を使い検索させる。)を別画面で表示し、その中で「次へ」「前へ」
というボタンを用意し、生成した画面上でデータを表示させようと考えているので
すが、うまく再描画してくれません。一件目はうまく表示できます。(検索結果画面
を生成し表示するとき。)でその画面で、次のデータを表示させようとしてもうまく
表示できません。メンバ変数に入れ、UpdateData(FALSE)を実行しているのですが、
それでは駄目なのでしょうか。
初歩的なことで申し訳ありませんが、教えてください。


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

ダイアログを作ってエディットを実装しClassWizardでメンバ変数を
m_strとして追加したとします

あるボタンのイベントで
static int n = 0;
static char* apTest[] = {test0, test1, test2, test3, test4};
n++;
if (n >= sizeof(apTest) / sizeof(char*)) {
n = 0;
}
m_str = apTest[n];
UpdateData(FALSE);

とやればエディットを更新できましたよ


返信引用
たけみ
 たけみ
(@たけみ)
ゲスト
結合: 24年前
投稿: 31
 

UpdateData関数は変数のあるオブジェクトのデータを一括してやり取りします。
「『名前』のトコだけでいいんですけど…」
とかでしたらGet/SetDialogItem関数とかもありますが、
こだわりがない限りUpdateDataの方がラクです。

ところで一括してデータを扱うというのは適切な表現ではないのですが、
・取れと言われればムキになって全部とってくる
・出せと言われれば洗いざらい出してしまう
という見方によってはおバカさんな行動をとります。

またUpdateData関数に限らず、出力する時は
kuさんのサンプルソースの様に関数の一番最後で呼び出すのが普通です。

基本的なことをだらだらと書いてしまいました。
ソース見てないのでなんとも言えませんが
もしかしたら変数処理系の方がまずいのかもしれませんね。
(2件目(以降)のデータがうまく入っていないとか。)


返信引用
おぐけん
 おぐけん
(@おぐけん)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

再度じっくり見直してみると、生成したダイアログのDoDataExchangeメソッドの中で
初期化していたため、画面更新するたびに初期化されていたみたいです。
kuさん、たけみさん、コメントありがとうございます。
初歩的な間違いでした。どうもすいません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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