例如下面的代码,在进入消息循环之前要初始化一些数据。如果初始化失败,则不经过消息循环直接销毁窗口、清理已初始化的部分,然后返回操作系统。
不过DestroyWindow()函数自身会发送消息,我没经过主消息循环,那些消息自然无法处理了。这会不会影响主窗口的销毁?[code] ...
// 程序初始化,如果失败则关闭主窗口
if (Init() != 1)
{
DestroyWindow(main_window_handle);
Shutdown(); // 程序退出前的清理工作
return false;
} // 主消息循环
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} // end while // 程序退出前的清理工作
Shutdown();
return (int)msg.wParam;
}
[/code]
不过DestroyWindow()函数自身会发送消息,我没经过主消息循环,那些消息自然无法处理了。这会不会影响主窗口的销毁?[code] ...
// 程序初始化,如果失败则关闭主窗口
if (Init() != 1)
{
DestroyWindow(main_window_handle);
Shutdown(); // 程序退出前的清理工作
return false;
} // 主消息循环
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} // end while // 程序退出前的清理工作
Shutdown();
return (int)msg.wParam;
}
[/code]
解决方案 »
- 如何做一个驱动安装包
- 用directshow保存的视频图像到本地时是倒置的,怎么解决??
- Mysql 存放数据的文件是哪个?
- 如何设计好接口返回值
- 我在ASP中调用,怎么才能得到[out]的值?
- 出现no appropriate default constructor available错误,不知是什么原因,各位大哥来看看啊!
- 这个问题折磨我好久了 串口通讯:为什么要发送的字节长度和实际发送的字节长度不相同?
- 我的问题你肯定碰到过:winsock中,send(setbuf,N);而n=receive(recbuf,N);每次n=N-1,为什么?约定俗成?
- 关于CImageList的拖动问题
- 看看我们的软件,技术上如何?
- 应该选取什么样的架构最合适
- 请帮助找出多重派生调试错误(简单基础)
// 程序初始化,如果失败则关闭主窗口
if (Init() != 1)
{
DestroyWindow(main_window_handle);
Shutdown(); // 程序退出前的清理工作
return false;
} // 主消息循环
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} // end while // 程序退出前的清理工作
Shutdown();
return (int)msg.wParam;
}
如果不能用DestroyWindow()的话,该用什么方法安全关闭窗口呢?
为什么不在 OnCreate内做 ?或是 在Oninit 之类的地方获取
这样 获取数据之后就直接在函数初始化,失败直接Destory 这样也不会影响消息循环
以下代码无法在WM_CREATE消息中成功使用,但在窗口创建后、进入消息循环前可以。 // 计算用户区左上角在屏幕上的位置
POINT client_point = {0,0}; // 用户区左上角相对于自己的坐标
ClientToScreen(main_window_handle, &client_point);