Bas*_*asj 0 c++ windows winapi system-tray
默认情况下,使用以下命令创建标准窗口:
HWND hwnd = CreateWindowEx(0, CLASS_NAME, L"Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
Run Code Online (Sandbox Code Playgroud)
当我们点击右上角的十字时,将被关闭,导致程序退出:
我的程序有一个这样的窗口,但在系统托盘通知区域中也有一个始终存在的图标。
如何使单击右上角的十字使该窗口隐藏,但不退出程序?
这在主窗口消息循环中不起作用,应用程序仍在退出。
switch (msg)
{
case WM_CLOSE:
ShowWindow(hWnd, SW_HIDE);
break;
}
Run Code Online (Sandbox Code Playgroud)
DefWindowProcDestroyWindow当它得到时调用WM_CLOSE,所以你所要做的就是不要将消息传递给DefWindowProc:
switch (msg)
{
case WM_CLOSE:
ShowWindow(hWnd, SW_HIDE);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
DestroyWindow单独使用不会退出具有“正常”消息循环的程序。通常是WM_QUIT您在主窗口中生成的消息WM_DESTROY导致PostQuitMessage消息循环停止并退出程序......
| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |