C & C++/MFC 컨트롤
[ToolTip] 동적 툴팁
izen8
2011. 5. 21. 20:04
class CToolTipDlg : public CDialog
{
// Construction
public:
void OnNeedText(NMHDR *pnmh, LRESULT* pResult);
CToolTipDlg(CWnd* pParent = NULL); // standard constructor
CToolTipCtrl m_ctrlTT; // 인스턴스 선언
// Dialog Data
//{{AFX_DATA(CToolTipDlg)
enum { IDD = IDD_TOOLTIP_DIALOG };
CSliderCtrl m_ctrlSlider;
//}}AFX_DATA
//...
}
// ToolTipDlg.cpp
BEGIN_MESSAGE_MAP(CToolTipDlg, CDialog)
//{{AFX_MSG_MAP(CToolTipDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_NOTIFY(TTN_NEEDTEXT, NULL, OnNeedText) // 추가
END_MESSAGE_MAP()
BOOL CToolTipDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_ctrlTT.Create(this);
//m_ctrlTT.AddTool(&m_ctrlSlider, _T("이것으로 보륨을 조절하세요."));
m_ctrlTT.AddTool(&m_ctrlSlider);
return TRUE; // return TRUE unless you set the focus to a control
}
BOOL CToolTipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
m_ctrlTT.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
void CToolTipDlg::OnNeedText(NMHDR *pnmh, LRESULT *pResult)
{
TOOLTIPTEXT *pttt = (TOOLTIPTEXT *)pnmh;
if(pttt->hdr.idFrom == (UINT)m_ctrlSlider.GetSafeHwnd())
{
int pos = ㅊ.GetPos();
wsprintf(pttt->szText, "현재 입력값: %d", pos);
}
}
/*
Slider 컨트롤을 Control 형 멤버 변수 연결 : m_ctrlSlider
*/