OLE 객체로 문자열을 보낼때는 조심해야 합니다.
UnicodeString / AnsiString 을 사용하면 안 되구요. BSTR형을 사용하여야 하는데,
C++ Builder에서는 WideString을 이용하면 됩니다.
다음과 같이 하시면 됩니다. C++ Builder XE에서 테스트 되었습니다.
Variant MSWord;
MSWord = GetActiveOleObject("Word.Basic");
WideString strText = RichEdit1->SelText;
MSWord.OleProcedure( "Insert", strText.c_bstr() );
웨잇포림 님이 쓰신 글 :
: 안녕하세요.
:
: 그동안 C++Builder 2010 버전에서 다음과 같이 RichEdit1에서 선택한 텍스트를 열려있는 MS Word 문서에 보내는 기능을 사용하였습니다.
: MSWord = GetActiveOleObject("Word.Basic");
: MSWord.OleProcedure("Insert", RichEdit1->SelText.t_str());
:
: 그런데 C++Builder XE2 버전에서는 위의 코드가 제대로 동작하지 않습니다. 그래서 아래와 같이 t_str()을 c_str()로 바꾸어 실행하면 선택된 텍스트 일부분만 MS Word로 보내집니다. 선택된 텍스트 모두가 보내져야 하는데 일부분만 보내집니다.
:
: MSWord = GetActiveOleObject("Word.Basic");
: MSWord.OleProcedure("Insert", RichEdit1->SelText.c_str());
:
: 해결책이 없을까요?
:
: 감사합니다.
|