C编程中阻止程序退出的方法

点击窗口X按钮后,程序收到WM_CLOSE消息,此处可以拦截程序的退出。如果不做任何操作,DefWindowProc将返回WM_DESTROY消息,之后发送WM_QUIT消息。

参考这篇:

WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解


故在消息循环中做如下更改即可达到目的。

	case WM_CLOSE:
		MessageBeep(0);
		if (IDYES==MessageBox(hwnd,TEXT("是否退出?"),TEXT("退出"),MB_YESNO|MB_ICONQUESTION))
		{
			break;//跳出switch,执行DefWindowProc,退出
		}
		else
		{
			return 0;//返回消息,不退出
		}
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0 ;
	case WM_QUIT:
		return 0;
	}

	return DefWindowProc (hwnd, message, wParam, lParam);
}


posted @ 2016-01-25 12:02  tomwillow  阅读(121)  评论(0编辑  收藏  举报