Last Updated 2002/07/15 |
Programming Tips Visual C++ API | 索 引 |
デフォルトダイアログプロシージャは呼び出していいのか?
2002/07/15
通常のウィンドウの場合,ウィンドウプロシージャの中は
こんな感じとなり,デフォルトウィンドウプロシージャを呼び出している. ダイアログプロシージャでも同じように,
こんなことをするとスタックオーバーフローにて強制終了してしまう. DefDlgProc() は The DefDlgProc function must not be called by a dialog box procedure; doing so results in recursive execution. と書いてあり,ダイアログプロシージャの呼び出し元である. DefDlgProc() からダイアログプロシージャを呼び出し,ダイアログプロシージャから DefDlgProc() を呼び出せばスタックオーバーフローになるのは当たり前である. Except in response to the WM_INITDIALOG message, the dialog box procedure should return nonzero if it processes the message, and zero if it does not. 処理しないメッセージに対しては FALSE を返すだけ DefDlgProc() がそのメッセージを処理する. 参照 ダイアログプロシージャの戻り値 キャプションのないダイアログの移動 |
|