CSliderCtrl逆向调整&CTooltips响应--向左累加或向上累加

来源:互联网 发布:电脑编程语言有哪些 编辑:程序博客网 时间:2024/05/20 07:53


参考:http://wenku.baidu.com/view/5821795e3b3567ec102d8a6b.html (推荐读一读这篇文章)

参考:http://bbs.csdn.net/topics/190108914

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 

 

我们常用的CSliderCtrl的话,都是为向右累加 或 向下累加:

 

要实现逆向的话,不能直接实现的了,下边介绍一种使用了的方法。

我们使用Slider是为了获取一个范围,需要:

获取范围 & 同时我们也会要指定一个缺省的范围 & 再一点,我们需要自己定制ToolTips提示

假如我们设置的范围是[0,100]

1. 自己定义两个函数: 完成转换

void CXXXDialog::SetRangePos(int iPos)

{

      m_slider.SetPos(100 - iPos);

}

int CXXXDialog::GetRangePos()

{

   return 100 - m_slider.GetPos();

}

 

2. 定制tooltips :需要Slider控件的属性Tooltips为True

     Slider控件本身就带有Tooltips,我们只要添加Tooltips响应处理即可

  (据参考文档上介绍,所有的CWnd都在pThreadState里面放的有Tooltips,都可以轻松实现Tooltips提醒)

 

a. 定义事件响应

ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify);

 

b.定义响应函数中的处理: 

 
BOOL CXXXDialog::OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult){TOOLTIPTEXT *pToolTipText = (TOOLTIPTEXT *)pNMHDR;UINT nID =pNMHDR->idFrom;if (pToolTipText->uFlags & TTF_IDISHWND){// idFrom is actually the HWND of the toolUINT nCtrlID = ::GetDlgCtrlID((HWND)nID);<strong>if(nCtrlID == IDC_SLIDER_XXX)</strong>{//  这里就是你要显示的Tooltips,可以根据需要来定制CString strToolTips;strToolTips.Format(_T("%d"), GetRangePos());_tcscpy(pToolTipText->lpszText, strToolTips);pToolTipText->hinst = NULL;return(TRUE);}}return(FALSE);}

 

 

 

0 0
原创粉丝点击