先在WM_CREATE或者WM_INITDIALOG消息里执行以下语句:
//设置按钮的属性为可自绘
HWND hBn = GetDlgItem(hDlg, IDOK);
SetWindowLong(hBn, GWL_STYLE, GetWindowLong(hBn, GWL_STYLE) | BS_OWNERDRAW);
return INT_PTR(TRUE);
然后再在WM_CTLCOLORBTN消息里执行:
case WM_CTLCOLORBTN ://设置按钮的颜色
if ((HWND)lParam == GetDlgItem(hDlg, IDOK))
{
HWND hbn = (HWND)lParam;
HDC hdc = (HDC)wParam;
RECT rc;
TCHAR text[64];
GetWindowText(hbn, text, 63);
GetClientRect(hbn, &rc);
SetTextColor(hdc, RGB(255, 255, 255));//设置按钮上文本的颜色
SetBkMode(hdc, TRANSPARENT);
DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
return (INT_PTR)CreateSolidBrush(RGB(127,0,255));//返回画刷设置按钮的背景色
}
break;
如果将按钮的属性设置成BS_FLAT看上去会更好