为什么 GetDC 功能不起作用?
Why GetDC function does not works?
我正在用 Win32 创建一个游戏 API 并试图用下面的代码自己绘制一个按钮:
HWND button = CreateWindow("BUTTON", "", WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 100, 100, 250, 40, hwnd, NULL, instance, NULL);
HDC dc = GetWindowDC(button);
TextOut(dc, 10, 10, "test", 5);
ReleaseDC(button, dc);
我想给大家说明一下,我已经尝试了很多情况和各种函数,像FillRect, MoveTo, DrawText ...重点是在WM_CTLCOLORBTN,在这里我使用 wParam 获取按钮的 HDC。我不明白为什么它不起作用。也许 GetDC 功能有问题?我应该使用哪个功能? 我指定我尝试使用其他函数,例如 GetDC 或 BeginPaint/EndPaint。 我需要做什么??
使用 BS_OWNERDRAW
样式时,您需要处理(并执行绘图)WM_DRAWITEM
message in the parent window's windproc. This is explicitly stated in the Button Styles documentation:
BS_OWNERDRAW
Creates an owner-drawn button. The owner window receives a WM_DRAWITEM
message when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW
style with any other button styles.
WM_DRAWITEM
message is a pointer to a DRAWITEMSTRUCT
结构的 lParam
,其中包含必须用于绘图等的 HDC
。
hDC
A handle to a device context; this device context must be used when performing drawing operations on the control.
我正在用 Win32 创建一个游戏 API 并试图用下面的代码自己绘制一个按钮:
HWND button = CreateWindow("BUTTON", "", WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 100, 100, 250, 40, hwnd, NULL, instance, NULL);
HDC dc = GetWindowDC(button);
TextOut(dc, 10, 10, "test", 5);
ReleaseDC(button, dc);
我想给大家说明一下,我已经尝试了很多情况和各种函数,像FillRect, MoveTo, DrawText ...重点是在WM_CTLCOLORBTN,在这里我使用 wParam 获取按钮的 HDC。我不明白为什么它不起作用。也许 GetDC 功能有问题?我应该使用哪个功能? 我指定我尝试使用其他函数,例如 GetDC 或 BeginPaint/EndPaint。 我需要做什么??
使用 BS_OWNERDRAW
样式时,您需要处理(并执行绘图)WM_DRAWITEM
message in the parent window's windproc. This is explicitly stated in the Button Styles documentation:
BS_OWNERDRAW
Creates an owner-drawn button. The owner window receives aWM_DRAWITEM
message when a visual aspect of the button has changed. Do not combine theBS_OWNERDRAW
style with any other button styles.
WM_DRAWITEM
message is a pointer to a DRAWITEMSTRUCT
结构的 lParam
,其中包含必须用于绘图等的 HDC
。
hDC
A handle to a device context; this device context must be used when performing drawing operations on the control.