Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как вывести в TrayClock (TrayClockWClass) время в своём формате?   Найти похожие ветки 

 
SHS   (2004-02-05 09:18) [0]

Как вывести в TrayClock (TrayClockWClass) время в своём формате,
например с секундами? Проверяю программой Microsoft Spy++, в
Caption часов действительно содержаться мои данные, но в панели
не отображаются. Вот мой код:

var
hTaskbar, hTray, hClock: HWND;

procedure TForm1.FormCreate(Sender: TObject);
begin
hTaskbar := FindWindowEx(0, 0, "Shell_TrayWnd", nil);
hTray := FindWindowEx(hTaskbar, 0, "TrayNotifyWnd", nil);
hClock := FindWindowEx(hTray, 0, "TrayClockWClass", nil);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowTextA(hClock, TimeToStr(Now));
UpdateWindow(hClock);
end;


 
dr Tr0jan ©   (2004-02-05 15:04) [1]

Попробуй убрать UpdateWindow, попробуй поставить период таймера 100 мс, попробуй все делать в отдельном потоке.
Такде можешь попробовать компонент TCoolTrayIcon, ИМХО, вышла уже 1.4 или больше, а может и 1.44, попробуй поищи!
А может быть дело даже в том, что часы в трее, это не текст а картика, а уж текст часов хранится как-раз для генерации картинки. Попробуй рисовать текст на канвасе часов.


 
DVM ©   (2004-02-05 18:07) [2]


> в
> Caption часов действительно содержаться мои данные, но в
> панели
> не отображаются. Вот мой код:

А кто сказал, что заголовок окна обязательно совпадает с текстом нарисованным на поверхности окна? Часы рисуют новое время раз в минуту (таймер имеет шаг минуту) или по WM_PAINT.


 
SHS   (2004-02-06 15:43) [3]

Сразу хочу поблагодарить за советы, спасибо!

Хочу ещё уточнить, значит я сам должен отрисовывать время? В правильном направлении иду с таким кодом или можно как-то эффективнее и красивее это сделать?

var
hTaskbar, hTray, hClock: HWND;
hCanvas: TCanvas;

procedure TForm1.FormCreate(Sender: TObject);
begin
hTaskbar := FindWindowEx(0, 0, "Shell_TrayWnd", nil);
hTray := FindWindowEx(hTaskbar, 0, "TrayNotifyWnd", nil);
hClock := FindWindowEx(hTray, 0, "TrayClockWClass", nil);

hCanvas := TCanvas.Create;
hCanvas.Handle := GetDC(hClock);
hCanvas.Brush.Style := bsClear;
hCanvas.Font.Color := clRed;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
hCanvas.TextOut(0, 10, TimeToStr(Now) );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ReleaseDC(hClock, hCanvas.Handle);
hCanvas.Free;
end;


 
DVM ©   (2004-02-06 19:04) [4]


> В правильном направлении иду с таким кодом или можно как-то
> эффективнее и красивее это сделать?

Эффективнее, это использовать только функции GDI. Но это не тот случай, где будет ощутима разница.
Направление вроде правильное.



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

Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.037 c
8-1071825862
Buffoon
2003-12-19 12:24
2004.04.11
FPS


11-1059887931
KreZ0n
2003-08-03 09:18
2004.04.11
Функции для работы с массивами


6-1079581306
StPu
2004-03-18 06:41
2004.04.11
Кто знает ак загрузить банер


3-1079102146
student
2004-03-12 17:35
2004.04.11
ошибка БДЕ 210С


8-1072046646
ZZZzzzz
2003-12-22 01:44
2004.04.11
Компоненты для работы с графикой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский