Initial Commit
This commit is contained in:
153
common/Status.hpp
Normal file
153
common/Status.hpp
Normal file
@@ -0,0 +1,153 @@
|
||||
#ifndef _COMMON_STATUSWINDOW_HPP_
|
||||
#define _COMMON_STATUSWINDOW_HPP_
|
||||
#ifndef _COMMON_CONTROL_HPP_
|
||||
#include <common/control.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_COMMCTRL_HPP_
|
||||
#include <common/commctrl.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
|
||||
class StatusControl : public Control
|
||||
{
|
||||
public:
|
||||
enum DrawType{DrawNormal=0,DrawNoBorders=SBT_NOBORDERS,DrawOwnerDraw=SBT_OWNERDRAW,DrawPopout=SBT_POPOUT,DrawRTLReading=SBT_RTLREADING};
|
||||
enum {FirstPart=0,SimplePart=255};
|
||||
StatusControl(void);
|
||||
virtual ~StatusControl();
|
||||
HWND createControl(const String &windowName,HWND hParentWnd,UINT controlID);
|
||||
HWND createControl(const String &windowName,DWORD dwStyle,const Rect &initRect,HWND hParentWnd,int controlID);
|
||||
BOOL getBorders(int &horzBorder,int &vertBorder,int &rectBorder)const;
|
||||
UINT getParts(GlobalData<int> &rightCoords)const;
|
||||
BOOL setParts(GlobalData<int> &partsWidths)const;
|
||||
BOOL getRect(Rect &partRect,UINT partIndex=0)const;
|
||||
BOOL getText(String &controlText,UINT partIndex=0)const;
|
||||
UINT getTextLength(UINT partIndex)const;
|
||||
void setMinHeight(WORD minHeight)const;
|
||||
BOOL setText(const String &strText,UINT partIndex=FirstPart,DrawType drawType=DrawNormal)const;
|
||||
BOOL simple(BOOL simple)const;
|
||||
UINT numParts(void)const;
|
||||
private:
|
||||
enum{MaxParts=255};
|
||||
StatusControl(const StatusControl &statusControl);
|
||||
StatusControl &operator=(const StatusControl &statusControl);
|
||||
};
|
||||
|
||||
inline
|
||||
StatusControl::StatusControl(void)
|
||||
{
|
||||
InitCommonControls();
|
||||
}
|
||||
|
||||
inline
|
||||
StatusControl::~StatusControl()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
StatusControl::StatusControl(const StatusControl &statusControl)
|
||||
{ // private implementation
|
||||
*this=statusControl;
|
||||
}
|
||||
|
||||
inline
|
||||
StatusControl &StatusControl::operator=(const StatusControl &statusControl)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
HWND StatusControl::createControl(const String &windowName,DWORD dwStyle,const Rect &initRect,HWND hParentWnd,int controlID)
|
||||
{
|
||||
if(isValid())return FALSE;
|
||||
return Control::createControl(STATUSCLASSNAME,windowName,dwStyle,initRect,hParentWnd,controlID);
|
||||
}
|
||||
|
||||
inline
|
||||
HWND StatusControl::createControl(const String &windowName,HWND hParentWnd,UINT controlID)
|
||||
{
|
||||
if(isValid())return FALSE;
|
||||
return Control::createControl(STATUSCLASSNAME,windowName,WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,Rect(CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT),hParentWnd,controlID);
|
||||
}
|
||||
|
||||
inline
|
||||
UINT StatusControl::numParts(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return sendMessage(SB_GETPARTS,0,0);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::getBorders(int &horzBorder,int &vertBorder,int &rectBorder)const
|
||||
{
|
||||
int statBorders[3];
|
||||
|
||||
if(!isValid()||!sendMessage(SB_GETBORDERS,0,(LPARAM)(LPINT)statBorders))return FALSE;
|
||||
horzBorder=statBorders[0];
|
||||
vertBorder=statBorders[1];
|
||||
rectBorder=statBorders[2];
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
inline
|
||||
UINT StatusControl::getParts(GlobalData<int> &rightCoords)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
rightCoords.size(numParts());
|
||||
if(!rightCoords.size())return FALSE;
|
||||
return sendMessage(SB_GETPARTS,rightCoords.size(),(LPARAM)(int*)&rightCoords[0]);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::setParts(GlobalData<int> &partsWidths)const
|
||||
{
|
||||
if(!isValid()||!partsWidths.size()||partsWidths.size()>MaxParts)return FALSE;
|
||||
return sendMessage(SB_SETPARTS,(WPARAM)partsWidths.size(),(LPARAM)(int*)&partsWidths[0]);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::getRect(Rect &partRect,UINT partIndex)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return sendMessage(SB_GETRECT,(WPARAM)partIndex,(LPARAM)(RECT*)partRect);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::getText(String &controlText,UINT partIndex)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
controlText.reserve(getTextLength(partIndex)+1);
|
||||
sendMessage(SB_GETTEXT,(WPARAM)partIndex,(LPARAM)(char*)controlText);
|
||||
return controlText.isNull();
|
||||
}
|
||||
|
||||
inline
|
||||
UINT StatusControl::getTextLength(UINT partIndex)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return LOWORD(sendMessage(SB_GETTEXTLENGTH,(WPARAM)partIndex,0L));
|
||||
}
|
||||
|
||||
inline
|
||||
void StatusControl::setMinHeight(WORD minHeight)const
|
||||
{
|
||||
if(!isValid())return;
|
||||
sendMessage(SB_SETMINHEIGHT,(WPARAM)minHeight,0L);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::setText(const String &strText,UINT partIndex,DrawType drawType)const
|
||||
{
|
||||
if(!isValid()||strText.isNull())return FALSE;
|
||||
return sendMessage(SB_SETTEXT,(WPARAM)(partIndex|(UINT)drawType),(LPARAM)(char*)(String&)strText);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL StatusControl::simple(BOOL simple)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return sendMessage(SB_SIMPLE,(WPARAM)simple,0L);
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user