Создать круглую кнопку можно путем регистрации класса окна и использования собственной оконной процедуры для обработки сообщений от такого специального дочернего окна Код | int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "ROUNDBUT"; // ... // регистрируем класс окна где будет использоваться круглая кнопка wndclass.cbSize = sizeof (wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = EllipPushWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = "EllipPush"; wndclass.hIconSm = NULL; RegisterClassEx (&wndclass); //описуем оконную процедуру для круглой кнопки LRESULT CALLBACK EllipPushWndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { char szText[40]; HBRUSH hBrush; HDC hdc; PAINTSTRUCT ps; RECT rect; switch (iMsg) { case WM_PAINT : GetClientRect (hwnd, &rect); GetWindowText (hwnd, szText, sizeof (szText)); hdc = BeginPaint (hwnd, &ps); hBrush = CreateSolidBrush (GetSysColor (COLOR_WINDOW)); hBrush = (HBRUSH) SelectObject (hdc, hBrush); SetBkColor (hdc, GetSysColor (COLOR_WINDOW)); SetTextColor (hdc, GetSysColor (COLOR_WINDOWTEXT)); Ellipse (hdc, rect.left, rect.top, rect.right, rect.bottom); DrawText (hdc, szText, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); DeleteObject (SelectObject (hdc, hBrush)); EndPaint (hwnd, &ps); return 0; case WM_KEYUP : if (wParam != VK_SPACE) break; // fall through case WM_LBUTTONUP : SendMessage (GetParent (hwnd), WM_COMMAND, GetWindowLong (hwnd, GWL_ID), (LPARAM) hwnd); return 0; } return DefWindowProc (hwnd, iMsg, wParam, lParam); }
|
После этого определить в файле ресурсов описание этой кнопки как: Код | AboutBox DIALOG 20, 20, 160, 80 STYLE WS_POPUP | WS_DLGFRAME { //... CONTROL "OK" IDOK, "EllipPush", TABGRP, x, y, cx, cy }
|
--------------------
Цитата(Jimi Hendrix) | Well, I stand up next to a mountain And I chop it down with the edge of my hand |
|