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

Вниз

Рисование на Desktop e   Найти похожие ветки 

 
FFFF   (2002-03-06 16:22) [0]

Уважаемые мастера!
У меня такая задача - нужно отображать различные надписи
на десктопе , поверх всех окон. Надпись отображается в
течении некоторого времени, затем изчезает. Я использовал
прозрачное окно, но от артефактов на перекрываемых окнах
избавиться не удалось. Кроме того, окно, будучи невидимым,
все же присутсвовало, и перекрывало нижележащие окна.
Посоветуйте, что можно придумать.

Алексей.


 
SergeySA   (2002-03-06 16:25) [1]

Для этого надо получить контекст чужого окна, либо всего экрана:

function GetDC(Wnd: HWnd): HDC;

где Wnd - указатель на нужное окно, или 0 для получения контекста всего экрана.
И далее, пользуясь функциями API, нарисовать все что надо.

procedure DrawOnScreen;
var
ScreenDC: hDC;
begin
ScreenDC := GetDC(0); {получить контекст экрана}
Ellipse(ScreenDC, 0, 0, 200, 200); {нарисовать}
ReleaseDC(0,ScreenDC); {освободить контекст}
end;

Не забывайте после своих манипуляций посылать пострадавшим (или всем) окнам сообщение о необходимости перерисовки, для восстановления их первоначального вида.


 
FFFF   (2002-03-06 16:29) [2]

Не получится ли при этом, что какое-то окно передвинут и надпись
будет, например, разорвана пополам ?


 
SergeySA   (2002-03-06 16:48) [3]

Наверно да. Не пробывал. Обновляй десктоп и др. окна
при передвиганиях. Или рефреш чаще надпись.


 
FFFF   (2002-03-06 16:53) [4]

Увы, частое обновление надписи не помогает, остаются артефакты
на окнах. А как перехватить все изменения десктопа,или других окон, мне в голову не приходит.



 
VuDZ   (2002-03-06 17:38) [5]

есть такая вещь - регионы.
если есть желание - можно текс перевести в битмап, из него сделать регион. Как это делается - могу прислать исходник.

Потом, это регионвместе с картинкой накладываешь на окно и всё.


 
FFFF   (2002-03-07 11:33) [6]

Если исходник есть, пришли. На alexey@paninter.ru
Тогда получается, что это нужно делать перед выводом
каждого текстового сообщения(текст->битмап->регион).
Не будет ли такая конструкция тормозить?


 
VuDZ   (2002-03-07 15:31) [7]

если у тебя текст не меняется очень часто, то не будет. на мыло ушёл исходник с примером



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
3-25998
Dimedrol
2002-04-09 15:56
2002.05.09
Все время этот LoginPrompt !


3-26025
Sergant
2002-04-16 14:50
2002.05.09
Ошибка при Query.Close в MS SQL


1-26070
Ser_Kham1
2002-04-26 09:07
2002.05.09
файлы ini


3-25978
Sergey-ZZZ
2002-04-15 11:08
2002.05.09
Вторичные индексы.


1-26200
Lvbnhbq
2002-04-25 18:26
2002.05.09
Как сделать задержку по времени (типа Delay(200))?





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