다음을 통해 공유


In-Place 툴팁을 구현하는 방법

현재 위치 도구 설명은 잘린 개체의 텍스트 문자열을 표시하는 데 사용됩니다. 일러스트레이션은 도구 설명 컨트롤 참조하세요.

일반 도구 설명과 현재 위치 도구 설명의 차이점은 위치 지정입니다. 기본적으로 마우스 포인터가 연결된 도구 설명이 있는 영역을 마우스로 가리키면 도구 설명이 영역에 인접하게 표시됩니다. 그러나 도구 설명은 창이며 SetWindowPos를 호출하여 어디든지 원하는 곳에 배치할 수 있습니다. 인라인 툴팁을 만드는 것은 도구 설명 창을 텍스트 문자열 위에 덮도록 배치하는 일입니다.

알아야 할 사항

기술

필수 구성 요소

  • C/C++
  • Windows 사용자 인터페이스 프로그래밍

지시

In-Place 툴팁 위치 설정

현재 위치 툴팁을 배치할 때 세 개의 사각형을 추적해야 합니다.

  1. 전체 레이블 텍스트를 둘러싸는 사각형입니다.
  2. 도구 설명 텍스트를 둘러싸는 사각형입니다. 도구 설명 텍스트는 전체 레이블 텍스트와 동일하며 일반적으로 크기와 글꼴이 동일합니다. 따라서 두 텍스트 사각형은 일반적으로 크기가 동일합니다.
  3. 도구 설명 창 사각형입니다. 이 사각형은 포함하고 있는 툴팁 텍스트 사각형보다 약간 더 큽니다.

세 개의 사각형은 다음 그림에서 개략적으로 표시됩니다. 레이블 텍스트의 숨겨진 부분은 회색 배경으로 표시됩니다.

긴 문자열을 보여주는 다이어그램이 있으며, 그 중 절반은 회색 배경이고, 동일한 문자열이 더 큰 도구 설명 창 사각형 내에 있습니다.

자리에서 도구 설명을 작성하려면 도구 설명 텍스트 사각형이 레이블 텍스트 사각형을 덮도록 배치해야 합니다. 두 사각형을 정렬하는 절차는 비교적 간단합니다.

  1. 레이블 텍스트 사각형을 정의합니다.
  2. 도구 설명 텍스트 사각형이 레이블 텍스트 사각형에 오버레이되도록 도구 설명 창을 배치합니다.

실제로 두 텍스트 사각형의 왼쪽 위 모서리를 맞추는 것으로 충분합니다. 레이블 텍스트 사각형과 정확히 일치하도록 도구 설명 텍스트 사각형의 크기를 조정하려고 하면 도구 설명 표시에 문제가 발생할 수 있습니다.

이 간단한 구성표의 문제는 도구 설명 텍스트 사각형을 직접 배치할 수 없다는 것입니다. 대신 도구 설명 창 사각형을 레이블 텍스트 사각형의 왼쪽 위로 살짝 배치하여 두 텍스트 사각형의 모퉁이가 일치하도록 해야 합니다. 즉, 도구 설명 창 사각형과 포함된 텍스트 사각형 사이의 오프셋을 알아야 합니다. 일반적으로 이 오프셋을 확인하는 간단한 방법은 없습니다.

In-Place 툴팁 구현

다음 코드 조각에서는 TTN_SHOW 처리기에서 TTM_ADJUSTRECT 메시지를 사용하여 인플레이스 툴팁을 표시하는 방법을 보여 줍니다. 당신의 애플리케이션은 레이블 텍스트가 잘리고 있음을 나타내며, 이는 프라이빗 fMyStringIsTruncated 변수를 TRUE로 설정하여 수행됩니다. 처리기는 GetMyItemRect 애플리케이션 정의 함수를 호출하여 레이블 텍스트 사각형을 검색합니다. 이 사각형은 TTM_ADJUSTRECT을(를) 사용하여 툴팁 컨트롤에 전달되고, 그에 해당하는 창 사각형을 반환합니다. SetWindowPos는 호출되어 툴팁이 레이블 위로 배치됩니다.

case TTN_SHOW:
            
    if (fMyStringIsTruncated) 
    {
        RECT rc;
        
        GetMyItemRect(&rc);
        
        SendMessage(hwndToolTip, TTM_ADJUSTRECT, TRUE, (LPARAM)&rc);
        
        SetWindowPos(hwndToolTip, NULL, rc.left, rc.top, 0, 0, 
                     SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
    }

이 예제에서는 도구 설명의 크기를 변경하지 않고 위치만 변경합니다. 두 텍스트 사각형은 왼쪽 위 모서리에 정렬되어 있지만, 꼭 같은 크기를 가지는 것은 아닙니다. 실제로 차이는 일반적으로 작으며 대부분의 용도로 이 방법을 사용하는 것이 좋습니다. SetWindowPos을(를) 원칙적으로 사용하여 도구 설명의 크기를 변경하고 재배치할 수 있지만, 그렇게 하면 예측할 수 없는 결과가 초래될 수 있습니다.

발언

버전 5.80 일반적인 컨트롤은 새 메시지 TTM_ADJUSTRECT추가하여 현재 위치 도구 설명의 사용을 간소화합니다. 툴팁이 겹쳐질 레이블 텍스트 사각형의 좌표와 함께 이 메시지를 보내면 적절한 위치에 배치된 툴팁 창 사각형의 좌표가 반환됩니다.

도구 설명 컨트롤 사용