Да, они одинаковы, вот и весь смысл иметь HWND. Каждое окно имеет только один HWND
, который идентифицирует его в системе и действует до тех пор, пока с ним не будет вызван DestroyWindow
. Он возвращается CreateWindow(EX)
и отправляется с каждым сообщением, поэтому вы можете использовать его в качестве уникального идентификатора для вашего окна, даже если вы создаете несколько окон одного класса.
Но обратите внимание, что некоторые сообщения отправляются в оконную процедуру еще до возврата CreateFunction
, поэтому, если вы используете глобальную переменную для хранения HWND
:
HWND globalHwnd = NULL;
int main()
{
//...
globalHwnd = CreateWindow(...);
}
LRESULT WndProc(HWND hWnd, ...)
{
assert(hWnd == globalHwnd); //fail!
}
Утверждение не будет выполнено, поскольку несколько сообщений, таких как WM_CREATE
, отправляются до возврата CreateWindow
, поэтому глобальная переменная еще не назначена.