MFC Tooltip 출력하기
- Develop/C,C++,MFC,API,Qt
- 2020. 12. 13.
반응형
728x90
반응형
Introduction
출력된 이미지의 Exif 정보를 읽어 각각의 이미지 위에 Tooltip정보를 출력하는 것이 목표로서, 이번 포스팅은 Tooltip 사용방법에 대해 알아보고자 합니다. Exif는 github에 올려진 코드를 찾으면 쉽게 활용할 수 있습니다. 하지만, 너무 방대한 코드를 사용할 경우 오히려 좋지 않은 결과를 나타낼 수 있으니 적절히 테스트 이후, 진행하시는 걸 추천드립니다.
결과물 미리보기
원하는 목적은 PIcture control에 ToolTip 정보를 출력하여 사용자에게 이미지의 Exif를 출력해주는 것입니다.
MFC - Dialog의 Picture Control Properties 설정
가장 먼저 Picture control의 속성 중 "Notify" 옵션을 "TRUE"로 변경을 해야합니다. 그렇지 않을 경우, Tooltip 정보가 출력되지 않는 첫번째 문제입니다.
Tooltip 출력 하기
#Step 0 : 변수/함수 선언
MFC Dialog에 아래와 같이 추가합니다.
{
// 생략...
private:
CToolTipCtrl m_tooltip;
public:
void TestTooltip();
}
#Step 1 : 활용하기
void CDatasetManagerDlg::TestTooltip()
{
m_tooltip.Create(this);
m_tooltip.AddTool(this, L"testTooltip");
m_tooltip.AddTool(GetDlgItem(IDC_PIC_LEFT), L"check1");
m_tooltip.AddTool(GetDlgItem(IDC_PIC_CENTER), L"check2");
m_tooltip.AddTool(GetDlgItem(IDC_PIC_RIGHT), L"check3");
}
상위 코드와 같이 create 이후, AddTool() 함수를 이용하여 추가하시면 됩니다. 하지만, OnInitDialog()에 추가하고 실행하게 되면 Toolip이 출력되지 않습니다. 아래의 한가지 작업이 빠졌기때문이죠.
#Step 2: PreTranslateMessage(MSG* pMsg) 추가
MFC 위자드에서 PreTranslateMessage 를 추가합니다. 그리고 아래와 같이 RelayEvent() 함수를 추가합니다.
BOOL CDatasetManagerDlg::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialogEx::PreTranslateMessage(pMsg);
}
이제 추가하게되면, 젤처음 보았던 결과와 같이 출력 됩니다. 이제 여러가지 옵션들에 대해 알아보도록 하겠습니다.
Tooltip 활용하기
Step 1: 툴팁의 Width 설정
m_tooltip.SetMaxTipWidth(10);
Tooltip의 width 설정을 위해 SetMaxTipWidth() 함수를 이용하여 제한 할 수 있습니다. 글자 단위가 아니고 픽셀(?) 단위인듯합니다. 숫자를 변경해가면서 조금씩 확인 해보시기바랍니다. (MSDN페이지 접속하기 ...)
Step 2: 시간 지연
m_tooltip.SetDelayTime(TTDT_AUTOPOP, 3 * 1000); // msc
시간 지연을 위해서는 SetDelayTime() 함수를 사용하면 됩니다. 이때, 1/1000 sec로 설정을 하기때문에 시간 확인 후 출력 하시면 됩니다.
Step 3: 영역지정을 통한 툴팁 출력
-
AddTool 정의
// Registers a tool with the ToolTip control.
BOOL AddTool(_In_ CWnd* pWnd, _In_ UINT nIDText, _In_opt_ LPCRECT lpRectTool = NULL, _In_ UINT_PTR nIDTool = 0);
BOOL AddTool(_In_ CWnd* pWnd, _In_z_ LPCTSTR lpszText = LPSTR_TEXTCALLBACK, _In_opt_ LPCRECT lpRectTool = NULL, _In_ UINT_PTR nIDTool = 0);
AddTool 함수의 정의를 찾아보면 상위와 같습니다. 그래서 특정 영역을 통해 Tooltip을 출력할 수 있습니다.
Step 4: Tooltip Text Update
사용중에 Tooltip의 내용이 업데이트 되어야 하는 경우가 있습니다. 이때는 UpdateTipText() 함수를 사용하면 됩니다.
#정의
// Sets the ToolTip text for a tool.
void UpdateTipText(_In_z_ LPCTSTR lpszText, _In_ CWnd* pWnd, _In_ UINT_PTR nIDTool = 0);
void UpdateTipText(_In_ UINT nIDText, _In_ CWnd* pWnd, _In_ UINT_PTR nIDTool = 0);
함수의 원형에 맞춰서 값을 입력!!
Step ??: 기타 (기타옵션은 직접 찾아서..)
ToolTipCtrl에 정의된 함수입니다. 이 외에도 여러가지 함수들이 있으니, 어떤상황에 사용할 것인지 생각해보시고 추가 및 수정을 하시면 됩니다.
최종결과 : Picture Control에 Tooltip을 이용하여 이미지의 Exif 출력
-
관련 포스팅 : JPG Image Exif 출력하기
최종 목표인 결과는 게으르지 않기위해 블로그에 최종 포스팅!
참고로 Tooltip을 이용하여 줄비움(?)을 하기위해서는 아래의 코드를 추가해야 개행 문자("\r\n" or "\n") 가 적용 됨을 알아두시기 바랍니다.
m_TooltipMain.SetMaxTipWidth(600);
728x90
반응형
'Develop > C,C++,MFC,API,Qt' 카테고리의 다른 글
Visual Studio C++ 32bit / 64bit Debug/Release 빌드 경로 설정 (0) | 2020.12.22 |
---|---|
Visual Studio 정적(Static)/동적(Dynamic) 라이브러리 만들기 (0) | 2020.12.21 |
MFC based socket.io-client-cpp 모듈 (0) | 2020.12.18 |
MFC에서 콘솔 디버깅 하기 (0) | 2020.12.16 |
MFC Dialog 재활용 방법 (0) | 2020.12.15 |
3자리 마다 콤마 추가(for 용량 체크) (0) | 2020.12.12 |
Jpg Image Exif 출력하기 (0) | 2020.12.08 |
MFC custom Listcontrol 사용방법 (0) | 2020.12.07 |
MFC PictureControl에 Mat 이미지 불러오기 (0) | 2020.12.06 |
MFC에서 string 특수문자 제거 (0) | 2020.12.05 |