Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.27;
Скачать: CL | DM;

Вниз

Потомок TCheckBox и BM_SETCHECK   Найти похожие ветки 

 
cosinus ©   (2007-06-26 09:30) [0]

В чужом приложении имеется потомок TCheckBox(видимо все таки потомок, судя по названию класса TcxCheckBox). Шлю ему сообщение SendMessage(hWindow, BM_SETCHECK, Integer(true), 0);, а он его не обрабатывает, причем обычными методами (клик мышкой) все работает. У меня такой вопрос, можно ли установить ему Checked в True, какими либо методоми, кроме получения региона и эмуляции нажатия мышкой?


 
Однокамушкин   (2007-06-26 09:48) [1]

Может, вообще не потомок, может, с нуля написан... Попробуйте получить имя базового оконного класса через функцию RealGetWindowClass, TCheckBox и его потомки порождены через сабклассинг от системного класса BUTTON... Если RealGetWindowClass вернёт не BUTTON, значит, TcxCheckBox никакого отношения к системному CheckBox"у не имеет и реагировать на BM_SETCHECK не должен...


 
cosinus ©   (2007-06-26 12:02) [2]

Хм... Делаю так
const WndClassNameLen=512;

function enumSetCheckTr(hWindow: HWND; Param: Longint): Bool; stdcall
var
 WndClassName: string;
 ClassName:array[0..WndClassNameLen-1] of Char;
begin
 SetLength (WndClassName, 512);
 GetClassName (hWindow, PChar (WndClassName), 512);    
 if PChar(WndClassName)="TcxCheckBox" then
 begin
   //SendMessage(hWindow, BM_SETCHECK, 1{Integer(true)}, 0);
   RealGetWindowClass(hWindow,ClassName,WndClassNameLen);
   ShowMessage(String(ClassName));
 end;
 result:=true;
end;

Пишет то же самое, что и  GetClassName (hWindow, PChar (WndClassName), 512);, то есть TcxCheckBox.
Хде мой косяк? По-моему так не должно быть...


 
Однокамушкин   (2007-06-26 12:16) [3]


> cosinus ©   (26.06.07 12:02) [2]
> Хде мой косяк? По-моему так не должно быть...

Косяка нет, просто это значит, что оконный класс TcxCheckBox не порождён сабклассингом от стандартного класса, а является полностью независимым классом, поэтому имя класса и реальное имя класса для него совпадают... Поэтому он и не реагирует на BM_SETCHECK...


 
cosinus ©   (2007-06-26 12:22) [4]


> Однокамушкин   (26.06.07 12:16) [3]

Глянь, что нашел
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=45455
Правда манифест я не подключаю, однако же, человек говорит, что, например с TPanel так и остались проблеммы, что говорит о какой то странной "неустойчивой" работе RealGetWindowClass. Так в чем же дело?


 
cosinus ©   (2007-06-26 12:24) [5]


> cosinus ©   (26.06.07 12:22) [4]
>  ...Так в чем же дело?


В смысле, мне удовлетвориться вашим ответом, и посчитать, что товаристЧ просто что-то не так делал, или же для Вас это тоже новость?


 
Игорь Шевченко ©   (2007-06-26 12:48) [6]


> однако же, человек говорит, что, например с TPanel так и
> остались проблеммы, что говорит о какой то странной "неустойчивой"
> работе RealGetWindowClass


Несть числа невеждам.

Читать и думать над прочитанным:

http://ian.joeuser.com/index.asp?c=1&AID=3258


 
Однокамушкин   (2007-06-26 14:02) [7]


> cosinus ©   (26.06.07 12:24) [5]
> В смысле, мне удовлетвориться вашим ответом, и посчитать,
>  что товаристЧ просто что-то не так делал, или же для Вас
> это тоже новость?

Новость... честно говоря, с RealGetWindowClass серьйзно я не работал, так, повозился немного ради интереса, и во всех моих экспериментов она вела себя вполне предсказуемо... с манифестами её не пробовал, не знаю, как там...

> Игорь Шевченко ©   (26.06.07 12:48) [6]

Спасибо за интересную ссылку


 
cosinus ©   (2007-06-26 14:18) [8]


> Игорь Шевченко ©   (26.06.07 12:48) [6]

Ну не зря же я поставил ковычки. Естественно, она ведет себя совершенно логично и правильно, своим "неустойчево" я хотел сказать только то, что из MSDN-а например (http://msdn2.microsoft.com/en-us/library/ms633538.aspx) не ясно, почему она возвращает те или иные значения в зависимости от подключения\не подключения манифеста и т.д.

За ссылку, огромное спасибо, пытаюсь разобраться.


Однокамушкин
> Игорь Шевченко ©

Спасибо



Страницы: 1 вся ветка

Текущий архив: 2008.01.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-1193170634
Kostafey
2007-10-24 00:17
2008.01.27
Реальность компонентов формы


3-1190481366
monik
2007-09-22 21:16
2008.01.27
Активация роли приложения


15-1197906636
necromancer
2007-12-17 18:50
2008.01.27
Интрасети


3-1190320214
dRake
2007-09-21 00:30
2008.01.27
Строки/преобразования типов в ХП Interbase/Firebird


2-1198594274
Ламот
2007-12-25 17:51
2008.01.27
SQL create table