Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
14-62733
MAloi
2002-12-30 11:22
2003.01.20
Delphi 6 and Delphi 7 ?


1-62655
Dor
2003-01-09 20:40
2003.01.20
Image1


3-62349
Sergey13
2002-12-27 11:34
2003.01.20
Песенка ослика-ораклиста 8-)


1-62638
Sergey-ZZZ
2003-01-09 15:53
2003.01.20
NumLock


3-62423
Agafonov Alexsandr
2002-12-25 18:14
2003.01.20
Как считать Jpeg из бд в DBImage




   Наверх