Как нарисовать границу для элемента управления Win32 в C ++ - PullRequest
2 голосов
/ 25 января 2012

Я хотел бы нарисовать красную границу для кнопки РЕДАКТИРОВАТЬ или Нажать кнопку в C ++ Win32 API.НЕТ MFC Пожалуйста.Я получил это далеко.Рисует черную границу, но большинство, если не все hButtonDC, hButtonBitmap не объявлены.

PAINTSTRUCT ps;
HDC hdc;
HBRUSH hBrush;
BeginPaint(hwndButton2, &ps);

//  Create memory DC to contain hButtonBitmap

hButtonDC = CreateCompatibleDC(ps.hdc);
hButtonBitmap = SelectObject(hButtonDC, hButtonBitmap);

//  Create second memory DC where the button borders will be drawn and select into this DC an empty bitmap with the
//  size of the button bitmap

hMemDC = CreateCompatibleDC(ps.hdc);
hBitmap = CreateCompatibleBitmap(ps.hdc, ps.rcPaint.right, ps.rcPaint.bottom);
hBitmap = SelectObject(hMemDC, hBitmap);

//  Copy hButtonDC into hMemDC

BitBlt(hMemDC, 0, 0,  ps.rcPaint.right, ps.rcPaint.bottom, hButtonDC, 0, 0, SRCCOPY);

//  Paint the button borders with black pixels (1 pixel width)

PatBlt(hMemDC, 0, 0, ps.rcPaint.right - 1, 1, BLACKNESS);
PatBlt(hMemDC, ps.rcPaint.right - 1, 0, 1, ps.rcPaint.bottom, BLACKNESS);
PatBlt(hMemDC,  0, ps.rcPaint.bottom - 1, ps.rcPaint.right , 1, BLACKNESS);
PatBlt(hMemDC, 0, 0, 1, ps.rcPaint.bottom - 1, BLACKNESS);

//  Paint the button with drawn borders to its window DC, ps.hdc .

BitBlt(ps.hdc, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, hMemDC, 0, 0, SRCCOPY); 

//  Delete hBitmap e hMemDC

DeleteObject(SelectObject(hMemDC, hBitmap));
DeleteDC(hMemDC);

//  Delete hButtonDC

SelectObject(hButtonDC, hButtonBitmap);
DeleteDC(hButtonDC);

EndPaint(hWnd, &ps);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...