我有个类CMyToolTipCtrl,继承自CToolTipCtrl,//
//功能:为窗口中的指定矩形区域添加Tooltip提示字串
//
BOOL CMyToolTipCtrl::AddRectTool(CWnd* pWnd, LPCTSTR lpszText, LPCRECT lpRect, UINT nIDTool)
{
TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO);
ti.hinst = AfxGetInstanceHandle();
ti.hwnd = pWnd->GetSafeHwnd();
ti.lpszText = (LPTSTR)lpszText;
ti.uFlags = TTF_SUBCLASS;
ti.uId = nIDTool;
::CopyRect(&ti.rect, lpRect); return (BOOL)SendMessage(TTM_ADDTOOL, 0, (LPARAM)&ti);
}详细大家这个类都见到过吧,
我想问的是,最后一个参数nIDTool没用吗?也就是TOOLINFO 结构中的uId 字段没用吗?
我尝试为窗口中多个不同的矩形区域添加字串,nIDTool指定相同的值(如0)效果都能实现,都满足要求,那为每个提示字串定义唯一的ID还有什么用,在什么情况下会用到uId
//功能:为窗口中的指定矩形区域添加Tooltip提示字串
//
BOOL CMyToolTipCtrl::AddRectTool(CWnd* pWnd, LPCTSTR lpszText, LPCRECT lpRect, UINT nIDTool)
{
TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO);
ti.hinst = AfxGetInstanceHandle();
ti.hwnd = pWnd->GetSafeHwnd();
ti.lpszText = (LPTSTR)lpszText;
ti.uFlags = TTF_SUBCLASS;
ti.uId = nIDTool;
::CopyRect(&ti.rect, lpRect); return (BOOL)SendMessage(TTM_ADDTOOL, 0, (LPARAM)&ti);
}详细大家这个类都见到过吧,
我想问的是,最后一个参数nIDTool没用吗?也就是TOOLINFO 结构中的uId 字段没用吗?
我尝试为窗口中多个不同的矩形区域添加字串,nIDTool指定相同的值(如0)效果都能实现,都满足要求,那为每个提示字串定义唯一的ID还有什么用,在什么情况下会用到uId
http://topic.csdn.net/u/20100415/17/3bf6d8f8-9cca-45ff-84cf-3e17d8c1f665.html
http://topic.csdn.net/u/20100415/16/85429edd-c253-4dab-994a-bef91a846481.html
大家请看下面的这个
Application-defined identifier of the tool. If uFlags includes the TTF_IDISHWND flag, uId must specify the window handle to the tool.
uId
Application-defined identifier of the tool. If uFlags includes the TTF_IDISHWND flag, uId must specify the window handle to the tool. 那是不是意味着当uFlags 字段不包含TTF_IDISHWND值,uId就可以忽略?
或者理解为未定义,未使用。
我估计你看到的tt不是你编程的tt,现在几乎每个控件都有自己的tt
1.Resource.h中定义资源ID时,这样可以:
//按钮的位图资源ID
#define IDB_BITMAP_TITLEBTNBASE 200
#define IDB_BITMAP_TITLEBTNCLOSE 201这样竟然不行!:
//按钮的位图资源ID
#define IDB_BITMAP_TITLEBTNBASE 200
#define IDB_BITMAP_TITLEBTNCLOSE IDB_BITMAP_TITLEBTNBASE + 1 //编译出错
[或 #define IDB_BITMAP_TITLEBTNCLOSE IDB_BITMAP_TITLEBTNBASE+1 //编译可过,运行出错]
但是上述写法我一直在VC6下用着, 2.我自绘了窗口标题栏的最小化,关闭等按钮,其实就是贴上了几张位图,当我将鼠标移到图片上时,响应的是OnMouseMove消息,而不是OnNcMouseMove消息!按下,抬起同样由OnLButtonDown,Up响应,而不是通常的NC消息!3.我为最小化,关闭等位图按钮添加了Tooltip提示信息,可以显示出来,但是,当窗口被其他窗口当掉时(失去焦点),再将鼠标移上去,提示信息没了?!可是我电脑上的任何窗口失掉焦点时是可以显示Tooltip的!4.无论我怎么尝试,最小化,关闭等位图按钮就是不响应系统消息(我不能发送WM_SYSCOMMAND消息),而自定义消息和非系统消息都可以发!5.我试着为窗口添加了最上层显示(topmost),可当添加后就再也没去掉:
void COwnerDrawCaptionWnd::ToggleTopMost()
{
m_bTopMost = m_bTopMost ? false : true;LONG lEXStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);
if(m_bTopMost)
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE
|SWP_NOACTIVATE );
else
{
if((lEXStyle & WS_EX_TOPMOST) == WS_EX_TOPMOST)
this->SetWindowPos(GetParent() , 0, 0, 0, 0, SWP_NOSIZE |SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOOWNERZORDER);
}
}6.最严重的是,我一天中调试这么多次该工程,总能看到3,4次莫名崩掉!!我想了想,算了吧还是,往vc6里搬吧,只不过是让2008搞坏了我一星期的心情~