Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-62750
Driverrr
2003-01-04 14:25
2003.01.20
Доступ к файлу...


3-62390
ИБМ
2002-12-24 08:38
2003.01.20
Посогите с запросом (добавлени данных из одной табл. в дроугую)


14-62780
hatchy
2002-12-31 09:33
2003.01.20
Компонент Tmediaplayer...


4-62933
slpro
2002-12-05 07:49
2003.01.20
Как определить путь к программе по ее хендлу?


8-62667
AlexT1000
2002-10-02 14:55
2003.01.20
ссылки на любые материалы по работе с векторной графикой





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