2010-12-08 3 views
0


ExtTextOut GDI API를 연결하고 있습니다. 출력 문자열의 정확한 위치를 검색하고 싶습니다. 나는 내가 RECT의 PARAM에서 또는 X, Y의 PARAMS에서 문자열의 위치를 ​​얻을 수있는 평균 fuOptions의 PARAM에 대한 ETO_CLIPPED을 얻고있다 특정 경우LPtoDP API 문제 사용 (GDI API)

BOOL ExtTextOut( 
    __in HDC hdc, 
    __in int X, 
    __in int Y, 
    __in UINT fuOptions, 
    __in const RECT *lprc, 
    __in LPCTSTR lpString, 
    __in UINT cbCount, 
    __in const INT *lpDx 
); 

.
그러나 내가 LPtoDP API를 사용하여 위치 (RECT 또는 X, Y)를 변환 할 때 잘못된 위치를 얻습니다 (음수 값을 변환하기 전에).

나는 내가 다음 검사시 그러나 나는 그것에 대해 더 유도를 볼 수 없습니다, 그것은 오프셋 잘못을 가지고 추측 :

지도 모드는 MM_TEXT (기본)
GetWindowOrgEx 0,0
GetViewportOrgEx이 0입니다 0
GetWindowExtEx 1,1
GetViewportExtEx가 1,1

사람이 어떤 생각을 가지고 있는가, 어떤 도움이 감사 할 것입니다 디. 감사합니다. .

+0

* 연결 중입니까? 잘못된 장치 컨텍스트를 사용하고있는 것처럼 보입니다. –

+0

정교하게 만들 수 있습니까? ExtTextOutW 호출에서 잘못된 DC를 어떻게 사용할 수 있습니까? – Momico

답변

0

명백하게, ExtTextOut fuOptions PARAM 에 ETO_CLIPPED 지정이 디바이스 컨텍스트 형 표시 장치 컨텍스트 인 것이 보장되고, 디바이스 컨텍스트되지 않는다는 것을 의미하는 텍스트가 클립에 출력되는 것을 의미하지는 않는다 필자의 경우처럼 사용 된 메모리 장치 컨텍스트가 될 수 있으므로 올바른 좌표를 포함하지 않습니다.

msdn : ETO_CLIPPED 텍스트가 사각형으로 잘립니다.