OnActivateViewの中で使用できるメッセージ出力ありませんか! – プログラミング – Home

OnActivateViewの中で使用...
 
通知
すべてクリア

[解決済] OnActivateViewの中で使用できるメッセージ出力ありませんか!


wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

OS:Win XP
VC++6.0 MFC使用

CFormViewを使ってプログラミングしています
OnActivateViewの中で条件判断
をして
if(MessageBox( DATA NOT FOUND, XXXX MAST,
MB_YESNO | MB_ICONERROR ) == IDYES) {
DTA_STS = 1;
}

のようなことをしていますが

メッセージボックスの表示後
「はい」・「いいえ」のどちらのボタンを押しても
IDYESを判定する前に、
OnActivateViewの先頭へ処理が戻ってしまいます

これはデバック「ステップ 実行」で確認しました
どのようにすれば
IDYESを判定することができるようになるでしょうか?
よろしくお願いします


引用未解決
トピックタグ
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 24年前
投稿: 76
 

「メッセージボックス終了後」→「ビューがアクティブ」の無限ループのような気がします。
OnActivateView()の中でビューが非アクティブになるようなことをするのがまずいのかも。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

この手の無限ループは良くある話で、要するに画面の再描画に絡む所に
メッセージボックスを出すようにしていると抜けられなくなるとか、
今回のようにメッセージボックスが消えると元のビューがアクティブになるなど
Windowsのこうした仕組み的な部分を理解していないと起こる現象です。

逆にいうならOnActivateViewの中でMessageBoxを出す必要があるような
プログラム的な仕組みそのものに問題があると考えるべきでしょう。
もっと他のタイミングで判定する方向で考えるべきだと思います。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

PATIOさん
大変貴重な情報ありがとうございます

勝手な解釈ですが関数の戻り値よりもイベント発生のほうが優先される
と解釈してよろしいのでしょうか(windowsでは)
こんな説明は見たこと無いですけど
どこかにこんな説明あったら教えてください(参考までに)

今回の質問に対しては
第一フォーカスのあたる所で条件チェックするように変更してみます


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

>第一フォーカスのあたる所で条件チェックするように変更してみます
でもうまく動作できませんでした

質問の趣旨が変わるので解決にします


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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