Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - CheckBox! Определение хэндла!

Ответить
Настройки темы
Разное - CheckBox! Определение хэндла!

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Привет Всем! Появился такой вопрос! Есть форма, на ней есть несколько CheckBox(например 3), все они находятся, допустим, на панельке!Class всех CheckBox одинаков!При помощи функций FindWindow и FindWindowEx я нахожу хэндлы главного окна - > панельки - > а вот потом, как найти хэндл ,например, именно 2го CheckBox? Caption у всех пустой! Подскажите как выйти из этой ситуации...

Отправлено: 23:55, 07-09-2010

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


LilLoco форма в своей программе или сторонней?
В своей ввести глобального переменные типа HWND и при создании CheckBox присвоить переменным дескрипторы последних.
Также не помешает присвоить идентификаторы CkeckBox'ам, если CheckBox'ы создаются непосредственно функцией CreateWindow(Ex), это третий параметр с конца.
Код: Выделить весь код
enum CheckBoxIds {CheckBoxXId = 1, CheckBoxXId2, CheckBoxXId3};
//...
CreateWindow(
	TEXT("BUTTON"),
	NULL,
	WS_CHILD | WS_TABSTOP | BS_AUTOCHECKBOX,
	CW_USEDEFAULT, CW_USEDEFAULT, 
	CW_USEDEFAULT, CW_USEDEFAULT,
	hWnd, 
	(HMENU)CheckBoxXId, 
	cs.hInstance,
	NULL);
Для чужой программы неплохо бы сначала натравить Microsoft Spy++ см. пост за Monday, November 16, 2009 6:06 PM от CookieRevised, а там видно будет - принадлежат чекбоксы именно панельки или глобально форме.
В первом случаи указывать FindWindowEx искать дальше в панельке дочерние окна, во втором отбросить что найдена панелька и искать дальше чекбоксы, такие же дочерние окна как и сама панелька у формы.

Отправлено: 23:28, 08-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Admiral, Приложение не свое, чужое! Как раз смотрел через Spy++, боксы принадлежат панельке, у боксов одинаковые Class, пустые Caption! Делал поиск через FindWindowEx, и при помощи SendMessage ставил галочку, но у меня срабатывало на последнем боксе, а нужно например на втором!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 07:44, 09-09-2010 | #3


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


h = GetDlgItem(hW, ID)
hW - хендл родителя.
ID - ID элемента, по идеи он у всех разный. Его можно узнать через Spy++
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:59, 09-09-2010 | #4


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Sanchos, Спасибо Завтра буду пробовать!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 22:25, 09-09-2010 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Так, объясните мне пожалуйста,
Цитата Sanchos:
ID - ID элемента, по идеи он у всех разный. Его можно узнать через Spy++ »
это в SPY++ Control ID?Если да, то многие ID равны по значению Хэндлу окна!Как быть тогда?

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 08:11, 10-09-2010 | #6


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


А вы уверенны что то значение что там написано это хендл родительского окна? )))))
Я всегда использую h = GetDlgItem(hW, ID) и всё работает.

Отправлено: 20:00, 10-09-2010 | #7


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Sanchos:
А вы уверенны что то значение что там написано это хендл родительского окна? ))))) »
Я имею ввиду Хэндл Чекбокса имеет такое же значение что и его ID!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 20:56, 10-09-2010 | #8


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


ну и что? вам выполнить задачу нужно или что?
Напоминает:
- Это красный?
- да, это красный?
- а это точно он?
- да!
- а мне кажется это бардовый...

хотя палка иногда тоже стреляет ))))))))
в общем, для моих целей это работает, а уж как у вас будет .... )))

Отправлено: 22:57, 10-09-2010 | #9


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Sanchos:
ну и что? »
а то что, как и хендл так и его ID, где он такой же, меняется! И как тогда мне узнать ID? чтобы в параметры функции передать?Знаю похоже на какой то баг приложения, но поэтому и прошу помощи!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 14:37, 11-09-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - CheckBox! Определение хэндла!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] В приложении "Проводник" произошла ошибка, и его необходимо закрыть. snoop_snaip Microsoft Windows NT/2000/2003 13 03-08-2010 21:00
[решено] как восстановить систему через Acronis на "чужом" ПК? pay666 Автоматическая установка Windows 2000/XP/2003 0 21-02-2010 00:07
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29
Перехват нажатия кнопки в чужом приложении SASHA 333 Программирование и базы данных 5 13-01-2005 18:31




 
Переход