2012-04-26 1045 views
2

我在對話框中添加了一個簡單的Cedit控件,並且有一個OnEnChangeEdit回調。我試圖來檢索框中鍵入的文本,但只能獲得什麼是在調用輸入下面的printf的第一個字符:MFC中的CEdit和GetwindowText

void MFCDlg::OnEnChangeEdit() { 
    CString s; 
    m_platformSliceOverrideEditBox.GetWindowText(s); 
    _cprintf("%s", s.GetString()); 
} 

如果它有助於我使用Unicode字符集彙編。

回答

2

_cprintf預計ansi字符串。如果您使用的是unicode,那麼它將停止在第一個字符處,因爲第二個字節將爲空。

使用_tcprintf而不是當您構建爲unicode時會期望寬字符串。

+0

感謝這個工作!但是當我使用uni-code編譯時,我怎麼一直能夠使用_cprintf?打印std :: string和char *時_cprintf的行爲都很好。 – 2012-04-26 11:25:44

+0

std :: string是單字節。你想爲unicode的std :: wstring。 – GazTheDestroyer 2012-04-26 11:31:00