Текущий архив: 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