WM 關閉
單擊應用程式的關閉按鈕時傳送。不要將此與 WM_DESTROY
混淆,WM_DESTROY
會在視窗被破壞時傳送。主要的區別在於可以在 WM_CLOSE 中取消關閉(想想 Microsoft Word 要求儲存你的更改),而不是在視窗已經關閉的情況下銷燬(想想 Microsoft Word 釋放記憶體)。
LRESULT CALLBACK winproc(HWND hwnd, UINT wm, WPARAM wp, LPARAM lp)
{
static char *text;
switch (wm) {
case WM_CREATE:
text = malloc(256);
/* use the allocated memory */
return 0;
case WM_CLOSE:
switch (MessageBox(hwnd, "Save changes?", "", MB_YESNOCANCEL)) {
case IDYES:
savedoc();
/* fall through */
case IDNO:
DestroyWindow(hwnd);
break;
}
return 0;
case WM_DESTROY:
/* free the memory */
free(text);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, wm, wp, lp);
}