Winapi TextOut () ничего не отображает при первом вызове, отлично работает сразу после - PullRequest
0 голосов
/ 10 октября 2019

Я обнаружил загадку в своем старом коде:

void Viewer::ShowWarningAndRedraw() //called when zoom too big
{
    //clearing the view
    SelectObject(hDC_, GetStockObject(WHITE_BRUSH));
    FillRect(hDC_, rect_, WHITE_BRUSH);

    CString msg = _T("Too zoomed");
    SelectObject(hDC_, GetStockObject(BLACK_PEN));

    /*auto res1 =*/ TextOut(hDC_, 35, rect_.Height()/2 - 5, msg, int(_tcslen(msg)));
    /*auto res2 =*/ TextOut(hDC_, 35, rect_.Height()/2 - 5, msg, int(_tcslen(msg)));//not sure why, but only the second call actually works. both return success.

    Sleep(1000);//flashing the message briefly

    DrawFullView();//redrawing
}

, и действительно, только второй вызов на самом деле работает, в то время как оба успешны (возврат 1). Почему первый вызов не дает видимого вывода? Параметры, очевидно, верны (второй точно такой же вызов отображает желаемое сообщение).

Что мне здесь не хватает?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...