我正在尝试打印WM_COMMAND案例中的文本,因为我需要在按下按钮后打印文本。
下面是我的代码:
switch(msg)
{
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
case WM_COMMAND:
switch (LOWORD(wParam))
{
case 1:
PAINTSTRUCT ps;
HDC hDC;
hDC = BeginPaint(hwnd, &ps);
{
TextOut(hDC, 10, 50, "hello", 5);
}
EndPaint(hwnd, &ps);
UpdateWindow(hwnd);
break;
}
break;
}遗憾的是,它没有打印任何内容。
编辑:
我可以通过这种方式在WM_COMMAND中使用TextOut():
HDC hDC;
hDC = GetDC(hwnd);
TextOut(hDC, 10, ypos, "Warnings: ", 10);
UpdateWindow(hwnd);发布于 2011-04-12 16:14:52
最好将你的程序组织起来,这样所有的绘制都在WM_PAINT中执行。
因此,您可以将其更改为如下所示:
LRESULT CALLBACK WndProc(/*blah blah blah*/)
{
static wchar_t my_text[] = L"hello";
static BOOL show_btn_text = FALSE;
HDC dc;
PAINTSTRUCT ps;
switch (msg) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
case 1:
show_btn_text = !show_btn_text;
InvalidateRect(hwnd, NULL, TRUE); //tells windows that the whole client area needs to be repainted
break;
}
return 0;
case WM_PAINT:
dc = BeginPaint(hwnd, &ps);
if (show_btn_text) {
TextOut(dc, 0, 0, my_text, wcslen(my_text));
}
EndPaint(hwnd, &ps);
return 0;
/*the rest of the window procedure
}
}发布于 2011-04-12 16:10:26
https://stackoverflow.com/questions/5631937
复制相似问题