В дополнение к информации в других ответах:
В окнах для каждого элемента управления (например, для каждого диалога, окна, текстового поля, флажка и т. Д.) Будет задан идентификатор элемента управления
На самом деле это не совсем так: окна верхнего уровня, такие как окна приложений и диалоги, вообще не имеют идентификатора элемента управления. Только дочерние окна могут иметь идентификаторы управления.
(Окна верхнего уровня используют этот параметр CreateWindow, чтобы вместо этого указать HMENU для окна - поэтому только окна верхнего уровня могут иметь меню.)
Разработчик приложения должен сам решить, как назначать и использовать идентификаторы. Обычно они используются с GetDlgItem (), который ищет HWND с данным идентификатором с родительским HWND, поэтому в этом случае идентификаторы должны быть уникальными только внутри этого родителя. Если разработчику не нужно искать элемент управления во время выполнения, он может присвоить ему любой идентификатор, традиционно здесь используется -1.
Некоторые платформы вообще не используют идентификаторы элементов управления и просто отслеживают HWND по мере их создания.