按钮未更新

时间:2018-10-17 04:22:24

标签: c++ desktop-application

我有一个正在开发的应用程序,一个游戏,并且卡住了一个按钮,没有进行(视觉上)更新。

该按钮是一个暂停按钮。当应用启动时,它被禁用(具有WS_DISABLED样式),但是当用户启动游戏时,我只是删除了负责禁用它的样式(WS_DISABLED)。

问题是:按钮(在视觉上)保持为禁用的样式(删除样式时)。
或保留(启用时)样式(添加样式时)。

但是,单击按钮后按钮已正确更新。我认为这是一个重涂/更新问题。

我试图重新绘制窗口(没有成功):

RedrawWindow(hWnd,NULL,NULL,RDW_ALLCHILDREN | RDW_UPDATENOW);

这是WinProc函数中的代码片段:

switch (message) {
case WM_CREATE:
    CreateControls(hWnd);
    break;
case WM_COMMAND:
{
    switch (HIWORD(wParam)) {
    case BN_CLICKED:
        switch (LOWORD(wParam)) {
        case 3:
        {
            char text[50];
            GetDlgItemTextA(hWnd, 3, text, 50);
            HWND pauseB = GetDlgItem(hWnd, 4);
            LONG style = GetWindowLong(pauseB, GWL_STYLE);
            if (strncmp(text, "Start", strlen(text)) == 0) {
                SetDlgItemTextA(hWnd, 3, "Stop");
                SetWindowLong(pauseB, GWL_STYLE, style & ~WS_DISABLED);
                std::thread bt(RunGame, hWnd);
                bt.detach();
            } else {
                SetDlgItemTextA(hWnd, 3, "Start");
                SetWindowLong(pauseB,GWL_STYLE,style | WS_DISABLED);
            }
            RedrawWindow(hWnd,NULL,NULL,RDW_ALLCHILDREN | RDW_UPDATENOW);
            //SendMessage(hWnd, WM_PAINT, NULL, NULL);
        }
        default:
            break;
        }
        break;
    default:
        break;
    }
}
break;
// other cases...
}

我可能承认我对c ++不太了解。非常抱歉我的错误。

0 个答案:

没有答案