我的情况:
在基于文档TEST的工程中,在CFrame中
m_wndHBar.CreateEx使用了CBRS_TOOLTIPS,运行时
tooltip可以显示出来。 但当将该工程打包成*.Dll
__declspec(dllexport) BOOL TEST_ShowWindow(BOOL bShow);BOOL TEST_ShowWindow(BOOL bShow)
{//...........
//////////////////////////注册框架
AFX_MODULE_STATE* pBaseModuleState = AfxGetAppModuleState();
AFX_MODULE_THREAD_STATE* pBaseModuleThreadState = pBaseModuleState ->m_thread.GetData();
CHandleMap* pHandleMap = pBaseModuleThreadState->m_pmapHWND; if (pHandleMap)
{
if (pHandleMap->LookupPermanent(m_pFrameWnd->GetSafeHwnd()))
pHandleMap->RemoveHandle(m_pFrameWnd->GetSafeHwnd());
pHandleMap->SetPermanent(m_pFrameWnd->GetSafeHwnd(), m_pFrameWnd);
}
/// create a event to wait for the thread to end
m_pGetFrameDataThread = AfxBeginThread((AFX_THREADPROC)_GetFrameDataThread, this,
THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
ASSERT(m_pGetFrameDataThread != NULL);
//..............}在另一工程中调用TEST接口时,tooltip就显示不出来了。??????????????请教!!!!另:::
1。 我在TEST工程去掉了工具栏的CBRS_TOOLTIPS属性,在CView中用了如下消息
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText ),tooltip根本就出不来2。 用CToolTipCtrl m_tips我只能实现整个ToolBar的提示。该如何实现每个按钮的提示阿???
在基于文档TEST的工程中,在CFrame中
m_wndHBar.CreateEx使用了CBRS_TOOLTIPS,运行时
tooltip可以显示出来。 但当将该工程打包成*.Dll
__declspec(dllexport) BOOL TEST_ShowWindow(BOOL bShow);BOOL TEST_ShowWindow(BOOL bShow)
{//...........
//////////////////////////注册框架
AFX_MODULE_STATE* pBaseModuleState = AfxGetAppModuleState();
AFX_MODULE_THREAD_STATE* pBaseModuleThreadState = pBaseModuleState ->m_thread.GetData();
CHandleMap* pHandleMap = pBaseModuleThreadState->m_pmapHWND; if (pHandleMap)
{
if (pHandleMap->LookupPermanent(m_pFrameWnd->GetSafeHwnd()))
pHandleMap->RemoveHandle(m_pFrameWnd->GetSafeHwnd());
pHandleMap->SetPermanent(m_pFrameWnd->GetSafeHwnd(), m_pFrameWnd);
}
/// create a event to wait for the thread to end
m_pGetFrameDataThread = AfxBeginThread((AFX_THREADPROC)_GetFrameDataThread, this,
THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
ASSERT(m_pGetFrameDataThread != NULL);
//..............}在另一工程中调用TEST接口时,tooltip就显示不出来了。??????????????请教!!!!另:::
1。 我在TEST工程去掉了工具栏的CBRS_TOOLTIPS属性,在CView中用了如下消息
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText ),tooltip根本就出不来2。 用CToolTipCtrl m_tips我只能实现整个ToolBar的提示。该如何实现每个按钮的提示阿???
解决方案 »
- 急!谁有在VC++环境下编译成功的ffmpeg源代码?谢谢啦
- 问一个关于namespace的初级问题
- 请问大家:为什么我在VC6.0编译器中做好程序后按ctrl+F5(也就是那个小叹号)时系统编译不通过?谢谢各位大侠了!!!
- ++++简单一问:正常的ADO连接,老提示重复定义。error C2011: 'LockTypeEnum' : 'enum' type redefinition++++
- 一个关于通过IDispatch取得对象的问题
- 多线程问题
- CRecordset类的MoveLast函数竟然莫名其妙的写文件?
- ◆◆◆请教关于flexgrid控件的问题——如何设定指定的行为fixed rows??◆◆◆
- 急!! 开机启动后,任务栏慢慢被吞噬似的变无, 鼠标乱窜, 开始菜单里运行好多重要选项都没有了。
- editplus的注册吗谁知道?帮个忙吧。
- 如何分析IP数据包?
- 请教打开文件的问题
2,自己定义,例如:SetTooltipText(LPCTSTR lpszText, BOOL bActivate)
{ // We cannot accept NULL pointer
if (lpszText == NULL) return;
// Initialize ToolTip
InitToolTip();
// If there is no tooltip defined then add it
if (m_ToolTip.GetToolCount() == 0)
{
CRect rectBtn;
GetClientRect(rectBtn);
m_ToolTip.AddTool(this, lpszText, rectBtn, 1);
}
// Set text for tooltip
m_ToolTip.UpdateTipText(lpszText, this, 1);
m_ToolTip.Activate(bActivate);
}自己查询相关的函数
// ID_DRAW_ARROW,ID_DRAW_RECTANGE为工具栏两个按钮的ID.提示已////设置好。 if (m_tips.Create(this))
{
// CWnd* pW=GetDlgItem(ID_DRAW_ARROW);//得到窗口指针
// ASSERT(pW!=NULL);//指针为空
// m_tips.AddTool(pW,"画3角形");
// pW=GetDlgItem(ID_DRAW_RECTANGE);//得到窗口指针
// ASSERT(pW!=NULL);
// m_tips.AddTool(pW,"画矩形");
m_tips.AddTool(this, (LPCTSTR) "TOOLTIP1", CRect(100, 100, 200, 200), ID_DRAW_ARROW);
m_tips.AddTool(this, (LPCTSTR) "TOOLTIP2", CRect(100, 100, 200, 200), ID_DRAW_RECTANGE);
m_tips.Activate(true);
} 重载PreTranslateMessage函数
m_tips.RelayEvent(pMsg);
可是还是达不到效果,出不来tooltip????
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xFFFF, OnToolTipText)
添加想硬汉数
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
函数内容如下: BOOL CMainFrame::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXT);
TOOLTIPTEXT* pTTT = (TOOLTIPTEXT*)pNMHDR;
// 获得按纽的ID
UINT nID = pNMHDR->idFrom;
if (pTTT->uFlags & TTF_IDISHWND)
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
// 为其指定字符串的资源号和资源的Handle,当然,你也可能直接指定一个字符串,但更好的习惯是将这些字符串保存在资源中。
pTTT->lpszText = "IDONTKNOWN";//MAKEINTRESOURCE(nID);
if(nID==ID_USER_ON)
pTTT->lpszText="画3角形";
else if(nID==ID_ADDSERVER)
pTTT->lpszText="画2角形";
else if(nID==ID_FINDHOSTS)
pTTT->lpszText="画5角形";
pTTT->hinst = AfxGetResourceHandle();
// 将Tip窗口设为最上层窗口
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,
SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
*pResult = 0;
return FALSE; // message was handled
}
1。 消息响应不了阿,调试不进去哦 2。 我重在了OnSetCursor也是一样,也是如此阿
if(pWnd!=this)
{
TOOLTIPTEXT m_psttt;
m_psttt.hdr.hwndFrom=m_hWnd;
m_psttt.hdr.idFrom=pWnd->GetDlgCtrlID();
UINT dd=m_psttt.hdr.idFrom;
m_psttt.hdr.code=TTN_NEEDTEXT;
m_psttt.uFlags= TTF_IDISHWND;
this->SendMessage(WM_NOTIFY,
m_psttt.hdr.idFrom,(LPARAM)&m_psttt);
}
而且经过测试:m_psttt.hdr.idFrom==ID_VIEW_TOOLBAR,获取的根本不是框架中的工具栏ID?????????