以下の内容はhttps://blog.systemjp.net/entry/2024/08/09/232155より取得しました。


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



以上の内容はhttps://blog.systemjp.net/entry/2024/08/09/232155より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14