MFC なぜかメッセージボックスが表示できなくなる原因が判明

ここのところ、作成したMFCプログラムでなぜか、どこに次のようなコードを書いてもメッセージボックスが表示できなくなってしまっていました。


MessageBox(_T("test"), _T("test"), MB_OK);


とか


AfxMessageBox(_T("test"));


とかです。

本当に基本的なメッセージボックスの表示方法ですが、どこに書いても音が鳴るだけで、メッセージボックスが表示されない!

そして、音の後に [Alt] キーを押すと、なぜかメッセージボックスが表示される・・・

メッセージボックスの表示が [Alt] キー入力を待っているような感じになってしまっていたのです。

原因がわからず、プログラム全体を 少しずつコメントしたり戻したりした結果、努力の甲斐無く、全く原因がつかめませんでした。

そして、スケルトンからやり直して、ちょっとづつコードを足していって・・・最初は問題なく、表示されていたため、ちょっとがんばってたくさんコードを移植すると発生! (^^;) もっとじっくりやればよかった・・・

それでもその間のコードを確認しながらやってみるてやっと鍵を見つけました!

ここです!


void CXxxxYyyyView::OnPaint()
{
    CPaintDC dc(this);    // これを消していました



CPaintDC は、画面の無効領域だけを更新するためのDCですが、使わなかったので、消してしまって、CDC* pDC = GetDC(); とやって、そちらのDCを使用していました。

が、どうやらここで、CPaintDC をインスタンス化しないことが原因で、メッセージボックスが出なくなっていたようです。

こんな事もあるんですね・・・・ MFC ・・・・・
[PR]
by isoq | 2012-01-29 17:52 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< CTabView/CMFCTa... MFCのCImageでPNGフ... >>