Разное - CheckBox! Определение хэндла!

Ответить
Аватара пользователя
LilLoco

Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

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

Re: Разное - CheckBox! Определение хэндла!

Сообщение Admiral »

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[/i] от CookieRevised, а там видно будет - принадлежат чекбоксы именно панельки или глобально форме.

В первом случаи указывать FindWindowEx искать дальше в панельке дочерние окна, во втором отбросить что найдена панелька и искать дальше чекбоксы, такие же дочерние окна как и сама панелька у формы.
Аватара пользователя
LilLoco

Re: Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

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

Re: Разное - CheckBox! Определение хэндла!

Сообщение Sanchos »

h = GetDlgItem(hW, ID)

hW - хендл родителя.

ID - ID элемента, по идеи он у всех разный. Его можно узнать через Spy++
Аватара пользователя
LilLoco

Re: Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

Sanchos, Спасибо Изображение Завтра буду пробовать!
Аватара пользователя
LilLoco

Re: Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

Так, объясните мне пожалуйста,
Цитата Sanchos:



ID - ID элемента, по идеи он у всех разный. Его можно узнать через Spy++
Разное - CheckBox! Определение хэндла!




это в SPY++ Control ID?Если да, то многие ID равны по значению Хэндлу окна!Как быть тогда?
Аватара пользователя
Sanchos

Re: Разное - CheckBox! Определение хэндла!

Сообщение Sanchos »

А вы уверенны что то значение что там написано это хендл родительского окна? )))))

Я всегда использую h = GetDlgItem(hW, ID) и всё работает.
Аватара пользователя
LilLoco

Re: Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

Цитата Sanchos:



А вы уверенны что то значение что там написано это хендл родительского окна? )))))
Разное - CheckBox! Определение хэндла!




Я имею ввиду Хэндл Чекбокса имеет такое же значение что и его ID!
Аватара пользователя
Sanchos

Re: Разное - CheckBox! Определение хэндла!

Сообщение Sanchos »

ну и что? вам выполнить задачу нужно или что?

Напоминает:

- Это красный?

- да, это красный?

- а это точно он?

- да!

- а мне кажется это бардовый...



хотя палка иногда тоже стреляет ))))))))

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

Re: Разное - CheckBox! Определение хэндла!

Сообщение LilLoco »

Цитата Sanchos:



ну и что?
Разное - CheckBox! Определение хэндла!




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

Вернуться в «Программирование и базы данных»