最近在用mfc做界面,有下拉列表需要重绘,但是有两个问题:
1.下拉列表在黑色背景下,它的非客户区(外边框)无法重绘(我想让边框变为白色的)
2.当item的名称过长,如何给item加tooltip
现在我只会在下拉列表的编辑框中显示tooltip
在头文件中定义变量
CToolTipCtrl m_toolTip;
重载PreTranslateMessage函数,
CString str;
GetWindowText(str);
m_toolTip.AddTool(this, str);
m_toolTip.RelayEvent(pMsg);
当然,为了性能,下面这段代码最好放在ON_CBN_SELCHANGE这个消息中,效果是一样的
CString str;
GetWindowText(str);
m_toolTip.AddTool(this, str);
另外,其他控件绘制边框的方法如下:
在ON_WM_NCPAINT()中加入下面的代码即可
CRect rect;
GetWindowRect(rect);
rect.OffsetRect(rect.TopLeft());
CWindowDC dc(this);
dc.Draw3dRect(rect, RGB(255, 0, 0), RGB(255, 0, 0));
rect.DeflateRect(1, 1);
dc.Draw3dRect(rect, RGB(255, 0, 0), RGB(255, 0, 0));