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

Вниз

Помогите с регионами   Найти похожие ветки 

 
ArtemESC ©   (2006-01-09 22:38) [0]

Доброго времени суток...
В Help"e ничего ни нашел, на тему CreateRoundRectRgn...
Нужно данную форму "скруглить"...
Интуитивно написал след. код, но он не работает:

procedure TfrmMain.FormSet;
var
RGN: HRGN;
begin
RGN := CreateRoundRectRgn(frmMain.Left, frmMain.Top,
    frmMain.Left + frmMain.Width, frmMain.Top + frmMain.Height, 10, 10);
SetWindowRgn(frmMain.Handle, RGN, true);
frmMain.Position := poScreenCenter;
end;


 
Джо ©   (2006-01-09 22:43) [1]

> ArtemESC ©   (09.01.06 22:38)
> Доброго времени суток...
> В Help"e ничего ни нашел, на тему CreateRoundRectRgn...

Как же? Есть и в SDK и в MSDN.


 
Джо ©   (2006-01-09 22:44) [2]

Главная ошибка, разумеется, в том, что не проверяется возвращаемое значение на 0.


 
Джо ©   (2006-01-09 22:47) [3]

Да, и что значит "не работает" тоже совершенно неясно.


 
ArtemESC ©   (2006-01-09 22:47) [4]

>>Джо ©   (09.01.06 22:44) [2]
О чем речь? Объясни...


 
ArtemESC ©   (2006-01-09 22:48) [5]

>>Джо ©   (09.01.06 22:47) [3]
Не скругляет нифига!!.


 
Джо ©   (2006-01-09 22:55) [6]

> [5] ArtemESC ©   (09.01.06 22:48)
> >>Джо ©   (09.01.06 22:47) [3]
> Не скругляет нифига!!.

Как же не скругляет? Еще как скругляет.
Кстати, координаты прямоугольника задается не относительно экрана, а в клиентских координатах. Т.е, нужно задавать так:
CreateRoundRectRgn (0,0,Width,Height,...)
Это первое. Второе, где проверка возвращаемого функцией значения? Я имею в виду что-то вроде этого:
Rgn := CreateRoundRectRgn (...);
if Rgn = 0 then
 RaiseLastOsError;

Ну, и третье. За такое frmMain.Left должно быть стыдно. И, кстати, за клевету на справочную систему, тоже.


 
ArtemESC ©   (2006-01-09 23:05) [7]

>>Джо ©   (09.01.06 22:55) [6]

Вот - опять не работает...Исключение не "сробатывает"
procedure TfrmMain.FormSet;
var
RGN: HRGN;
begin
RGN := CreateRoundRectRgn (0,0,frmMain.Width,frmMain.Height, 10, 10);
if Rgn = 0 then RaiseLastOsError;
SetWindowRgn(frmMain.Handle, RGN, true);
frmMain.Position := poScreenCenter;
end;

...За такое frmMain.Left должно быть стыдно...
Почему???


 
Rouse_ ©   (2006-01-10 10:52) [8]


> Вот - опять не работает...

Напоминает ролик про техподдержку :))

Лови:
procedure TForm1.Button3Click(Sender: TObject);
var
 RGN: HRGN;
begin
 RGN := CreateRoundRectRgn(0,0,Width, Height, 100, 100);
 if Rgn = 0 then RaiseLastOsError;
 SetWindowRgn(Handle, RGN, true);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.052 c
2-1142161827
Sollo
2006-03-12 14:10
2006.03.26
DBX SimpleDataSet кажется проблемы с кэшированием


2-1141984134
Van
2006-03-10 12:48
2006.03.26
Площадь многогранника


15-1141635706
DelphiN!
2006-03-06 12:01
2006.03.26
Установка 10ых Инди на Д6


15-1141060320
Kerk
2006-02-27 20:12
2006.03.26
Пришла SMS. Вместо номера отправителя - строка "FBI".


15-1141390711
Nic
2006-03-03 15:58
2006.03.26
19" LCD NEC 1970-NXB