CDCを使用せずに、またはディスプレイにリンクされていないCDCを使用せずに、文字列の幅をピクセル単位で取得する方法はありますか。文字列幅を取得する必要があるクラスは、CWnd :: GetDC()を使用するためにCWndから継承せず、既存のCDCを関数に渡す方法はありません。
ディスプレイにリンクされていないダミーのCDCを作成しようとしましたが、これによりMFCがクラッシュします。理想的には次のようなものです。
m_font = new CFont();
m_font->CreatePointFont(size * 10, _T("Arial"));
m_tempCDC = new CDC();
m_tempCDC->SelectObject(m_font);
return m_tempCDC->GetOutputTextExtent(_T("Test")).cx;
編集:文字列リテラルの代わりにフォント名変数を使用する必要があります。