/// <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);
}