我想创建一个重叠的窗口,该窗口开始可见(因此任务栏按钮显示)但已最小化。使用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/

10-09 02:14