我创建toolbar的时候,设了CBRS_TOOLTIPS,然后怎么显示提示呢?谢谢!
解决方案 »
- 今天试着用List control怎么一点也没反应啊、、、、、、
- VC +SQL超市管理系统 毕业设计(开题报告,文献综述,文献翻译,源文件)
- 进程问题哈,高手请进
- 哪能找到P4 CPU的技术手册(好难找啊)?
- 用MFC能否实现这功能
- 高分求DL-103规约通信的例子程序
- 勿忘国耻9.18!!!为中华之崛起而编程!!!
- 不要笑话我,问个简单问题,我想让一个按钮实现关闭它所在窗体的功能,代码写什么?
- MFC OnKeyDown 输入小写英文字母
- 如何动态设置CEdit控件输入数据的范围
- 如何编程实现清除属性页中编辑框里面的内容?
- Any friends have WinSock EBook? 100 Points!!
刚下载了一个例子,是直接做在button上面的。我要的不是这个,我的button上本身没有文字,
而是希望鼠标移动到button上后,就出现一个文字提示,
请问怎么做?
/* CREATE A TOOLTIP CONTROL OVER THE ENTIRE WINDOW AREA */
void CreateMyTooltip (HWND hwnd)
{
// struct specifying control classes to register
INITCOMMONCONTROLSEX iccex;
HWND hwndTT; // handle to the ToolTip control
// struct specifying info about tool in ToolTip control
TOOLINFO ti;
unsigned int uid = 0; // for ti initialization
char strTT[30] = "This is your ToolTip string.";
LPTSTR lptstr = strTT;
RECT rect; // for client area coordinates /* INITIALIZE COMMON CONTROLS */
iccex.dwICC = ICC_WIN95_CLASSES;
iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCommonControlsEx(&iccex); /* CREATE A TOOLTIP WINDOW */
hwndTT = CreateWindowEx(WS_EX_TOPMOST,
TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
hwnd,
NULL,
ghThisInstance,
NULL
); SetWindowPos(hwndTT,
HWND_TOPMOST,
0,
0,
0,
0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); /* GET COORDINATES OF THE MAIN CLIENT AREA */
GetClientRect (hwnd, &rect); /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hwnd;
ti.hinst = ghThisInstance;
ti.uId = uid;
ti.lpszText = lptstr;
// ToolTip control will cover the whole window
ti.rect.left = rect.left;
ti.rect.top = rect.top;
ti.rect.right = rect.right;
ti.rect.bottom = rect.bottom; /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */
SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); }
可参考一下
mk:@MSITStore:F:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2001APR\1033\vcmfc.chm::/html/_mfc_ctoolbarctrl.3a_.handling_tool_tip_notifications.htm
只要在与toolbar里command相同id的string资源中用\n分割,加上注释即可--\n之后的字符串将出现在提示中。
例如:
toolbar中有一按钮“文件”的command id是IDC_OPENFILE
那么,你需要做的就是在string 资源中加入一条id同样是IDC_OPENFILE,
内容是:Open File \n 打开文件。
在运行的时候,就会提示 "打开文件"了
2.ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )
3.BOOL CNetManagerDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
// UNICODEÏûÏ¢
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
CString strStatusText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
// idFromΪ¹¤¾ßÌõµÄHWND
nID = ::GetDlgCtrlID((HWND)nID);
}
if (nID != 0) //²»Îª·Ö¸ô·û
{
strTipText.LoadString(nID);
int len =strTipText.Find('\n',0);
strStatusText = strTipText.Left(len);
strTipText = strTipText.Mid(len+1);
SetToolTips(strStatusText);
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#endif
*pResult = 0;
// ʹ¹¤¾ßÌõÌáʾ´°¿ÚÔÚ×îÉÏÃæ
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}
想来楼主应该知道加载何处,当然你生成工具栏的时候已经设置了TOOLTIP风格了.
{
if(pMsg->hwnd == m_wndToolBar.GetSafeHwnd())
{
int index = m_wndToolBar.GetToolBarCtrl().GetHotItem();
if(index < 0)
{
CString stem;
CWnd * pStatic = GetDlgItem(IDC_STC_STATEBAR);
pStatic->GetWindowText(stem);
if(stem != "就绪")
{
pStatic->SetWindowText("就绪");
}
}
}
}