MFC解決文字編輯框中輸入的文字不能居中的方法
阿新 • • 發佈:2019-02-13
如圖,常用的登入註冊介面,edit_control文字編輯框的預設文字位置總是靠左上居中,想要使文字靠左垂直居中的方法如下(當然可能有其他方法,這裡講一下我的做法):
1、首先要設定Multiline為True,另外最好設定Auto HScroll和Auto VScroll為False;
2、然後在OnInitDialog()函式中新增如下程式碼即可(其中m_cEditUserId和m_cEditPasswd分別為兩個編輯框關聯的control類別的變數,型別為CEdit)
//UserId的設定 CRect cRect = CRect(0, 0, 0, 0); m_cEditUserId.GetClientRect(&cRect); TEXTMETRIC textMetric; CDC *pcDC = m_cEditUserId.GetDC(); pcDC->GetTextMetrics(&textMetric); int nFontHight = textMetric.tmHeight + textMetric.tmExternalLeading; int nOffsetY = (cRect.Height() - nFontHight)/2;//計算文字向下偏移量 cRect.OffsetRect(0, nOffsetY);//設定向下偏移 m_cEditUserId.SetRectNP(cRect); //UserPasswd的設定 cRect = CRect(0, 0, 0, 0); m_cEditPasswd.GetClientRect(&cRect); pcDC = m_cEditPasswd.GetDC(); pcDC->GetTextMetrics(&textMetric); nFontHight = textMetric.tmHeight + textMetric.tmExternalLeading; nOffsetY = (cRect.Height() - nFontHight)/2; cRect.OffsetRect(0, nOffsetY); m_cEditPasswd.SetRectNP(cRect); m_cEditPasswd.SetPasswordChar('*');//設定輸入回顯文字為*
這樣做具體的原理就是將文字編輯框設定成多行,然後設定輸入文字在文字編輯框垂直方向(也就是Y方向)向下的偏移量。