2012-06-28 3 views
0

rect 안에 텍스트를 그려야합니다. 그러나 텍스트가 길면 여분의 텍스트를 잘라냅니다. 텍스트를 줄 바꿈해야 텍스트의 첫 번째 줄에 맞지 않는 부분이 다음 줄로 이동하게됩니다.MFC에서 DrawTextEx로 단어 줄 바꾸기

저는 Google에 DrawText() 대신 DT_CALCRECT 플래그가있는 DrawTextEx()를 사용하라는 제안이있었습니다. 하지만 여전히 작동하지 않습니다.이 플래그를 사용할 때 텍스트가 표시되지 않습니다.

DRAWTEXTPARAMS lpDTParams; 
lpDTParams.cbSize  = sizeof(lpDTParams); 
lpDTParams.iLeftMargin = 1; 
lpDTParams.iRightMargin = 1; 
lpDTParams.iTabLength = 4; 
lpDTParams.uiLengthDrawn = 0; 

pDC->DrawTextExA(sTemp, rc, DT_NOCLIP|DT_CENTER|DT_WORDBREAK|DT_CALCRECT, &lpDTParams); 

모든 의견을 크게 기뻐합니다. 감사합니다.

+1

글쎄, 그것은 당신이 당신의 CRect를 어떻게 설정 했느냐에 달려 있습니다. DT_CALCRECT는 텍스트의 모든 줄에 맞게 밑면을 늘리지 만 너비는 충분해야합니다. DT_CALCRECT를 사용하지 않는 것이 좋습니다. 고정 된 영역을 그리려는 곳이 있고 (텍스트가 너무 큰 경우 DT_NOCLIP에서 어떤 일이 일어나는지 고려하십시오). 마지막으로 CRect 내용을 확인하십시오. ** 반드시 텍스트 너비에 맞게 충분히 커야합니다. –

+3

또한 DT_CALCRECT를 전달하면 아무 텍스트도 그려지지 않으며, rect를 모두 맞춰야하는 정도를 계산하는 것입니다. 계산 된 rect를 사용하여 그리려면 DrawTextEx를 다시 호출해야합니다. –

+0

답장을 보내 주셔서 감사합니다. – dearvivekkumar

답변

0

직사각형을 계산할 필요가 없습니다.

다음 플래그를 사용하십시오. DT_LEFT | DT_EDITCONTROL | DT_WORDBREAK. 조언의

한 조각 :

유니 코드 또는 ANSI 특정 함수 이름을 사용하지 마십시오.

프로젝트 설정에 따라 컴파일러가 올바른 버전을 선택합니다. 이렇게하면 응용 프로그램을 이식 할 수 있습니다.

+0

감사합니다 JohnCz DT_EDITCONTROL을 사용하면 목적이 흐려집니다. – dearvivekkumar