182 lines
4.8 KiB
Plaintext
182 lines
4.8 KiB
Plaintext
#include <tooltip/tooltip.hpp>
|
|
#include <common/winmsg.hpp>
|
|
#include <common/guiwnd.hpp>
|
|
#include <common/gdipoint.hpp>
|
|
#include <tooltip/toolinfo.hpp>
|
|
#include <tooltip/hittest.hpp>
|
|
|
|
ToolTip::ToolTip(GUIWindow &parentWindow,Style style,int controlID)
|
|
: mNotifyHandler(this,&ToolTip::notifyHandler), mParentWindow(parentWindow),
|
|
mhControlWnd(0), mControlID(controlID)
|
|
{
|
|
::InitCommonControls();
|
|
mParentWindow.insertHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
|
|
createToolTip((int)style);
|
|
}
|
|
|
|
ToolTip::~ToolTip()
|
|
{
|
|
if(mhControlWnd){::DestroyWindow(mhControlWnd);mhControlWnd=0;}
|
|
mParentWindow.removeHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
|
|
}
|
|
|
|
ToolTip &ToolTip::operator=(const ToolTip &/*someToolTip*/)
|
|
{ // no implementation
|
|
return *this;
|
|
}
|
|
|
|
void ToolTip::createToolTip(int style)
|
|
{
|
|
mhControlWnd=::CreateWindowEx(WS_EX_TOPMOST|WS_EX_STATICEDGE,TOOLTIPS_CLASS,"",WS_CHILD|WS_VISIBLE|style,
|
|
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
|
|
mParentWindow,(HMENU)controlID(),mParentWindow.processInstance(),0);
|
|
}
|
|
|
|
void ToolTip::activate(WORD activate)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_ACTIVATE,(WPARAM)activate,(LPARAM)0);
|
|
}
|
|
|
|
WORD ToolTip::addTool(const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_ADDTOOL,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
void ToolTip::delTool(const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_DELTOOL,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
WORD ToolTip::enumTools(UINT indexTool,const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_ENUMTOOLS,(WPARAM)indexTool,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
WORD ToolTip::getCurrentTool(PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_GETCURRENTTOOL,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
void ToolTip::getText(PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_GETTEXT,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
DWORD ToolTip::getToolCount(void)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_GETTOOLCOUNT,0,0L);
|
|
}
|
|
|
|
WORD ToolTip::getToolInfo(PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_GETTOOLINFO,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
WORD ToolTip::hitTest(const PureHitTestInfo &somePureHitTestInfo)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return mParentWindow.sendMessage(mhControlWnd,TTM_HITTEST,0,(LPARAM)&((TTHITTESTINFO&)((PureHitTestInfo&)somePureHitTestInfo)));
|
|
}
|
|
|
|
void ToolTip::newToolInfo(const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_NEWTOOLRECT,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
void ToolTip::relayEvent(const WinMsg &someWinMsg)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_RELAYEVENT,0,(LPARAM)&((MSG&)((WinMsg&)someWinMsg)));
|
|
}
|
|
|
|
void ToolTip::setDelayTime(DelayFlag typeDelay,int timeDelay)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_SETDELAYTIME,(WPARAM)typeDelay,(LPARAM)timeDelay);
|
|
}
|
|
|
|
void ToolTip::setToolInfo(const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_SETTOOLINFO,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
void ToolTip::updateTipText(const PureToolInfo &somePureToolInfo)const
|
|
{
|
|
if(!isOkay())return;
|
|
mParentWindow.sendMessage(mhControlWnd,TTM_UPDATETIPTEXT,0,(LPARAM)&((TOOLINFO&)somePureToolInfo));
|
|
}
|
|
|
|
HWND ToolTip::windowFromPoint(const GDIPoint &someGDIPoint)const
|
|
{
|
|
if(!isOkay())return (HWND)0;
|
|
return (HWND)mParentWindow.sendMessage(mhControlWnd,TTM_WINDOWFROMPOINT,0,(LPARAM)&((POINT&)someGDIPoint));
|
|
}
|
|
|
|
UINT ToolTip::controlID(void)const
|
|
{
|
|
return mControlID;
|
|
}
|
|
|
|
void ToolTip::controlID(UINT controlID)
|
|
{
|
|
mControlID=controlID;
|
|
}
|
|
|
|
WORD ToolTip::isOkay(void)const
|
|
{
|
|
return (mhControlWnd?TRUE:FALSE);
|
|
}
|
|
|
|
CallbackData::ReturnType ToolTip::notifyHandler(CallbackData &someCallbackData)
|
|
{
|
|
NMHDR &nmHdr=*((NMHDR*)someCallbackData.lParam());
|
|
|
|
if(controlID()==nmHdr.idFrom)
|
|
{
|
|
switch(nmHdr.code)
|
|
{
|
|
case TTN_NEEDTEXT :
|
|
::OutputDebugString("TTN_NEEDTEXT\n");
|
|
ttnNeedText(nmHdr);
|
|
break;
|
|
case TTN_POP :
|
|
::OutputDebugString("TTN_POP\n");
|
|
ttnPop(nmHdr);
|
|
break;
|
|
case TTN_SHOW :
|
|
::OutputDebugString("TTN_SHOW\n");
|
|
ttnShow(nmHdr);
|
|
break;
|
|
default :
|
|
break;
|
|
}
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
// *** virtuals
|
|
|
|
void ToolTip::ttnNeedText(NMHDR &/*someNMHDR*/)
|
|
{
|
|
}
|
|
|
|
void ToolTip::ttnPop(NMHDR &/*someNMHDR*/)
|
|
{
|
|
}
|
|
|
|
void ToolTip::ttnShow(NMHDR &/*someNMHDR*/)
|
|
{
|
|
}
|
|
|
|
|