MFC チェックボックスのテキスト文字に合わせた幅調整する

/// <summary>
/// テキストの幅を計算し、チェックボックスのチェックマーク部分の幅を考慮して、適切なサイズのCRectを返します
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
CRect CalculateCheckboxRect(CButton* pCheckbox, const CString& text)
{
    CDC* pDC = pCheckbox->GetDC();
    CFont* pOldFont = pDC->SelectObject(pCheckbox->GetFont());

    CSize textSize = pDC->GetTextExtent(text);
    pDC->SelectObject(pOldFont);
    pCheckbox->ReleaseDC(pDC);

    // チェックボックスのチェックマーク部分の幅と高さ(システムメトリクスから取得)
    int checkWidth = GetSystemMetrics(SM_CXMENUCHECK);
    int checkHeight = GetSystemMetrics(SM_CYMENUCHECK);

    // 余白を追加(左右に5ピクセルずつ、上下に2ピクセルずつ)
    int width = textSize.cx + checkWidth + 10; // 左右の余白10ピクセル
    int height = max(textSize.cy, checkHeight) + 4; // 上下の余白4ピクセル(2 + 2)

    // x座標に5ピクセル加えて左の余白を確保
    // y座標に2ピクセル加えて上の余白を確保
    return CRect(5, 2, width + 5, height + 2);
}