다이얼로그박스에 툴팁을 추가하려면

툴팁은 CToolTipCtrl 클래스를 이용하면 쉽게 구현할 수 있습니다. 먼저 Create()를 호출해서 툴팁 객체를 생성합니다. 그리고 나서 AddTool()를 호출해 각각의 컨트롤과 툴팁 문자열을 연결해 줍니다. 여기서 툴팁 문자열을 표시해 주는 함수는 ReplyEvent()이며, 툴팁 컨트롤 객체를 생성해 주고 컨트롤과 연결할 수 있는 가장 적당한 곳은 WM_INITDIALOG 메시지의 핸들러(OnInitDialog())입니다.

이렇게 툴팁을 초기화해 준 후에 ReplyEvent()를 호출하면 툴팁을 볼 수 있으며, 나머지 처리는 PreTranslateMessage()에서 담당합니다.

[code lang=”cpp”]

void CTooltipDlg::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTooltipDlg)
DDX_Control(pDX, IDOK, m_btnOK);
DDX_Control(pDX, IDCANCEL, m_btnCancel);
DDX_Control(pDX, IDC_EDIT, m_edit);
//}}AFX_DATA_MAP
}

BOOL CTooltipDlg::OnInitDialog() {
CDialog::OnInitDialog();
// 툴팁 컨트롤을 생성해 준다.
m_tooltip.Create(this);
// AddTool 함수에 컨트롤 객체의 포인터와 툴팁 문자열을 설정한다.
m_tooltip.AddTool(&m_edit, "여기에 이름을 넣으세요");
m_tooltip.AddTool(&m_btnOK, "여기를 누르면 확인입니다");
m_tooltip.AddTool(&m_btnCancel, "여기를 누르면 취소입니다.");
return TRUE;
}

BOOL CTooltipDlg::PreTranslateMessage(MSG* pMsg) {
switch(pMsg->message) {
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MOUSEMOVE:
// 툴팁을 보여 준다.
m_tooltip.RelayEvent(pMsg);
}
return CDialog::PreTranslateMessage(pMsg);
}
[/code]

zemna

Programmer/Web/Mobile/Desktop

You may also like...

Leave a Reply