Crea un progetto di applicazione Win32 "gui" (non console!) e compila questo codice:Originariamente inviato da frarugi87
mettiamo ad esempio che io voglia fare una form circolare. come posso fare?
Crea una finestra con regione di forma circolare. Ho lasciato la barra del titolo, così vedi che succede ..... la barra è tranciata e se ne vede solo un pezzo.codice:#define STRICT #include <windows.h> #define MAIN_WNDCLASS "MiaClasseFinestra" LRESULT CALLBACK Main_WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: return 0; case WM_DESTROY: PostQuitMessage (0); return 0; case WM_CLOSE: DestroyWindow (hWnd); return 0; } return DefWindowProc (hWnd, uMsg, wParam, lParam); } INT APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevious, LPSTR lpszCmdLine, INT iCmdShow) { WNDCLASSEX wcx; HWND hWnd; HRGN hRgn; MSG msg; wcx.cbSize = sizeof (wcx); wcx.style = CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc = (WNDPROC) Main_WndProc; wcx.cbClsExtra = 0; wcx.cbWndExtra = 0; wcx.hInstance = hInstance; wcx.hIcon = NULL; wcx.hIconSm = NULL; wcx.hCursor = LoadCursor (NULL, IDC_ARROW); wcx.hbrBackground = (HBRUSH) (COLOR_WINDOW+1); wcx.lpszMenuName = NULL; wcx.lpszClassName = MAIN_WNDCLASS; if (!RegisterClassEx (&wcx)) { MessageBox (NULL, "Errore nella registrazione della classe", "ERRORE", MB_OK | MB_ICONEXCLAMATION); return 1; } hWnd = CreateWindow (MAIN_WNDCLASS, "Titolo finestra", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, 0, 300, 300, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { MessageBox (NULL, "Errore nella creazione della finestra", "ERRORE", MB_OK | MB_ICONEXCLAMATION); return 1; } hRgn = CreateEllipticRgn (0, 0, 300, 300); if (hRgn != NULL) SetWindowRgn (hWnd, hRgn, FALSE); ShowWindow (hWnd, SW_SHOWNORMAL); UpdateWindow (hWnd); while (GetMessage (&msg, NULL, 0, 0) > 0) { TranslateMessage (&msg); DispatchMessage (&msg); } if (hRgn != NULL) DeleteObject (hRgn); return 0; }
In questo caso tocca stabilire cosa fare, se togliere la barra (ma in quel caso devi stabilire come muovere la finestra) o altro.

Rispondi quotando