记得以前在VC上开发的时候,遇到过怎么去求一段文字的高度,那时候的做法是先把文件写到内存上,然后获取内存的高度,今天查看Duilib的渲染引擎的时候,看到了另外以一种方法,故此记录下来。以便以后翻阅,后面有时间同样把以前的那种方法也贴上上来,以作比较。
SIZE CRenderEngine::GetTextSize( HDC hDC, CPaintManagerUI* pManager , LPCTSTR pstrText, int iFont, UINT uStyle ) { CDuiString sText = pstrText; CPaintManagerUI::ProcessMultiLanguageTokens(sText); pstrText = sText; SIZE size = {0,0}; ASSERT(::GetObjectType(hDC)==OBJ_DC || ::GetObjectType(hDC)==OBJ_MEMDC); if( pstrText == NULL || pManager == NULL ) return size; ::SetBkMode(hDC, TRANSPARENT); HFONT hOldFont = (HFONT)::SelectObject(hDC, pManager->GetFont(iFont)); GetTextExtentPoint32(hDC, pstrText, _tcslen(pstrText) , &size); ::SelectObject(hDC, hOldFont); return size; }