Форум: "WinAPI";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c