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

Вниз

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

 
Nightmare   (2007-06-17 12:32) [0]

Привет всем!!!
 Ниже приведён код, который рисует рамку на рабочем столе, но при прорисовке рамка оставляет за собой шлейф.

Var cur_pos: TPoint; r:TRect; Dc:HDC;
Begin
GetCursorPos(cur_pos);
r:=rect(frm.Left,frm.Top,cur_pos.X,cur_pos.Y);
DC: = GetDC(0);
DrawFocusRect(DC, r);
ReleaseDC(0, DC);
End;

Не могли бы вы подсказать как от него избавиться.


 
Cj ©   (2007-06-17 13:17) [1]


> GetDC(0);


если я тебя понял, то ты на столе рисуеш рамку для формы, (иначе как она может оставлять шлейф), неуверен но попробуй так:

DC: = GetDC(form1.handle);


 
Cj ©   (2007-06-17 13:18) [2]

А еще можешь перекрыть метод NCPaint или как-то там, у формы


 
Nightmare   (2007-06-17 13:27) [3]

Cj, твой код рисует рамку только на форме, это немного не то.
Мне же скорее всего, надо обновлять рабочий стол после прорисовки рамки.

А как например это делает винамр?


 
Cj ©   (2007-06-17 13:33) [4]

вот из FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988624857&n=16

а у винампа я рамки не видел


 
Nightmare   (2007-06-17 13:42) [5]

этот пример опять же рисует на форме.

Моя форма обрезана по битмапу,поэтому приходится рисовать прямо на рабочем столе.


 
homm ©   (2007-06-17 14:03) [6]

> Моя форма обрезана по битмапу,поэтому приходится рисовать
> прямо на рабочем столе.

Нельзя рисовать на рабочем столе. Ты можешь рисовать тлько в своих созданных окнах, все остальное кривость и косость.

А теперь объясни нормально, что тебе нужно (или нарисуй)


 
Cj ©   (2007-06-17 14:07) [7]


> А теперь объясни нормально, что тебе нужно

точно!

Если ты хочеш себе форму как у винампа то используй регионы (Regions)


 
Nightmare   (2007-06-17 14:26) [8]

Мне надо форма чтобы растягивалась как у винампа, тоесть рамкой.


 
Cj ©   (2007-06-17 14:34) [9]


> Мне надо форма чтобы растягивалась как у винампа, тоесть
> рамкой.

а, ну так то, дай подумаю...
попробуй создать еще одну, прозрачную форму с Shape и у Shape.Pen.Style:=[какойто-там с черточками] выберешь. ну вообщем попытайся так


 
Cj ©   (2007-06-17 14:37) [10]

...и при OnMouseUp чтобы эта форма убиралась, а первая становилась размером с эту


 
homm ©   (2007-06-17 14:49) [11]

Так попробуй.


var oldRect: TRect;
 flag: true;
procedure DrawRect();
Var cur_pos: TPoint; r:TRect; Dc:HDC;
Begin
GetCursorPos(cur_pos);
r:=rect(frm.Left,frm.Top,cur_pos.X,cur_pos.Y);
DC: = GetDC(0);
if flag then
DrawFocusRect(DC, OldRect);
DrawFocusRect(DC, r);
ReleaseDC(0, DC);
OldRect := r;
flag := TRUE;
End;

function onmousedown
begin
flag := FALSE;
end;


 
homm ©   (2007-06-17 14:50) [12]

ну и еше:

function onmouseip
begin
if flag
 DrawFocusRect(DC, OldRect);
end;


 
homm ©   (2007-06-17 14:51) [13]

> function onmouseip

onmouseup


 
Nightmare   (2007-06-17 14:52) [14]

Сj, это конечно вариант использовать вторую форму, я наверное так и буду делать, так даже кода меньше, и кстате проще расположить на 2 форме не Shape, а опять же обрезать форму по битмапу.


 
homm ©   (2007-06-17 15:00) [15]

С формой бредовый тормозной вариант. Будешь на кождое движение мыши регион строить и заменять? Было бы еше куда нишло, если бы ты его ручками смог построить, но ведб ты же, насколько я понимаю будешь рисовать на битмапе, а потом убирать один из цветов, как невидимый.


 
Nightmare   (2007-06-17 15:01) [16]

homm, беру свои слова назад, все работает, спасибо.
P.S. довольно интересный способ, хотя скорее всего единственный.



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

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

Наверх





Память: 0.48 MB
Время: 0.005 c
15-1196756239
Галинка
2007-12-04 11:17
2008.01.06
А что читаем? (и аудиокниги в том числе)


15-1196257475
em240
2007-11-28 16:44
2008.01.06
.net+производительность gui приложений


15-1196689348
Сергей М.
2007-12-03 16:42
2008.01.06
bash


11-1177148211
Dy1
2007-04-21 13:36
2008.01.06
3D (игры, движки и т.п)


15-1196592345
homm
2007-12-02 13:45
2008.01.06
Вот так вот получается





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