Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

window class name --> ATOM

562
29 июня 2006 года
tarekon
175 / / 19.08.2003
Вопрос такой.
В системе зарегистрирован локальный оконный класс. Имеется его имя. Как по этому имени получить ATOM этого класса? Функции типа GetClassLong() требуют HWND окна, но оно неизвестно, хотя окна этого класса где-то тоже есть.
Пробовал FindAtom(), но он возращает 0 с ошибкой 2 (по данным GetLastError() ). Что еще можно сделать?
562
29 июня 2006 года
tarekon
175 / / 19.08.2003
[QUOTE=tarekon]Вопрос такой.
В системе зарегистрирован локальный оконный класс. Имеется его имя. Как по этому имени получить ATOM этого класса? Функции типа GetClassLong() требуют HWND окна, но оно неизвестно, хотя окна этого класса где-то тоже есть.
Пробовал FindAtom(), но он возращает 0 с ошибкой 2 (по данным GetLastError() ). Что еще можно сделать?[/QUOTE]

Поправка. Окон этого класса может и не быть. Если бы были, то можно было бы:
 
Код:
result = GetClassLong( FindWindow( className, NULL), GCW_ATOM );
1.8K
30 июня 2006 года
k3Eahn
365 / / 19.12.2005
 
Код:
[INDENT]WNDCLASSEX wcex;
GetClassInfoEx(NULL,"EDIT",&wcex);
wcex.cbSize=sizeof(WNDCLASSEX);
ATOM a=RegisterClassEx(&wcex);

[/INDENT]

Кстати GetClassInfoEx сама по себе возвращает атом класса:confused: .
562
30 июня 2006 года
tarekon
175 / / 19.08.2003
Повторная регистрация класса вернет 0 с кодом ошибки 2, поэтому последняя строка бессмыслена.
[quote=k3Eahn]
Кстати GetClassInfoEx сама по себе возвращает атом класса:confused:
[/quote]
А откуда информация про то, что GetClassInfoEx() возвращает ATOM? В MSDN написано, что возвращается BOOL. Если она действительно возвращает ATOM, это было бы очень клево, но где найти подтверждение этому?
7.8K
30 июня 2006 года
DrCoder
106 / / 27.01.2006
-такие вещи определяются опытным путем, не долго же проверить
1.8K
30 июня 2006 года
k3Eahn
365 / / 19.12.2005
[quote=tarekon]Повторная регистрация класса вернет 0 с кодом ошибки 2, поэтому последняя строка бессмыслена.
[/quote]
Вернёт, или возвращает?
562
30 июня 2006 года
tarekon
175 / / 19.08.2003
[QUOTE=DrCoder]-такие вещи определяются опытным путем, не долго же проверить[/QUOTE]
Определение опытным путем таких вещей влечет за собой серьезные ошибки в дальнейшем. На мой взгляд.
[quote=k3Eahn]
Вернёт, или возвращает?
[/quote]
Возвращает. Только вместо "edit" используется строка "internalDialog...."
Это естественно. В первый раз, когда ты пытаешься выполнить RegisterClassEx, система создает локальный класс (переопределяющий системный). Если же попытаться вслед за этим сделать еще один такой вызов, то перерегистрация существующего класса генерирует ошибку.
В моей задаче класс (локальный для приложения) уже создан, и поэтому вызов RegisterClassEx() ошибочен.
7.8K
30 июня 2006 года
DrCoder
106 / / 27.01.2006
[QUOTE=tarekon]Определение опытным путем таких вещей влечет за собой серьезные ошибки в дальнейшем.[/QUOTE]
не может тут быть никаких серъезных ошибок, ригистрируешь класс в одной проге, пытаешься вызвать GetClassInfoEx из другой, приводишь типы выводишь результат и все! и не документированные моменты вполне нормально выявлять опытным путем
1.8K
30 июня 2006 года
k3Eahn
365 / / 19.12.2005
[quote=tarekon]В первый раз, когда ты пытаешься выполнить RegisterClassEx, система создает локальный класс (переопределяющий системный). Если же попытаться вслед за этим сделать еще один такой вызов, то перерегистрация существующего класса генерирует ошибку.
В моей задаче класс (локальный для приложения) уже создан, и поэтому вызов RegisterClassEx() ошибочен.[/quote]
По всей видимости это так.

ЗЫ: Положим ты получил атом, но что ты с ним будешь делать дальше?(я вот никак не пойму - зачем он может понадобиться).
562
30 июня 2006 года
tarekon
175 / / 19.08.2003
Да вот уж так сложилось, что регистрация и/или поиск (нетривиальная задача) нужного класса осуществляется в отдельной фукнции, которая возвращает атом. Потом, при создании окна, этот атом и юзается.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог