오픈소스에서 발췌.
우선 특정 컨트롤에 툴팁을 띄워야 하는데, 그 컨트롤이 포커스를 가지고 있을 때에 띄우게 가정한다.
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);
}
댓글 없음:
댓글 쓰기