2014-10-28 72 views
0

我們用下面的代碼來填充對話框中的消息,當出現消息的消息以藍色高亮顯示 - 就像我們選擇使用鼠標的消息。我希望消息在出現時不要選擇。任何人都可以幫助我解決這個問題。消息以藍色高亮顯示,在VC++模態對話框

CDialog::OnInitDialog(); 
CFont *m_pFont = new CFont(); 
LOGFONT lf; 
memset(&lf, 0,sizeof(LOGFONT)); 
lf.lfHeight = 16;   
lf.lfWeight = FW_BOLD; 
strncpy_s(lf.lfFaceName,"Arial",6); 
m_pFont->CreateFontIndirectA(&lf); 
GetDlgItem(IDC_EDIT1)->SetFont(m_pFont,TRUE); 
m_message.SetWindowTextA((LPCTSTR)Message); 
return TRUE; 

回答

0

只要編輯框變爲選定項目,選擇將被設置爲所有文本。如果編輯框是選項卡順序中的第一個,或者如果您選中它或單擊它,則會選中所有字符。您可以通過捕獲EN_SETFOCUS事件和重置自己的選擇覆蓋此行爲:

void CMyDlg::OnEnSetfocusEdit1() 
{ 
    m_edit1.SetSel(0, 0); // or (-1, -1) to set the selection at the end 
} 
+0

嗨,馬克,我使用的Visual Studio 2012 framwork,在這個VC++版本沒有所謂的「SetSel」爲函數GetDlgItem – Amitav 2014-10-28 14:39:39

+0

@Amitav財產你必須首先將結果轉換爲「CEdit」。 – 2014-10-28 14:40:38

+0

不,m_message和IDC_EDIT1是SetWindowTextA之後的類型CEdit – Amitav 2014-10-28 14:53:13