Каковы различия между BringWindowToTop, SetForegroundwindow, SetWindowPos и т.д.?

Нет - "", не всегда приводит к наследованию. Хорошо приведенным примером являются отношения между квадратом и прямоугольником. Квадрат является прямоугольником, но это будет плохо для разработки кода, который наследовал Квадратный класс от Прямоугольного класса.

Мое предложение должно улучшить Ваш, "/имеет" эвристику с принцип замены Лисков . Чтобы проверить, выполняют ли отношения наследования принцип замены Лисков, спросите, могут ли клиенты базового класса воздействовать на sub класс, не зная, что это воздействует на sub класс. Конечно, все свойства sub класса должны быть сохранены.

В квадрате / прямоугольный пример, мы должны спросить, может ли клиент прямоугольника воздействовать на квадрат, не зная, что это - квадрат. Все, что должен знать клиент, - то, что это воздействует на прямоугольник. Следующая функция демонстрирует клиент, который предполагает, что установка ширины прямоугольника оставляет высоту без изменений.

void g(Rectangle& r)
{
    r.SetWidth(5);
    r.SetHeight(4);
    assert(r.GetWidth() * r.GetHeight()) == 20);
}

Это предположение верно для прямоугольника, но не для квадрата. Таким образом, функция не может воздействовать на квадрат, и поэтому отношения наследования нарушают принцип замены Лисков. (По тому, как - пример прибыл из битая ссылка . Другие примеры )

32
задан Steven Jeuris 1 July 2013 в 12:09
поделиться

1 ответ

Use setwindowpos if you need to change the size of the window (not just its state)

Use showwindow to change just the state of the window

Use bringwindowtotop to activate a parent window via the child. if you send it a child window (perhaps a floating toolbar) the parent will be brought to front and have focus instead of the child.

They all have their place and obviously have duplicate functionality, but each does things just a little different depending on what you want to do.

3
ответ дан 27 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: