Win32(非MFC)下创建的非模式窗口,如何销毁
找了资料说用DestroyWindow,但使用后,该窗口的进程依旧还在,

调试的时候,感觉好像进入了消息循环出不来的感觉。
然后我主要的代码是这样写的
然后是回调函数部分
求教到底怎样才能真正地销毁呢?

调试的时候,感觉好像进入了消息循环出不来的感觉。
然后我主要的代码是这样写的
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
//DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LOGIN), NULL, DataDlgProc);
MSG msg;
/* 创建非模态对话框 */
hDialog = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LOGIN), NULL, DataDlgProc);
ShowWindow(hDialog, SW_SHOW);
// 非模态对话框的消息循环处理
while (GetMessage(&msg, NULL, 0, 0))
{
// 翻译加速键表。该函数处理菜单命令中的加速键。
if(!TranslateAccelerator(msg.hwnd, NULL, &msg))
{
// 不是非模式对话框的消息才分发
if(!IsDialogMessage(hDialog, &msg))
{
/* 将虚拟键消息转换为字符消息 */
TranslateMessage(&msg);
/* dispatches a message to a window procedure. */
DispatchMessage(&msg);
}
}
}
return msg.wParam;
}
然后是回调函数部分
BOOL CALLBACK DataDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
// 节省空间,省略前面代码
case WM_CLOSE:
//EndDialog(hWnd, 0);
DestroyWindow(hDialog);// 调试时关闭窗口,就一直跑在这里再跑不出去
return TRUE;
}
return FALSE;
}
求教到底怎样才能真正地销毁呢?
...全文
相关推荐
模式对话框与非模式对话框的区别.docx
...
非模式对话框.rar
给出了一个非模式对话框的实例
MFC简明教程 作者 李久进
对MFC的详细讲解 华中理科大学出版 作者对《深入浅出MFC》 的框架精心的进行总结 对希望学习MFC的人很有价值
MFC非客户区完美自绘
标题栏自绘是很多初学者最苦恼的问题,目前网上的例子要么是系统默认的标题按钮时不时的会重现出来,要么是影响了窗口非客户区原来默认的行为(去掉系统菜单)等等,各种的不如意,于是本人研究试验了下,感觉这个是比较完美的了,不影响任何原来窗口的特性,比如标题栏系统菜单等,要么是把非客户区去掉了,然后自己模拟,笔者也有这样处理过,不过这里只演示非客户区标题栏绘制的例子,特发此贴以飨读者。
win32以及MFC动态创建窗口和各种控件的方法
win32以及MFC动态创建窗口和各种控件的方法


