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
[50342] WideString의 특정 문자가 깨지는 현상..(AdvStringGrid)
서비 [suby] 1690 읽음    2007-08-21 23:37
정말  몇일을 고생하고 하다가 하다가 안되서 이렇게 도움을 요청합니다.

첨부파일에 이미지를 보시면..

상단에 있는 그리드가 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) 서비 1690 2007/08/21
50370     Re:WideString의 특정 문자가 깨지는 현상..(AdvStringGrid) h.k 1586 2007/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.