C / C ++:使用带有winapi的DrawText更新文本

时间:2018-04-19 19:41:12

标签: c++ c winapi

我正在编写一个简单的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发生变化,我怎样才能成功更新显示的文本?

0 个答案:

没有答案