我想在CComboBox控件上用CToolTipCtrl控件显示提示信息,如何做呢?已经能够在editbox控件上使用呢?但是同样的方法用在CComboBox控件上就不行。
成员变量:
CWnd * pSub[3];
CToolTipCtrl m_tip[3];OnInitDialog()中:
pSub[0] = GetDlgItem(IDC_COMBO1);
m_tip[0].Create(pSub[0],TTS_ALWAYSTIP);
m_tip[0].AddTool(pSub[0]);OnMouseMove中:
m_tip[0].UpdateTipText("abcd",pSub[0]);PreTranslateMessage中:
if(m_tip[0].m_hWnd!=NULL)
m_tip[0].RelayEvent(pMsg);上叙同样的方法对editbox控件可以有效,当对CComboBox控件无效,有谁知道原因啊??????
成员变量:
CWnd * pSub[3];
CToolTipCtrl m_tip[3];OnInitDialog()中:
pSub[0] = GetDlgItem(IDC_COMBO1);
m_tip[0].Create(pSub[0],TTS_ALWAYSTIP);
m_tip[0].AddTool(pSub[0]);OnMouseMove中:
m_tip[0].UpdateTipText("abcd",pSub[0]);PreTranslateMessage中:
if(m_tip[0].m_hWnd!=NULL)
m_tip[0].RelayEvent(pMsg);上叙同样的方法对editbox控件可以有效,当对CComboBox控件无效,有谁知道原因啊??????
解决方案 »
- 在VSS中配置为用UltraEdit打开文件的时候,UltraEdit打开的文件有时候为空文件
- listbox绘制的时候如何实现选中状态时,双倍高度
- 谁有visio2000软件?
- 关于listctrl的问题一个~
- 有个问题请教一下:
- 高分请教!有关vckbae上的CMyListBox控件资源泄漏的问题?诚恳指教!!!
- 知道进程名,结束进程,在win2000成功,98下不行,why?
- 怎么得到调用对话框的实例,解决即结贴
- 这样怎么定义连接数据库中的变量?
- 大虾指点一下啊,总有一处错误,谢谢了
- 一个关于多线程串行通讯的问题!!
- 问Serv-U的一个原理性问题~!客户端连接到Server后,它是不是以开线程的方式来解决???
pSub[0] = GetDlgItem(IDC_COMBO1);
CRect rect;
pSub[0]->GetClientRect(rect);
m_tip[0].Create(pSub[0],TTS_ALWAYSTIP);
m_tip[0].AddTool(pSub[0],";adfjd",&rect);
CToolTipCtrl m_tooltip;
CRect rect;OnInitDialog()中:
GetDlgItem(IDC_COMBO1)->GetClientRect(rect);OnMouseMove中:
m_tooltip.Create(this);
m_tooltip.Activate(true);
m_tooltip.SetTipBkColor(RGB(0,144,18));
m_tooltip.SetTipTextColor(RGB(255,254,255));
m_tooltip.SetDelayTime(50);
m_tooltip.SetDelayTime(TTDT_AUTOPOP,8000);
m_tooltip.SetMaxTipWidth(290);
m_tooltip.Activate(true);
m_tooltip.Update(); m_tooltip.AddTool(GetDlgItem(IDC_RESULT),"可以关闭该对话框",&rect);PreTranslateMessage中:
m_tooltip.RelayEvent(pMsg);
m_tooltip.AddTool(GetDlgItem(IDC_COMBO1),"可以关闭该对话框",&rect);OnInitDialog()中:
GetDlgItem(IDC_COMBO1)->GetClientRect(rect);//此句不再需要
CRect rect;OnInitDialog()中:
GetDlgItem(IDC_COMBO1)->GetClientRect(rect);//刚才多写了,需要OnMouseMove中:
m_tooltip.Create(this);
m_tooltip.Activate(true);
m_tooltip.SetTipBkColor(RGB(0,144,18));
m_tooltip.SetTipTextColor(RGB(255,254,255));
m_tooltip.SetDelayTime(50);
m_tooltip.SetDelayTime(TTDT_AUTOPOP,8000);
m_tooltip.SetMaxTipWidth(290);
m_tooltip.Activate(true);
m_tooltip.Update(); m_tooltip.AddTool(GetDlgItem(IDC_COMBO1),"可以关闭该对话框",&rect);PreTranslateMessage中:
m_tooltip.RelayEvent(pMsg);已经测试过,是可以的!
//Dlg.hCDlg : public CDialog
{
public:
CToolTipCtrl *m_ptip;
}//Dlg.cppCDlg::~Dlg()
{
delete m_ptip;
m_ptip = NULL;
}
BOOL CDlg::OnInitDialog()
{
m_ptip = new CToolTipCtrl;
if(!m_ptip->Create(this))
{
TRACE("Unable To create ToolTip\n");
return TRUE;
}
m_ptip->AddTool( GetDlgItem(IDC_COMBO1), "提示条");
m_ptip->Activate(TRUE); return TRUE;
}BOOL CDlg::PreTranslateMessage(MSG* pMsg)
{
if (m_ptip != NULL)
m_ptip->RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg);
}
一下子回了这么多,谢谢了!可以用的,我还想问一下,哪个m_tooltip上的文字可以更改字体的吗????默认的函数好象没有的,要自己写的吧?怎样改呢?
你得重载CToolTipCtrl类,
有空可以研究研究
我的CComboBox控件是可以自己写入数据的,即dropdown属性的,当我将鼠标放进CComboBox控件中的时候就没有提示框了。
能够实现当鼠标停留在CComboBox控件中一段时间后就能够出现提示框,而不是仅仅在边缘的时候才能出现这种提示框呢??
如果用我给你的方法的话,只要这样就行了:
CToolTipCtrl m_tooltip;
OnMouseMove中:
m_tooltip.Create(this);
m_tooltip.Activate(true);
m_tooltip.SetTipBkColor(RGB(0,144,18));
m_tooltip.SetTipTextColor(RGB(255,254,255));
m_tooltip.SetDelayTime(50);
m_tooltip.SetDelayTime(TTDT_AUTOPOP,8000);
m_tooltip.SetMaxTipWidth(290);
m_tooltip.Activate(true);
m_tooltip.Update(); m_tooltip.AddTool(GetDlgItem(IDC_RESULT),"可以关闭该对话框");PreTranslateMessage中:
m_tooltip.RelayEvent(pMsg);不需要那个rect(当然有也没有关系);
对于你所说的这个问题,如果combox的风格是DropDown那只能在边缘才有提示.
为什么呢?因为这个风格当你的鼠标在文本框里时就会处理另外的消息,这是combox自身所还,类似于editbox的EN_CHANGE一样,所以只能在边缘没有自带消息的地方CToolTip才有用,
包括边框和那个下拉框.但如果设成DropList 就没有这个问题了