Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   API оконо нестандартной ормы (http://forum.oszone.net/showthread.php?t=30218)

anom 19-10-2003 03:47 207818

Подскажите, как создать окно неправильной формы используя
только API.

Prisoner 19-10-2003 08:50 207819

Код:

int SetWindowRgn
   (
    HWND hWnd, // handle to window whose window region is to be set
    HRGN hRgn,    // handle to region
    BOOL bRedraw // window redraw flag
   );

Т.е рисуешь свой регион какой угодно и его handle передаешь функции.

Megabizon 19-10-2003 10:48 207820

Пример - окно в форме звездочек

Код:

int __fastcall Sin(int a, int R)
{
double W=36*3.14159265/180.0;
return R*sin(W*a);
}
 
int __fastcall Cos(int a, int R)
{
double W=36*3.14159265/180.0;
return R*cos(W*a);
}
 
HRGN __fastcall GetStarReg(int X, int Y, int R)
{
TPoint P[5];
P[0]=Point(X, Y-R);
P[1]=Point(X-Sin(4, R), Y-Cos(4, R));
P[2]=Point(X-Sin(8, R), Y-Cos(8, R));
P[3]=Point(X-Sin(2, R), Y-Cos(2, R));
P[4]=Point(X-Sin(6, R), Y-Cos(6, R));
return CreatePolygonRgn(P, 5, WINDING);
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 int X=Width/2, Y=Height/2; *
 
 HRGN R1, R2, R; *
 
 R=GetStarReg(X, Y, 100); *
 
 for (int i=1;i<10;i+=2) *
 
 *
 { *
 
 *
 R1=GetStarReg(X-Sin(i, 120), Y-Cos(i, 110), 40); *
 
 CombineRgn(R, R, R1, RGN_OR); *
 
 *
 } *
 
 *
 
R1=GetStarReg(X, Y, 30);
CombineRgn(R, R, R1, RGN_DIFF);
R1=CreateEllipticRgn(3, 3, Width-6, Height-6);
R2=CreateEllipticRgn(20, 10, Width-20, Height-10);
CombineRgn(R1, R1,R2, RGN_DIFF);
CombineRgn(R, R, R1, RGN_OR);
SetWindowRgn(Handle, R, TRUE);
}

Дальше, ядумаю, разберешся.

anom 19-10-2003 20:20 207821

Спасибо за помощь и скажите, кто знает где есть
полное описание API на русском.

Prisoner 20-10-2003 00:58 207822

http://freesoft.ru/?id=8916

на download.ru есть еще, но за 50 вечнодеревянных (было так, но сейчас кажется занахаляву)- http://www.download.ru/russian/sp/9904.htm
http://www.download.ru/russian/sp/11785.htm

[s]Исправлено: Prisoner, 2:02 20-10-2003[/s]


Время: 01:38.

Время: 01:38.
© OSzone.net 2001-