2013-10-03 2 views
1

내가 유니 코드 모드에서 내 응용 프로그램을 구축하고에 LPWSTR하고 싶어 내가 좋아하는 멤버 변수로 CString을을 포함하는 하나 하나 개 개의 클래스가 LPWSTR.Basically에 CString을 변환CString을은 MFC

class MyClass 
{ 
    CString TreeNodeName; 
} 

그리고 난 구조를 다음 사용하고자하는 트리 컨트롤에

TVINSERTSTRUCT tvInsert; 
tvInsert.hParent = ParentNode; 
tvInsert.hInsertAfter = NULL; 
tvInsert.item.mask = TVIF_TEXT; 
tvInsert.item.lParam = (long)ClassObject; 
tvInsert.item.pszText = ClassObject->TreeNodeName; //Need this conversion 

를 항목을 삽입하는 방법 CString을 TreeNodeName을 변환하는 제발 도와주세요; to tvInsert.item.pszText?

+1

나는 이것에 대한 답을 알지 못하지만, CString의 텍스트에 어떤 인코딩을 사용하고 있는지 알고 있습니다. 당신은 그 정보를 알지 못한다면 질문에 답할 수 없다는 것을 알 수 있습니다. 만약 당신이 모르는 것이라면 아마도 당신은 어디에서 TreeNodeName 값을 얻을 수 있는지 설명 할 수 있습니다. – john

+0

@john 빠른 답장을 보내 주셔서 감사합니다. 기본적으로 XML 파일의 일부 값을 일반 ASCII 인코딩 인 TReeNodeName에 저장합니다. –

+0

유니 코드 모드에 있기 때문에 Jonathan Potter가 말한 것처럼 직접 이해할 수 있습니다. 어떤 종류의 char set 번역이 필요하다고 생각했습니다. – john

답변

4

질문을 잘못 이해하지 않았다면 CStringLPCTSTR으로 캐스팅하여 Windows API 함수와 함께 사용해야합니다. See here for a description.

회원이 LPTSTR이므로 다시 const로 변환해야합니다. 그러나 입력 한 문자열이 수정되지 않았으므로 TVM_INSERTITEM과 같은 동작에는 안전해야합니다.

tvInsert.item.pszText = (LPTSTR)(LPCTSTR)ClassObject->TreeNodeName; 
+0

안녕하세요, 내 편에서 어리석은 실수 하나 고마워요. :( –