Initial
This commit is contained in:
168
tooltip/TOOLTIP.CPP
Normal file
168
tooltip/TOOLTIP.CPP
Normal file
@@ -0,0 +1,168 @@
|
||||
#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)
|
||||
: mNotifyHandler(this,&ToolTip::notifyHandler), mParentWindow(parentWindow),
|
||||
mhControlWnd(0)
|
||||
{
|
||||
::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(0,TOOLTIPS_CLASS,"",WS_VISIBLE|WS_POPUP|style,
|
||||
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
|
||||
mParentWindow,0,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));
|
||||
}
|
||||
|
||||
WORD ToolTip::isOkay(void)const
|
||||
{
|
||||
return (mhControlWnd?TRUE:FALSE);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ToolTip::notifyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
NMHDR &nmHdr=*((NMHDR*)someCallbackData.lParam());
|
||||
|
||||
if(mhControlWnd==nmHdr.hwndFrom)
|
||||
{
|
||||
switch(nmHdr.code)
|
||||
{
|
||||
case TTN_NEEDTEXT :
|
||||
ttnNeedText(nmHdr);
|
||||
break;
|
||||
case TTN_POP :
|
||||
ttnPop(nmHdr);
|
||||
break;
|
||||
case TTN_SHOW :
|
||||
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*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user