2012-04-26 2 views
2

대화 상자에 간단한 Cedit 컨트롤을 추가했으며 OnEnChangeEdit 콜백을 사용했습니다. 나는 상자에 입력되는 텍스트를 검색하기 위해 노력하고 있지만 아래의 printf 해당 전화에 입력 무엇의 첫 번째 문자 얻을 수 있습니다 : 그것은 내가 유니 코드 문자 집합을 사용하고 도움이된다면MFC의 CEdit 및 GetwindowText

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

을 편집.

답변

2

_cprintf에는 ansi 문자열이 필요합니다. 유니 코드를 사용하는 경우 두 번째 바이트가 null이되기 때문에 첫 번째 문자에서 중지합니다.

대신 _tcprintf을 사용하면 유니 코드로 빌드 할 때 와이드 문자열을 기대할 수 있습니다.

+0

감사합니다. 하지만 어떻게 유니 코드를 사용하여 컴파일 할 때 _cprintf를 사용할 수 있었습니까? std :: string과 char *를 출력 할 때 _cprintf의 동작은 괜찮습니다. –

+0

std :: string은 1 바이트입니다. 유니 코드의 경우 std :: wstring을 원한다. – GazTheDestroyer