pdc-> GetOutputTextExtent () падает - PullRequest
0 голосов
/ 26 апреля 2019

pdc-> GetOutputTextExtent () аварийно завершает работу, если nCount = -1. Зачем? В руководстве написано:

nCount Определяет количество символов в строке. Если nCount равен -1, длина вычисляется.

https://docs.microsoft.com/en-us/cpp/mfc/reference/cdc-class?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DEN-US%26k%3Dk(AFXWIN%2FCDC%3A%3AGetOutputTextExtent)%3Bk(CDC%3A%3AGetOutputTextExtent)%3Bk(GetOutputTextExtent)%3Bk(DevLang-C%2B%2B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&view=vs-2017#getoutputtextextent

1 Ответ

0 голосов
/ 26 апреля 2019

Кажется, руководство неверно.Внутренне, это реализовано так:

_AFXWIN_INLINE CSize CDC::

GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
    {
        ASSERT(m_hDC != NULL);
        SIZE size;
        VERIFY(::GetTextExtentPoint32(m_hDC, lpszString, nCount, &size));
        return size;
    }

И, GetTextExtentPoint32 документы делают не упоминание, что -1 будет автоматически вычисляться.

Однако, естьперегрузить родного брата, взяв только строку, которая сама считает:

_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(const CString& str) const
    {
        ASSERT(m_hDC != NULL);
        SIZE size;
        VERIFY(::GetTextExtentPoint32(m_hDC, str, (int)str.GetLength(), &size));
        return size;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...