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

Вниз

wm_SetText   Найти похожие ветки 

 
Shluz ©   (2003-07-02 12:24) [0]


Panel:=FindWindow("Shell_TrayWnd", nil);
Tray:=FindWindowEx(panel,0,"TrayNotifyWnd","");
Clock:=FindWindowex(tray,0,"TrayClockWClass",nil);
text:="text"#0;
sendmessage(clock,wm_settext,0,cardinal(text));

вообщем- то адресат сообщение получает, но текст контрола не меняется..почему??


 
VMcL ©   (2003-07-02 13:16) [1]

>Shluz © (02.07.03 12:24)
>вообщем- то адресат сообщение получает, но текст контрола не меняется..почему??

Наверное, потому что срабатывает WM_PAINT.


 
Shluz ©   (2003-07-04 00:58) [2]

нет, wm_paint не передается в момент смены времени...(шпионом SPY++ смотрел)
блин :(( что ж такое??


 
Игорь Шевченко ©   (2003-07-04 09:03) [3]

Часы сами рисуются и им без разницы, какой текст установлен какой-то левой программой. Они все равно будут время показывать и именно в обработке сообщения WM_PAINT. Кроме того, есть вариант, что окно часов просто игнорирует сообщение WM_SETTEXT


 
Shluz ©   (2003-07-04 12:34) [4]

говорю же адрест сообщение получает!!! wm_paint тут не причем...
тест времени устанавливается именно WM_SETTEXT


 
Игорь Шевченко ©   (2003-07-04 14:56) [5]

Shluz © (04.07.03 12:34)

Откуда сведения ?


 
Shluz ©   (2003-07-04 19:08) [6]

>Игорь Шевченко шпион SPY++ (MicroSoft) отслеживает все сообщения окна...ну аналог WinSight32 в комплекте Delphi (только интересней)


 
Игорь Шевченко ©   (2003-07-04 19:37) [7]

Shluz © (04.07.03 19:08)

Никто этому окну не посылает WM_SETTEXT


 
Shluz ©   (2003-07-04 20:35) [8]

каждую минуту посылается!!!! глупый спор!!! :((


 
default ©   (2003-07-04 22:46) [9]

Shluz © (04.07.03 20:35)
самое интересно что в WinSight32 при посылке тобой WM_SETTEXT часам - текст ИЗМЕНЯЕТСЯ, но визуально остаётся прежним
когда WM_SETTEXT уже не твоё отправляется меняется и значение в WinSight32 и визуально !? может "часы" "левое значение" на WM_GETTEXT - возвращают?!точнее то которое хочет "поставить" чужая программа, хотя видно что при посылке WM_SETTEXT (не тобой)
никаких специально флагов о том что это сообщение послано откуда-то извне нет!?


 
default ©   (2003-07-05 00:01) [10]

кстати "время часов" на что нужно будет менять?
если своё время выставлять(отличное от системного), то это можно организовать


 
Morfein ©   (2003-07-06 11:15) [11]

думается мне, что переменная text описана как string... да?


 
default ©   (2003-07-06 16:16) [12]

Morfein © (06.07.03 11:15)
это здесь не имеет смысла
хотя конечно если она описана как AnsiString ноль добавлять в конец бессмысленно, потому что он там уже есть для совместимости со строками типа PChar
ты наверно хотел об этом сказать


 
Morfein ©   (2003-07-06 20:11) [13]

>> default
Если ты не в курсе, переменная типа string не является указателем на массив байтов, которые как-бы хранятся в этой переменной после присвоения test:="text"#0;

В SendMessage(clock, wm_settext, 0, cardinal(text)); функция будет расматривать text как адрес, а по этому адресу совершенно не текст лежит... Поэтому и должно быть использовано преведение типов - pchar(text).


 
Ученик ©   (2003-07-06 23:50) [14]

>Shluz © (02.07.03 12:24)
Текст контрола меняется и это показывает Spy++, только отрисовывается контрол по текущему времени.


 
default ©   (2003-07-07 00:07) [15]

Morfein © (06.07.03 20:11)
да знаю я это всё...
можно и @text[1] передавать без всяких приведений


 
default ©   (2003-07-07 00:11) [16]

Ученик © (06.07.03 23:50)
что значит "Текст контрола меняется" тогда бы он и визуально менялся, так как считывание текущего времени идёт через каждую секунду(примерно) хотя там есть механизмы считывания времени если по каким-либо причинам WM_TIMER не пришло


 
Игорь Шевченко ©   (2003-07-07 09:49) [17]

Ну вот Spy++ и показывает, что WM_SETTEXT не посылается :) WM_TIMER приходит, контрол меняет сове содержимое, приходит время WM_PAINT - он это содержимое рисует...


 
default ©   (2003-07-07 16:25) [18]

Игорь Шевченко © (07.07.03 09:49)
WinSight показывает несколько другую картину
посмотрите


 
Игорь Шевченко ©   (2003-07-07 17:25) [19]

Пришлось запустить WinSight - два сообщения WM_TIMER за перекур :) И все...

NT 4 SP6




 
default ©   (2003-07-07 18:02) [20]

Игорь Шевченко © (07.07.03 17:25)
ты точно сообщения "часов" смотрел???
у меня каждую секунду идут два сообщения
WM_TIMER потом сразу за ним WM_SETTEXT и польз-ие иногда "проскакивают"


 
Ученик ©   (2003-07-07 19:29) [21]

>default © (07.07.03 00:11)
Это значит, что Spy++ показывает в Window Caption для Clock установленный текст, что и подтверждает
if GetWindowText(Clock, szText, 255) > 0 then
( StrPas(szText) >default © (07.07.03 00:11)
Это значит, что Spy++ показывает в Window Caption для Clock установленный текст, что и подтверждает
if GetWindowText(Clock, szText, 255) > 0 then
ShowMessage(StrPas(szText))


 
default ©   (2003-07-07 19:41) [22]

Ученик © (07.07.03 19:29)
тогда объясни мне почему он визуально не меняется, хотя реальное обновление время идёт каждую секунду
смени системное время и увидишь что некоторое время часы будут идти по "старому" времени


 
Ученик ©   (2003-07-07 19:53) [23]

>default © (07.07.03 19:41)
А почему он обязан визуально меняться, обновление и SetText не обязывают.



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

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

Наверх




Память: 0.52 MB
Время: 0.015 c
14-24616
Jao
2003-08-17 17:12
2003.09.08
Нет бардаку на винте!!! Оставь свое мнение.


14-24632
Sargos
2003-08-21 13:33
2003.09.08
Из жизни...


3-24314
muzzzy
2003-08-05 14:29
2003.09.08
oracle руские буковки непоказывает


4-24737
mikky
2003-07-08 11:49
2003.09.08
вайловые операци


7-24726
Diamond Dog
2003-06-25 19:35
2003.09.08
Отключение выбора режима загрузки винды при нажатии F8