Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

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

 
Asteroid ©   (2002-12-05 23:56) [0]

Что за глюк? Ставлю SetWindowRgn( wnd, R, true ), потом рисую - и он рисует за пределами региона! Повторный вызов SetWindowRgn( wnd, R, true ) ничего не дает


 
Игорь Шевченко ©   (2002-12-06 09:43) [1]

The SetWindowRgn function sets the window region of a window. The window region determines the area within the window where the operating system permits drawing. The operating system does not display any portion of a window that lies outside of the window region

Может, не там рисуешь ? Не в том DC, к примеру...


 
Asteroid ©   (2002-12-06 14:29) [2]

Т.е. DC от канваса не совпадает с DC окна и он рисует на канве за пределами окна?


 
Игорь Шевченко ©   (2002-12-06 15:05) [3]

Я же кода не вижу на чем ты рисуешь...И в какой момент...


 
Asteroid ©   (2002-12-06 16:07) [4]


type TNewButton = class ( TGraphicControl )
private
wnd: HWND;
.....
protected
procedure Paint(); override;
.....
end;

procedure TNewButton.Paint();
var DC: HDC;
R: HRGN;
RD: TRect;
begin
RD := ClientRect;
R := CreateRoundRectRgn( RD.Left, RD.Top, RD.Right, RD.Bottom, 20, 20 );
SetWindowRgn( wnd, R, true );
if ( Canvas= nil ) then exit;
Canvas.Lock();
DC := Canvas.Handle;
// далее отрисовка, в т.ч. приходится рисовать
// за пределами назначенной области R
// по всему ClientRect. Рисуется по DC.
.............
Canvas.Unlock();
SetWindowRgn( wnd, R, true );
end;


 
Игорь Шевченко ©   (2002-12-06 17:07) [5]

Canvas у TGraphicControl относится к форме (или к родительскому окну). Так делать нельзя ни в коем случае.

Надо наследовать от TCustomControl и управлять регионом окна, Handle которого уже имеется...


 
han_malign ©   (2002-12-06 17:23) [6]

К тому же - SetWindowRgn( Handle, R, true );
wnd - где и что???(в смысле инициализируется).


 
Asteroid ©   (2002-12-06 18:12) [7]

> han_malign © (06.12.02 17:23)
wnd := Classes.AllocateHWND( WndProc );

> Игорь Шевченко © (06.12.02 17:07)
Упс...Спасибо...


 
Игорь Шевченко ©   (2002-12-06 18:19) [8]

wnd := Classes.AllocateHWND( WndProc );

Это что, в D7 она в Classes переехала ? :-)))


 
Asteroid ©   (2002-12-06 19:20) [9]

> Игорь Шевченко © (06.12.02 18:19)
Наверное

СПАСИБО! Оно работает!!! :))



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

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
14-62832
Санта Клаус
2003-01-02 23:57
2003.01.20
Как мне оправить из интернета письмо в ФИДО?


3-62400
an
2002-12-25 16:02
2003.01.20
Проблемма с DbCtrlGrid


3-62392
Vlad_T
2002-12-24 11:48
2003.01.20
Запрос к двум базам IB


1-62581
gururu
2003-01-08 03:15
2003.01.20
Глюк в проге


3-62411
Anatoliy
2002-12-25 16:00
2003.01.20
Уважаемые мастера. Вопрос о DBGrid.