|
第 |
Last Updated 2002/07/15 |
通常のウィンドウの場合,ウィンドウプロシージャの中は
switch(msg) {
case
break;
case
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
こんな感じとなり,デフォルトウィンドウプロシージャを呼び出している.
ダイアログプロシージャでも同じように,
switch(msg) {
case
break;
case
break;
default:
return(DefDlgProc(hWnd, msg, wParam, lParam));
}
return (0L);
こんなことをするとスタックオーバーフローにて強制終了してしまう.
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() がそのメッセー
ジを処理する.
参照
感想要望などを下記メールアドレスまでお願いします.
前向きなメールがこれからを左右します.(^^)
DSSへメールを送る