Получить последнее состояние ShowWindow для окна в winapi
Когда вы щелкаете окно на панели задач (пользователи Windows), оно сохраняет свое последнее состояние - развернутое или обычное масштабируемое окно. Я пытаюсь сделать то же самое, но программно и без того, чтобы окно фокусировалось (например, становясь на передний план и мешая моей текущей деятельности в другом окне).
Могу ли я сделать это? Текущее состояние окна можно получить с помощью этого вызова API:
//Empty Window placement structure
WinDefExt.WINDOWPLACEMENT placement = new WinDefExt.WINDOWPLACEMENT();
//winapi call to external User32.dll file
UserExt.GetWindowPlacement(hwnd, placement);
//showCmd should be equal to one of the SW_ constants (here: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx)
placement.showCmd;
1 ответ
Решение
ShowWindow
это не "государство", это "действие". Нет никаких GetShowState
команда. Вы можете вывести значение из текущего состояния окна, но нет способа узнать фактическое последнее значение, использованное с ShowWindow
,
if (!IsWindowVisible(hWnd))
swState = SW_HIDE;
else
if (IsIconic(hWnd))
swState = SW_MINIMIZE;
else
if (IsZoomed(hWnd))
swState = SW_MAXIMIZE;
else
{
// not hidden, minimized or zoomed, so we are a normal visible window
// last ShowWindow flag could have been SW_RESTORE, SW_SHOW, SW_SHOWNA, etc
// no way to tell
swState = SW_SHOW;
}