1. 程式人生 > >MFC解決文字編輯框中輸入的文字不能居中的方法

MFC解決文字編輯框中輸入的文字不能居中的方法

如圖,常用的登入註冊介面,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方向)向下的偏移量。