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