ShowWindow восстанавливает окно, только если оно свернуто последним

#c #winapi #findwindow #showwindow

#c #winapi #findwindow #showwindow

Вопрос:

Я пытаюсь создать программу на C , которая показывает свернутый калькулятор.

Это работает, если я сверну его, но если я сверну калькулятор, а затем другую программу, такую как Firefox, программа больше не покажет калькулятор.

 int main()
{
    hwnd = FindWindow(NULL,TEXT("Calculator"));
    ShowWindow(hwnd, SW_SHOW);
    return 0;
}

  

Комментарии:

1. Вам нужно проверить, нет ли ошибок. Оба FindWindow и ShowWindow могут завершиться ошибкой. Прочитайте это в документации.

Ответ №1:

Если калькулятор свернут (см. IsIconic() ), то вы должны использовать SW_RESTORE вместо SW_SHOW , согласно ShowWindow() документации:

SW_RESTORE
9

Активирует и отображает окно. Если окно свернуто или развернуто, система восстанавливает его первоначальный размер и положение. Приложение должно указывать этот флаг при восстановлении свернутого окна.

SW_SHOW
5

Активирует окно и отображает его в его текущем размере и положении.

Попробуйте это:

 int main()
{
    HWND hwnd = FindWindow(NULL, TEXT("Calculator"));
    if (hwnd)
    {
        if (IsIconic(hwnd))
            ShowWindow(hwnd, SW_RESTORE);
        else
            ShowWindow(hwnd, SW_SHOW);
    }
    return 0;
}