Стили классов - это свойства, которые влияют на каждый экземпляр окна этого определенного класса.Чтобы уточнить, давайте сравним свойства экземпляра окна со свойствами класса ниже.Предполагается, что вы создаете новый класс Windows с именем MyCoolControl
и создаете несколько его экземпляров:
Каждый экземпляр будет иметь свое собственное местоположение, текст окна, а также включенное и видимое состояние - этиявляются свойствами экземпляра окна, и вы можете установить их в одном окне независимо от других.
Однако все экземпляры этого элемента управления будут использовать тот же WndProc, как указано в WNDCLASS, который выиспользовать для создания класса.Они также будут иметь те же свойства класса, например, будут ли окна получать сообщения двойного щелчка вместо двух отдельных сообщений щелчка (бит стиля класса CS_DBLCLKS), или будет ли окно полностью перерисовано при изменении размера (CS_HREDRAW, CS_VREDRAW), илиокна имеют тень (CS_DROPSHADOW).Полный список стилей классов приведен в MSDN здесь .
Так, например, если вы хотите, чтобы у окна была граница или нет, это окнобит стиля (WS_BORDER), и вы указываете его как значение стиля окна в CreateWindow (или можете изменить его позднее для каждого окна с помощью SetWindowLongPtr (GWL_STYLE)), и это влияет только на это окно.Но если вы хотите создать окно с тенью, вы указываете это в элементе стиля WNDCLASS, и оно влияет на все экземпляры этого класса.
(Есть некоторые исключения из этого - WndProcуказанный в WNDCLASS действительно является стандартным wndproc для этого класса окон, вы можете переопределить его для каждого экземпляра, если хотите. Но общая картина по-прежнему в основном та же: стили WNDCLASS и CS_ являются общими настройками,в то время как единицы WS_ и параметры для CreateWindow являются специфическими для этого одного окна.)