close
會要設定精準的寬度是因為後面static text後面有時候要接Edit control
如果寬度設定不夠精準就會發生離很遠的情況
正常會先用方法1,如果後面不放其他控制項的話作為設定寬度就夠了
如果後面要放控制項就會用方法2
(實作結果圖片放在文末)
方法1:
// 獲取所需字串 可長可短
CString msg;
msg.LoadStringW(IDS_VFX_NUM_OF_OPEN);
// 獲取字串的長度(pixel)
GetDlgItem(IDC_STATIC)->SetWindowTextW(msg.GetBuffer());
CDC *pDC = GetDlgItem(IDC_STATIC)->GetDC();
CSize sz = pDC->GetTextExtent(msg);
int szX = sz.cx;
ReleaseDC(pDC);
// 設定位置
GetDlgItem(IDC_STATIC)->SetWindowPos(NULL, n_Xrect, n_Yrect, szX, n_Height, NULL);
方法2:
// 獲取所需字串 可長可短
CString msg;
msg.LoadStringW(IDS_VFX_NUM_OF_OPEN);
// 獲取字串的長度(pixel)
GetDlgItem(IDC_STATIC)->SetWindowTextW(msg.GetBuffer());
CDC *pDC = GetDlgItem(IDC_STATIC)->GetDC();
CSize sz = pDC->GetTextExtent(msg);
int szX = sz.cx;
// 會再用DrawTextW獲取實際繪出的文字寬度
CRect CrText;
CrText.SetRect(n_Xrect, n_Yrect, szX, n_Height);
pDC->DrawTextW(msg, &CrText, DT_LEFT | DT_NOPREFIX | DT_WORDBREAK | DT_CALCRECT);
szX = CrText.Width(); // 獲取新寬度
ReleaseDC(pDC);
// 設定位置
GetDlgItem(IDC_STATIC)->SetWindowPos(NULL, n_Xrect, n_Yrect, szX, n_Height, NULL);
方法1實作=>
方法2實作=>
文章標籤
全站熱搜
留言列表