K vytvoření kulatýho wokna tu existuje jedna API funkce,
která se nazývá :

SetWindowRgn(HWND hwnd, HRGN rgn, int bredraw);

Tato funkce nastaví tvar okna na tvar, odpovídající útvaru v
datové struktuře HRGN (region). Ta se dá vytvořit několika
funkcemi, já popíšu jen jména, vyhelpujte si to sami.

CreateEllipticRgn(x, y, w, h); // vytvoří eliptický region o rozměrech w x h na souřadnicích x, y.

Tyto souřadnice se dají zjistit voláním :


RECT rect; // pravoúhelník
int x, y, w, h;

GetWindowRect(hwnd, &rect);

x = rect.left;
y = rect.top;
w = rect.right - rect.left;
h = rect.bottom - rect.top;
Ale můžete použít : CreateEllipticRgnIndirect(&rect); Která vytvoří region do pravoúhelníka rect. Takže miloučký sample - uděláte si Win32 exe a za příkaz:

ShowWindow(hwnd, nCmdShow);
Doplníte :

RECT rect;
HRGN rgn;

GetWindowRect(hwnd, &rect); // načtení pravoúhelníka
rgn = CreateEllipticRgnIndirect(&rect); // vytvoření elipsy

SetWindowRgn(hwnd, rgn, TRUE); // nastavení regionu, TRUE = překreslit
Pokud takovouhle aplikaci zkompilujete, dostanete krásné šišaťoučké okno ;-) Potom jsou tu funkce : Najdete je normálně v indexu pod jejich názvy. Vyberte si API ne CWnd::, nebo CWindow:: Je to fakt nářez :-) !! -tHE SWINe-
Zpátky