SW_HIDE и SW_SHOW не работают должным образом - PullRequest
0 голосов
/ 16 октября 2019

У меня есть два приложения. Эти два приложения общаются друг с другом.

Допустим, их имена «Альфа» и «Бета».

Я хочу, чтобы Альфа оставалась скрытой до тех пор, пока я не нажму определенную кнопку в Бете.

У меня есть метод SetForeground в Alpha, который отвечает на сообщение о нажатии кнопки из бета-версии.

При инициализации Alpha я использовал SetForeground(false).

Таким образом, Альфа скрыта, когда я запускаю приложение.

Этот метод выглядит следующим образом.

void SetForeground(bool fg)  // SetForeground gets false when the application is started
{
    if (fg)
    {
        ShowWindow(m_hWnd, SW_SHOW);
    }
    else
    {
        ShowWIndow(m_hWnd, SW_HIDE);
    }
}

Однако приведенный выше код работает не так, как я предполагал.

Альфа не скрывается при запуске.

Так что вместо этого я установил ShowWindow(m_hWnd, SW_HIDE) в ShowWindow(m_hWnd, SW_MINIMIZE).

Это сработало. Приложение исчезло.

Но ShowWindow(m_hWnd, SW_SHOW) не работает.

Должно отображаться скрытое окно, но это не так.

Я пробовал SW_RESTORE и SW_SHOWNORMALвместо SW_SHOW, и ни один из них не работал.

Я пытался изменить свою стратегию.

Вместо того, чтобы скрывать / показывать окно, я подумал, что изменение z-порядка может быть хорошим выбором.

Я обнаружил, что BringWindowToTop - хороший способ поднять мое окно наверх, но я не смог 'не могу найти способ понизить z-порядок моего приложения.

...