MessageBoxが表示されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
C++_student
記事: 3
登録日時: 8年前

MessageBoxが表示されない

#1

投稿記事 by C++_student » 8年前

はじめまして,質問よろしくお願いいたします.
DirectInputのお勉強をしていまして,例外が投げられたらメッセージボックスを表示するような
デバッグをしていました.
キーボードの方は特に問題なくできていたのですが,マウスのテストを描いた後にデバッグを
いたしますと,初期化の例外が発生しました.そこで発覚したのですが,
肝心のデバッグ用のメッセージボックスが,メッセージボックスが作成はされるもののALTを押すなどして
メッセージボックスを操作しないと,そのメッセージボックス(ウィンドウだかダイアログボックス)が
非表示のままになっているようでした.
コメントアウトで表示されるようになるまでコードを削ってみますと,
ヘッダdinput_test.hをインクルードすると再現するということが判明しました.
http://codepad.org/VM5gnv3C

さらに絞り込むとヘッダ内のwindow procedure(dinputProc / dinputProcAny)にあることが
判明し,wm_paintメッセージをユーザ定義で処理すると発生することが分かりましたが,
wm_paintをカスタマイズしつつmessageboxを表示させるようにする(共存させる)方法が
分かりません.
デバッグにメッセージボックスを使わない方法しかありませんか?

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: MessageBoxが表示されない

#2

投稿記事 by へにっくす » 8年前

コンパイル環境が示されていないので使えるかは分かりませんが。
Visual Studioを使ってるなら以下が有効でしょう
http://www.nitoyon.com/vc/tutorial/debug/win32.htm

そもそも個人的にはMessageBox関数を使ってデバッグするのはおすすめしません。
いちいちストップするし、あなたの言われた現象ようにZオーダー問題(非表示になってるのではありません)で隠れてしまうことが多々あるからです。
written by へにっくす

C++_student
記事: 3
登録日時: 8年前

Re: MessageBoxが表示されない

#3

投稿記事 by C++_student » 8年前

DebugOutputStringというのがあるんですね.
ですが今回の場合は例外が発生しているということから,やはりメッセージボックスを表示し,
okボタンを押したらプログラムが終了することの方が好ましい気がします.
(なので処理が止まっても問題ないです)

Zオーダー問題ということから,背面に存在しているようなのでその辺の文献をあさってみたいと思います.

C++_student
記事: 3
登録日時: 8年前

Re: MessageBoxが表示されない

#4

投稿記事 by C++_student » 8年前

メッセージボックスのスタイルに MB_TOPMOST を追加することで解決しました

閉鎖

“C言語何でも質問掲示板” へ戻る