273 lines
7.2 KiB
C++
273 lines
7.2 KiB
C++
#include <toolbar/toolbar.hpp>
|
|
#include <common/comctlex.hpp>
|
|
#include <common/rect.hpp>
|
|
|
|
ToolBar::ToolBar(void)
|
|
{
|
|
CommonControlsEx commonControlsEx;
|
|
commonControlsEx.flags(CommonControlsEx::InitBar);
|
|
commonControlsEx.initCommonControlsEx();
|
|
}
|
|
|
|
ToolBar::ToolBar(const ToolBar &someToolBar)
|
|
{ // private implementation
|
|
*this=someToolBar;
|
|
}
|
|
|
|
ToolBar::~ToolBar()
|
|
{
|
|
destroy();
|
|
}
|
|
|
|
ToolBar &ToolBar::operator=(const ToolBar &/*someToolBar*/)
|
|
{ // private implementation
|
|
return *this;
|
|
}
|
|
|
|
BOOL ToolBar::create(GUIWindow &parentWindow,UINT controlID,const Rect &initRect,UINT styles)
|
|
{
|
|
if(isValid())return FALSE;
|
|
createControl(0L,TOOLBARCLASSNAME,String(),WS_CHILD|WS_BORDER|WS_VISIBLE|styles,initRect,parentWindow,controlID);
|
|
buttonStructSize();
|
|
return isValid();
|
|
}
|
|
|
|
BOOL ToolBar::addBitmap(const AddBitmap &addBitmap)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return !(-1==sendMessage(TB_ADDBITMAP,1,(LPARAM)&((AddBitmap&)addBitmap).getTBADDBITMAP()));
|
|
}
|
|
|
|
BOOL ToolBar::addBitmaps(Block<AddBitmap> &addBitmaps)const
|
|
{
|
|
TBADDBITMAP *pTBADDBITMAP;
|
|
BOOL result;
|
|
|
|
pTBADDBITMAP=::new TBADDBITMAP[addBitmaps.size()];
|
|
for(int bmIndex=0;bmIndex<addBitmaps.size();bmIndex++)
|
|
{
|
|
pTBADDBITMAP[bmIndex].hInst=addBitmaps[bmIndex].processInstance();
|
|
pTBADDBITMAP[bmIndex].nID=addBitmaps[bmIndex].bitmapID();
|
|
}
|
|
result=!(-1==sendMessage(TB_ADDBITMAP,addBitmaps.size(),(LPARAM)pTBADDBITMAP));
|
|
::delete[] pTBADDBITMAP;
|
|
return result;
|
|
}
|
|
|
|
BOOL ToolBar::addButton(const ToolBarButton &toolBarButton)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ADDBUTTONS,1,(LPARAM)&((ToolBarButton&)toolBarButton).getTBBUTTON());
|
|
}
|
|
|
|
BOOL ToolBar::addButtons(Block<ToolBarButton> &toolBarButtons)const
|
|
{
|
|
BOOL result;
|
|
TBBUTTON *pTBBUTTONS;
|
|
|
|
pTBBUTTONS=::new TBBUTTON[toolBarButtons.size()];
|
|
for(int bmIndex=0;bmIndex<toolBarButtons.size();bmIndex++)
|
|
{
|
|
pTBBUTTONS[bmIndex].iBitmap=toolBarButtons[bmIndex].indexBitmap();
|
|
pTBBUTTONS[bmIndex].idCommand=toolBarButtons[bmIndex].commandID();
|
|
pTBBUTTONS[bmIndex].fsState=toolBarButtons[bmIndex].stateFlags();
|
|
pTBBUTTONS[bmIndex].fsStyle=toolBarButtons[bmIndex].style();
|
|
pTBBUTTONS[bmIndex].dwData=toolBarButtons[bmIndex].userData();
|
|
pTBBUTTONS[bmIndex].iString=toolBarButtons[bmIndex].indexString();
|
|
}
|
|
result=sendMessage(TB_ADDBUTTONS,toolBarButtons.size(),(LPARAM)pTBBUTTONS);
|
|
::delete[] pTBBUTTONS;
|
|
return result;
|
|
}
|
|
|
|
void ToolBar::buttonStructSize(void)const
|
|
{
|
|
if(!isValid())return;
|
|
sendMessage(TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON),0L);
|
|
}
|
|
|
|
void ToolBar::resize(void)const
|
|
{
|
|
if(!isValid())return;
|
|
sendMessage(TB_AUTOSIZE,0,0L);
|
|
}
|
|
|
|
WORD ToolBar::countButtons(void)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_BUTTONCOUNT,0,0L);
|
|
}
|
|
|
|
BOOL ToolBar::changeBitmap(WORD indexBitmapFrom,WORD indexBitmapTo)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_CHANGEBITMAP,(WPARAM)indexBitmapFrom,(LPARAM)MAKELPARAM(indexBitmapTo,0));
|
|
}
|
|
|
|
BOOL ToolBar::checkButton(UINT buttonID,BOOL checkState)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_CHECKBUTTON,(WPARAM)buttonID,(LPARAM)MAKELONG(checkState,0));
|
|
}
|
|
|
|
WORD ToolBar::getButtonIndex(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_COMMANDTOINDEX,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
WORD ToolBar::getBitmapIndex(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_GETBITMAP,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
void ToolBar::customize(void)const
|
|
{
|
|
if(!isValid())return;
|
|
sendMessage(TB_CUSTOMIZE,0,0L);
|
|
}
|
|
|
|
BOOL ToolBar::deleteButton(WORD indexButton)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_DELETEBUTTON,(WPARAM)indexButton,0L);
|
|
}
|
|
|
|
BOOL ToolBar::enableButton(UINT buttonID,BOOL enable)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ENABLEBUTTON,(WPARAM)buttonID,(LPARAM)MAKELONG(enable,0));
|
|
}
|
|
|
|
BOOL ToolBar::canHandleLargeBitmaps(void)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return (TBBF_LARGE==sendMessage(TB_GETBITMAPFLAGS,0,0L));
|
|
}
|
|
|
|
BOOL ToolBar::getButtonInfo(WORD indexButton,ToolBarButton &toolBarButton)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_GETBUTTON,(WPARAM)indexButton,(LPARAM)&toolBarButton.getTBBUTTON());
|
|
}
|
|
|
|
BOOL ToolBar::getButtonText(WORD buttonID,String &strButtonText)const
|
|
{
|
|
String strCopyText;
|
|
BOOL returnCode(FALSE);
|
|
|
|
if(!isValid())return returnCode;;
|
|
returnCode=!(-1==sendMessage(TB_GETBUTTONTEXT,(WPARAM)buttonID,(LPARAM)(LPSTR)strCopyText));
|
|
if(returnCode)strButtonText=strCopyText;
|
|
return returnCode;
|
|
}
|
|
|
|
BOOL ToolBar::getItemRect(WORD indexButton,Rect &itemRect)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_GETITEMRECT,(WPARAM)indexButton,(LPARAM)(RECT*)itemRect);
|
|
}
|
|
|
|
WORD ToolBar::getRows(void)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_GETROWS,0,0L);
|
|
}
|
|
|
|
DWORD ToolBar::getButtonState(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_GETSTATE,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
HANDLE ToolBar::getToolTipControl(void)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return (HANDLE)sendMessage(TB_GETTOOLTIPS,0,0L);
|
|
}
|
|
|
|
BOOL ToolBar::hideButton(UINT buttonID,BOOL hide)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_HIDEBUTTON,(WPARAM)buttonID,(LPARAM)MAKELONG(hide,0));
|
|
}
|
|
|
|
BOOL ToolBar::indeterminate(UINT buttonID,BOOL isIndeterminate)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_INDETERMINATE,(WPARAM)buttonID,(LPARAM)MAKELONG(isIndeterminate,0));
|
|
}
|
|
|
|
BOOL ToolBar::insertButton(WORD indexButton,const ToolBarButton &toolBarButton)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_INSERTBUTTON,(WPARAM)indexButton,(LPARAM)&((ToolBarButton&)toolBarButton).getTBBUTTON());
|
|
}
|
|
|
|
BOOL ToolBar::isButtonChecked(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ISBUTTONCHECKED,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
BOOL ToolBar::isButtonEnabled(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ISBUTTONENABLED,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
BOOL ToolBar::isButtonHidden(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ISBUTTONHIDDEN,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
BOOL ToolBar::isButtonIndeterminate(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ISBUTTONINDETERMINATE,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
BOOL ToolBar::isButtonPressed(UINT buttonID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_ISBUTTONPRESSED,(WPARAM)buttonID,0L);
|
|
}
|
|
|
|
BOOL ToolBar::pressButton(UINT buttonID,BOOL pressed)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_PRESSBUTTON,(WPARAM)buttonID,(LPARAM)MAKELONG(pressed,0));
|
|
}
|
|
|
|
BOOL ToolBar::setBitmapSize(WORD xBitmap,WORD yBitmap)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_SETBITMAPSIZE,0,(LPARAM)MAKELONG(xBitmap,yBitmap));
|
|
}
|
|
|
|
BOOL ToolBar::setButtonSize(WORD xButton,WORD yButton)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_SETBUTTONSIZE,0,(LPARAM)MAKELONG(xButton,yButton));
|
|
}
|
|
|
|
BOOL ToolBar::setCommandID(WORD indexButton,UINT commandID)const
|
|
{
|
|
if(!isValid())return FALSE;
|
|
return sendMessage(TB_SETCMDID,(WPARAM)indexButton,(LPARAM)commandID);
|
|
}
|
|
|
|
void ToolBar::setParent(GUIWindow &parentWindow)const
|
|
{
|
|
if(!isValid())return;
|
|
sendMessage(TB_SETPARENT,(WPARAM)(HWND)parentWindow,0L);
|
|
}
|
|
|
|
void ToolBar::setToolTips(HANDLE hToolTips)const
|
|
{
|
|
if(!isValid())return;
|
|
sendMessage(TB_SETTOOLTIPS,(WPARAM)(HWND)hToolTips,0L);
|
|
}
|