Главная страница
    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.042 c
3-1081268959
GetIt
2004-04-06 20:29
2004.04.11
Фильтрация


1-1079966087
Юкс
2004-03-22 17:34
2004.04.11
Проверка строки на число


6-1079575667
Гость 1
2004-03-18 05:07
2004.04.11
Можно ли на Дельфи 7 написать плагин к Интернет Эксплореру ?


1-1080202303
MakNik
2004-03-25 11:11
2004.04.11
Декомпиляция проекта


1-1082476978
jiuraf
2004-04-20 20:02
2004.04.11
Как скопироватьсодержимое RichEdit1 В RichEdit2?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский