C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50370] Re:WideString의 특정 문자가 깨지는 현상..(AdvStringGrid)
h.k [] 1586 읽음    2007-08-24 17:09
흠....
혹시 widestring 을 일반 AnsiString 으로 변환 해서 그런게 아닐런지요..

예전에 ActiveX 만들때 ASP 에서 WideString 으로 넘어 온걸 일반
chars 및 String 으로 변환 할때 깨지던 문제가 있었는데요

WideCharToMultiByte  이놈으로 해결했는데
이 함수 사용하셔서 캐스팅 해보시면 어떠실런지..

정확한 답변이 아니라 죄송....

src -> widestring
dest -> 일반 char * buff

WideCharToMultiByte(CP_ACP, 0, src.bstrVal, -1, dest , sizeof(dest), NULL, NULL);



서비 님이 쓰신 글 :
: 정말  몇일을 고생하고 하다가 하다가 안되서 이렇게 도움을 요청합니다.
:
: 첨부파일에 이미지를 보시면..
:
: 상단에 있는 그리드가 WideString Type이구요..
: 하단에 있는 그리드가 AnsiString Type입니다.
:
: 總經理          <- 요놈이
: |\~=}뱓-    <- 이렇게 보입니다.
:
: 뒤에 문자에 상관없이..
: 일반적인 문자들은 넣어봐도 괜찮은데..
: 유독 제일 앞에 總 이 문자가 들어가면 무조건 깨집니다.
: (물론 비슷하게 깨지는 문자가 더 있을거 같습니다.)
:
: 단순히 Edit 창에서는 잘 보이는데요..
:
: 소스를 찾아보면 텍스트의 Size를 구하는 부분인거 같고요..
:       if WordWrap or MultiLineCells then
:         Result.cy := DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),r,DT_LEFT or DT_WORDBREAK or DT_NOPREFIX or DT_CALCRECT,nil)
:       else
:         Result.cy := DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),r,DT_LEFT or DT_SINGLELINE or DT_NOPREFIX or DT_CALCRECT,nil);
:
:
: Grid에 그리는 부분이 다음 같습니다.
:       if Win32Platform = VER_PLATFORM_WIN32_NT then
:       begin
:         Canvas.Brush.Style := bsClear;
:
:         rect.Left := rect.Left - 1;
:         rect.Right := rect.Right - 1;
:
:         if CellWW or MultiLineCells then
:           DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),rect,DT_LEFT or DT_NOPREFIX or DT_WORDBREAK OR DrawStyle,nil)
:         else
:           DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),rect,DT_LEFT or DT_NOPREFIX or DrawStyle or DT_SINGLELINE or DT_END_ELLIPSIS,nil);
:       end
:       else
:       begin
:         ExtTextOutW(Canvas.Handle,rect.Left,rect.Top,ETO_CLIPPED,@rect,PWideChar(ws),Length(ws),nil);
:       end;
:
: C++ Builder 6인데요..
: 저 함수 자체의 버그인가요?
: 뭔가 해결 방법이 있을거 같은데..
: 몇일 째 계속 해결도 못하고 헤매고 있습니다;; 도와주세요 ㅜㅜ

+ -

관련 글 리스트
50342 WideString의 특정 문자가 깨지는 현상..(AdvStringGrid) 서비 1691 2007/08/21
50370     Re:WideString의 특정 문자가 깨지는 현상..(AdvStringGrid) h.k 1586 2007/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.