Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c