【Visual C++ 2008】【MFC】
ダイアログのコントロールに表示する文字列の、幅と高さのピクセル数(ドット数)を取得する方法。 ダイアログクラス(CDialogの派生)に実装する。
// 引数dataはUnicode文字列
// CSizeクラスにてサイズ返却
CSize CXxxxDlg::xxxx(const wchar_t *data)
{
CSize size;
size.cx = 0;
size.cy = 0;
// デバイスコンテキスト取得
CDC *pDC = GetDC();
// ダイアログのフォント取得
CFont *pFont = GetFont();
LOGFONT logfont;
pFont->GetLogFont(&logfont);
// logfont.lfFaceNameにフォント名が格納されている
//
//
//
// ダイアログのフォントをデバイスコンテキストに設定
CFont font;
font.CreateFontIndirect(&logfont);
CFont *pFontOld = pDC->SelectObject(&font);
// 文字列のサイズ取得
size = pDC->GetOutputTextExtent(data);
// size.cxに幅ピクセル数、size.cyに高さピクセル数が格納されている
//
//
//
// デバイスコンテキストを元に戻す
pDC->SelectObject(pFontOld);
// デバイスコンテキスト解放
ReleaseDC(pDC);
return size;
}
(メモ)
- 取得したデバイスコンテキストは、使用後、必ず元に戻して解放する
- MSDNライブラリの「CDC」「CFont」「CWnd::GetDC」「CWnd::GetFont」「CWnd::ReleaseDC」を参照のこと