※ここではUnicode文字セットを使用するものとして書いてある。Wで終わるものは基本的にUnicode版なので、ドキュメントを検索するときは末尾のWを消しておくこと。
メッセージループを構成する際、次のようなことをしてはいけない:
while (GetMessageW(&msg, hWnd, 0, 0))
{
//処理
}
GetMessageW関数はエラーが有った場合に-1を返すため、このように書くと問題のあるメッセージを処理しようとして致命的なエラーを引き起こす可能性がある。
代わりに、次に示すように-1が返されたらエラー処理を行うようにする:
while ((bRet = GetMessageW(&msg, hMainWindow, 0, 0)) != 0)
{
if (bRet == -1)
{
//エラー処理
}
else
{
//通常の処理
}
}
PeekMessageW関数でループを構成すると、パフォーマンスに悪い影響をあたえるので避けるべきである。
0 件のコメント:
コメントを投稿