Автор Judas Priest задал вопрос в разделе Другие языки и технологии
функция CreateWindow на С++ и получил лучший ответ
Ответ от Cyborg Terminator[гуру]
hMenu - идентификатор меню из ресурса или идентификатор контрола.hInstance - дескриптор текущего процесса или модуля DLLlpParam - в этом параметре можно передать указатель на свои какие-нибудь данные которые можно получить в обработчике сообщений WM_CREATE/WM_NCCREATE в структуре (LPCREATESTRUCT)lParam
Ответ от Ra Орально (98783)[гуру]
Помимо HWND, у окон и пунктов меню имеются идентификаторы HMENU.В отличии от HWND, эти идентификаторы задаются при написании программы, а не автоматически, и доступны только из данной программы - не являются глобальными и уникальными в системе.При обработке событий по HMENU определяют, каким элементом управления вызвано событие.Например.#define IDM_BUTTON1 1#define IDM_BUTTON2 2...CreateWindow(_T("BUTTON"), _T("Кнопка"), WS_CHILD | WS_VISIBLE,10, 10, 200, 100, hWnd, (HMENU)IDM_BUTTON1, hInst, 0);CreateWindow(_T("BUTTON"), _T("Кнопка"), WS_CHILD | WS_VISIBLE,220, 10, 200, 100, hWnd, (HMENU)IDM_BUTTON2, hInst, 0);...case WM_COMMAND:wmId = LOWORD(wParam);switch (wmId){case IDM_BUTTON1:// нажата кнопка 1break;case IDM_BUTTON2:// нажата кнопка 2break;}break;---HINSTANCE - дескриптор экземпляра программы.Он глобальный, также как и HWND.Все окна в программе привязаны к её HINSTANCE.Это обеспечивает уникальность имён оконных классов (wc.lpClassName) - если в другой программе попадётся окно с таким же оконным классом, окна не перепутаются.По той же причине окна в экземплярах одной программы изолированы друг от друга.Также это важно для окон глобальных классов - при регистрации оконного класса с флагом CS_GLOBALCLASS он становится глобальным - окна такого класса могут создаваться в приложениях с любыми HINSTANCE.Таковы классы BUTTON, EDIT и т. д.Избежать путаницы с ними, помогает HINSTANCE.Почему для идентификации окна не подходят HWND, спросите Вы?Дело в том, что окон одного и того же класса может быть несколько и они будут иметь разные HWND.Это характерно для динамического создания окон, как-то окна MDI.Такие окна есть в экзеле - они размещены в одном и том же окне и используют один и тот же оконный класс.---lpParam используется для передачи в WM_CREATE оконной процедуры окна указателя на некое значение через CREATESTRUCT.int x = 5;CreateWindowEx(... (void*)&x);...case WM_CREATE:int *x = (int*)((*(CREATESTRUCT*)(lParam)).lpCreateParams);И назначение его - тоже идентификация, только не виндой, а самой программой.Чтобы после динамического генерирования окон одного и того же класса в WM_CREATE можно было отличить окна друг от друга - и исходя из этого разместить на них нужные контролы.
Помимо HWND, у окон и пунктов меню имеются идентификаторы HMENU.В отличии от HWND, эти идентификаторы задаются при написании программы, а не автоматически, и доступны только из данной программы - не являются глобальными и уникальными в системе.При обработке событий по HMENU определяют, каким элементом управления вызвано событие.Например.#define IDM_BUTTON1 1#define IDM_BUTTON2 2...CreateWindow(_T("BUTTON"), _T("Кнопка"), WS_CHILD | WS_VISIBLE,10, 10, 200, 100, hWnd, (HMENU)IDM_BUTTON1, hInst, 0);CreateWindow(_T("BUTTON"), _T("Кнопка"), WS_CHILD | WS_VISIBLE,220, 10, 200, 100, hWnd, (HMENU)IDM_BUTTON2, hInst, 0);...case WM_COMMAND:wmId = LOWORD(wParam);switch (wmId){case IDM_BUTTON1:// нажата кнопка 1break;case IDM_BUTTON2:// нажата кнопка 2break;}break;---HINSTANCE - дескриптор экземпляра программы.Он глобальный, также как и HWND.Все окна в программе привязаны к её HINSTANCE.Это обеспечивает уникальность имён оконных классов (wc.lpClassName) - если в другой программе попадётся окно с таким же оконным классом, окна не перепутаются.По той же причине окна в экземплярах одной программы изолированы друг от друга.Также это важно для окон глобальных классов - при регистрации оконного класса с флагом CS_GLOBALCLASS он становится глобальным - окна такого класса могут создаваться в приложениях с любыми HINSTANCE.Таковы классы BUTTON, EDIT и т. д.Избежать путаницы с ними, помогает HINSTANCE.Почему для идентификации окна не подходят HWND, спросите Вы?Дело в том, что окон одного и того же класса может быть несколько и они будут иметь разные HWND.Это характерно для динамического создания окон, как-то окна MDI.Такие окна есть в экзеле - они размещены в одном и том же окне и используют один и тот же оконный класс.---lpParam используется для передачи в WM_CREATE оконной процедуры окна указателя на некое значение через CREATESTRUCT.int x = 5;CreateWindowEx(... (void*)&x);...case WM_CREATE:int *x = (int*)((*(CREATESTRUCT*)(lParam)).lpCreateParams);И назначение его - тоже идентификация, только не виндой, а самой программой.Чтобы после динамического генерирования окон одного и того же класса в WM_CREATE можно было отличить окна друг от друга - и исходя из этого разместить на них нужные контролы.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: функция CreateWindow на С++
спросили в Chordeumatida
Какая резина лучше. Cordiant Polar,или Amtel Nord master
Cordiant Polar лучше Amtel Nord master особенно новая модель 2010 года она почти полностью слизана
подробнее...
Какая резина лучше. Cordiant Polar,или Amtel Nord master
Cordiant Polar лучше Amtel Nord master особенно новая модель 2010 года она почти полностью слизана
подробнее...
спросили в Chordeumatida
Как сделать в C++ (WinAPI) окно Edit (CreateWindow) не активным для пользователя?
EnableWindow( hEdit, FALSE );
Это неактивным, реадонли нужно по-другому. Вроде можно и
подробнее...
Как сделать в C++ (WinAPI) окно Edit (CreateWindow) не активным для пользователя?
EnableWindow( hEdit, FALSE );
Это неактивным, реадонли нужно по-другому. Вроде можно и
подробнее...
спросили в Chordeumatida
Какая зимняя резина лучше лучше Kama Euro или Cordiant? Я взял Cordiant Polar 2
У меня кордиант полар, шипованная - великолепно, прошлой зимой бед не знал!
А летняя у меня
подробнее...
Какая зимняя резина лучше лучше Kama Euro или Cordiant? Я взял Cordiant Polar 2
У меня кордиант полар, шипованная - великолепно, прошлой зимой бед не знал!
А летняя у меня
подробнее...
спросили в Chordeumatida
какой из производителей шин лучше-МАТАДОР или CORDIANT???
Ни тот ни
подробнее...
какой из производителей шин лучше-МАТАДОР или CORDIANT???
Ни тот ни
подробнее...
спросили в Chordeumatida
Очень много противоречивых отзывов о летней резине Cordiant Comfort. Так брать её или не стоит? Если нет, то что брать??
производителя посмотри.... ярославль?? ? самая лучшая резина в мире..., если хочеш деньги на ветер
подробнее...
Очень много противоречивых отзывов о летней резине Cordiant Comfort. Так брать её или не стоит? Если нет, то что брать??
производителя посмотри.... ярославль?? ? самая лучшая резина в мире..., если хочеш деньги на ветер
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Chordeumatida
Dragon Age: Origins
Урон от одного удара определяется по формуле: TotalDamage = CritMod * (WeaponDamage + AttrDamage +
подробнее...
Dragon Age: Origins
Урон от одного удара определяется по формуле: TotalDamage = CritMod * (WeaponDamage + AttrDamage +
подробнее...
спросили в Chordeumatida
как использовать GroupBox в WinAPI C++?
Groupbox - это просто кнопка Button со стилем BS_GROUPBOX.
На кнопке Button вообще много
подробнее...
как использовать GroupBox в WinAPI C++?
Groupbox - это просто кнопка Button со стилем BS_GROUPBOX.
На кнопке Button вообще много
подробнее...
спросили в BIGBANG Chordeumatida
Подскажите коды в ГТА 2 Vice city
THUGSTOOLS - гaнгcтepcкoe opyжиe (1 ypoвeнь пo мoщнocти)
PROFESSIONALTOOLS - пpoфeccиoнaльнoe
подробнее...
Подскажите коды в ГТА 2 Vice city
THUGSTOOLS - гaнгcтepcкoe opyжиe (1 ypoвeнь пo мoщнocти)
PROFESSIONALTOOLS - пpoфeccиoнaльнoe
подробнее...
спросили в BIGBANG Chordeumatida
бессмертие в ГТА Вайс-Сити
Grаnd Тheft Аutо: Viсe Сitу
Во время игры вводите:
THUGSTOOLS - гaнгcтepcкoe opyжиe
подробнее...
бессмертие в ГТА Вайс-Сити
Grаnd Тheft Аutо: Viсe Сitу
Во время игры вводите:
THUGSTOOLS - гaнгcтepcкoe opyжиe
подробнее...
спросили в BIGBANG Chordeumatida
ПОЖАЛУЙСТА НАПИШИТЕ МНЕ КОДЫ ИГРЫ GTA . в этой игре используются такие коды NUTTERTOOLS, ASPIRINE, SEAWAVS, и др.
Grаnd Тheft Аutо: Viсe Сitу
Во время игры вводите:
THUGSTOOLS - гaнгcтepcкoe
подробнее...
ПОЖАЛУЙСТА НАПИШИТЕ МНЕ КОДЫ ИГРЫ GTA . в этой игре используются такие коды NUTTERTOOLS, ASPIRINE, SEAWAVS, и др.
Grаnd Тheft Аutо: Viсe Сitу
Во время игры вводите:
THUGSTOOLS - гaнгcтepcкoe
подробнее...
спросили в BIGBANG Chordeumatida
Люди чит на GTA Vice City
THUGSTOOLS - гангстерское оружие (1 уровень по мощности)
PROFESSIONALTOOLS - профессиональное
подробнее...
Люди чит на GTA Vice City
THUGSTOOLS - гангстерское оружие (1 уровень по мощности)
PROFESSIONALTOOLS - профессиональное
подробнее...