c++ - 创建最小化重叠窗口 (Win32)

标签 c++ c winapi

我想创建一个重叠窗口,该窗口开始时可见(因此任务栏按钮显示)但最小化。使用 WS_MINIMZED(或 WS_MAXIMIZE)创建窗口不会执行任何操作。使用 ShowWindow(hWnd,SW_SHOWMINIMIZED) 会出现严重错误。我怀疑它与 STARTUPINFO 有关,但我找不到任何有关如何调整/更改/劫持它的信息。

hWnd = CreateWindowA(
    (LPCSTR)atom, 
    "Window Name", 
    WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_MINIMZED,    // doesn't work
    CW_USEDEFAULT, 
    CW_USEDEFAULT, 
    CW_USEDEFAULT, 
    CW_USEDEFAULT, 
    0, 
    0, 
    hInstance, 
    0);

ShowWindow(hWnd,SW_SHOWMINIMIZED);    // gives critical error

最佳答案

@Kaisha,你是对的:如果你使用 CreateProcess 启动一个可执行文件,那么窗口的可见性将受到 STARTUPINFO 的影响。要在窗口最小化的情况下启动应用程序,请执行以下操作:

ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
startupInfo.dwFlags = STARTF_USESHOWWINDOW;
startupInfo.wShowWindow = SW_SHOWMINNOACTIVE;

我在一个重复启动 WinZip 命令行版本的应用程序中使用了这种方法,并且效果很好。

关于c++ - 创建最小化重叠窗口 (Win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7622052/

相关文章:

c++ - wxWidgets 试图填满整个区域

c++ - 如何在源代码中查找搜索词

c - 将代码/符号修补到动态链接的 ELF 二进制文件中

c++ - 在 win32 中从工作线程到主线程的正确通信方式

c++ - LookupAccountName 在 Vista 上失败并显示 ERROR_NONE_MAPPED

c++ - 如何计算自今天开始以来的秒数?

c++ - 包含和/或链接二进制文件未使用的内容会产生什么负面影响?

MySQL 服务器已消失 从表中选择行时出错

windows - 从 Windows 上的另一个进程更改窗口上的鼠标光标

c# - 适用于 Windows 的 Windows 路由 API : What API calls are needed to build a managed version of route. exe?