2014년 10월 26일 일요일

컨트롤에 툴팁 띄우는 방법.

오픈소스에서 발췌.

우선 특정 컨트롤에 툴팁을 띄워야 하는데, 그 컨트롤이 포커스를 가지고 있을 때에 띄우게 가정한다.

80자 이상 툴팁에 글자를 등록할 수 있을 것 같다.

우선 포커스를 갖게 됐을 때의 이벤트를 선언해주고....(아래는 예)

void CMACAddressChangerDlg::OnEnSetfocusMACEdit()    //어떤 컨트롤이 Focus를 가지면..
{
 CString tmpStrTitle, tmpStrText;
 EDITBALLOONTIP ebt = {0};
 ebt.cbStruct = sizeof(ebt);
 ebt.ttiIcon = TTI_INFO; //스타일??
 if(tmpStrText.LoadString(IDS_BALLOONTIP)) //IDS...이것은 문자열
 {
  ebt.pszText = CT2CW(tmpStrText);
  if(tmpStrTitle.LoadString(IDS_BALLOONTITLE))
  {
   ebt.pszTitle =  CT2CW(tmpStrTitle);  
   if(Edit_ShowBalloonTip(m_MACEdit.GetSafeHwnd(), &ebt)) //Edit 컨트롤에 툴팁을 띄우는 함수. 툴팁을 띄우면 TRUE, 못띄우면 FALSE
   {
    SetTimer(BALLTIMEREVID, 3000, NULL);
   }
  }
 }
}

위에서 타이머를 설정해서 3초간 툴팁을 띄우게 했으니, OnTimer를 선언해서 툴팁의 삭제와 타이머의 삭제를 해주어야 한다.

void CMACAddressChangerDlg::OnTimer(UINT_PTR nIDEvent)
{
 if( nIDEvent == BALLTIMEREVID )
 {
  if(Edit_HideBalloonTip(m_MACEdit.GetSafeHwnd())) //툴팁 숨김.
  {
   KillTimer(BALLTIMEREVID);
  }
 }
 CDialog::OnTimer(nIDEvent);
}

댓글 없음: