我正在编写一个简单的Windows应用程序,其中我想向用户显示两个变量:NC和NL。 当用户完成某个动作时,NC和NL会更新(对WM_COMMAND的响应)
所以我使用DrawText来响应WM_PAINT消息来显示这些值。不幸的是,当值发生变化时,消息不会更新,而WM_PAINT会再次被有效调用。 (检查并重新检查)
我想要确切地说我也尝试使用TextOut,但更新的文本重叠在旧文本上,即使我清除了屏幕。我还尝试直接更新文本以响应WM_COMMAND,但没有取得更好的成功。我没有在互联网或Windows帮助中找到任何有价值的帮助。
在空白项目中隔离问题,我无法识别问题。这是一段代码。
case WM_PAINT:
//writeText(mainWnd, " ", RGB(0, 25, 255), 410, 10);
//writeText(mainWnd, buff, RGB(0, 25, 255), 410, 10);
//sprintf(buff, "piece : %s", isCaval ? "cavalier" : "roi");
//writeText(mainWnd, buff, RGB(0, 255, 25), 410, 40);
{
static char buff[250] = { '\0' };
sprintf(buff, "board : %d x %d", NC, NL);
static PAINTSTRUCT ps;
static HDC hDC = BeginPaint(mainWnd, &ps);
static RECT rect = { 250,250,400,400 };
SetTextColor(hDC, RGB(255, 0, 0));
//SetBkMode(hDC, TRANSPARENT);
DrawText(hDC, buff, strlen(buff), &rect, DT_CENTER);
EndPaint(mainWnd, &ps);
}
如果NC或NL发生变化,我怎样才能成功更新显示的文本?