Files
Work/common/Progress.hpp
2024-08-07 09:09:36 -04:00

154 lines
3.9 KiB
C++

#if defined(__FLAT__)
#ifndef _COMMON_PROGRESS_HPP_
#define _COMMON_PROGRESS_HPP_
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_FONT_HPP_
#include <common/font.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_ICONFRAME_HPP_
#include <common/iconfrm.hpp>
#endif
#ifndef _COMMON_MMTIMER_HPP_
#include <common/mmtimer.hpp>
#endif
#ifndef _COMMON_WINDOW_HPP_
#include <common/window.hpp>
#endif
class Progress : public Window, private MMTimer
{
public:
Progress(GUIWindow &parentWindow);
Progress(GUIWindow &parentWindow,String captionString);
Progress(GUIWindow &parentWindow,String captionString,Block<String> &iconNames);
virtual ~Progress();
WORD operator++(void);
WORD operator++(int postFixDummy);
WORD operator+=(const String &messageString);
WORD setPosition(DWORD position);
WORD setText(const String &messageString);
WORD getText(String &messageString);
WORD setCaption(const String &captionString);
WORD range(DWORD itemCount);
DWORD itemIndex(void)const;
WORD reset(void);
void show(WORD onOff);
WORD canCancel(void)const;
void canCancel(WORD canCancel);
WORD isOkay(void)const;
private:
enum{ProgressBarID=0x10,StaticTextID=0x11};
enum{bkRed=192,bkGreen=192,bkBlue=192};
enum{PWcx=280,PWcy=100};
enum{PCx=5,PCy=40,PCcx=265,PCcy=15};
enum{SCx=5,SCy=60,SCcx=265,SCcy=18};
enum{FullRange=100,EscapeKey=27};
enum MsgType{SetRange=PBM_SETRANGE,SetPos=PBM_SETPOS,DeltaPos=PBM_DELTAPOS,SetStep=PBM_SETSTEP,StepIt=PBM_STEPIT};
Progress(const Progress &someProgress);
Progress &operator=(const Progress &someProgress);
void progressMessage(MsgType msgType,WPARAM wParam,LPARAM lParam=0L);
void staticMessage(const String &messageString);
void registerClass(void);
void createWindow(void);
void createControls(void);
void destroyControls(void);
void insertHandlers(void);
void removeHandlers(void);
void initialPoint(const GUIWindow &parentWindow);
void insertIcons(Block<String> &iconNames);
void shutdown(void);
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
CallbackData::ReturnType controlColorHandler(CallbackData &someCallbackData);
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
CallbackData::ReturnType charHandler(CallbackData &someCallbackData);
static char szClassName[];
static char szFontName[];
Callback<Progress> mControlColorHandler;
Callback<Progress> mPaintHandler;
Callback<Progress> mCreateHandler;
Callback<Progress> mTimerHandler;
Callback<Progress> mCharHandler;
HWND mhParentWindow;
HINSTANCE mhProcessInstance;
Point mInitialPoint;
String mClassName;
String mCaptionString;
HWND mhProgressControl;
HWND mhStaticControl;
HBRUSH mhBrush;
Font mFont;
DWORD mItemIndex;
DWORD mItemCount;
WORD mCanCancel;
IconFrame mIconFrame;
};
inline
Progress::Progress(const Progress &/*someProgress*/)
{ // no implementation
}
inline
Progress &Progress::operator=(const Progress &/*someProgress*/)
{ // no implementation
return *this;
}
inline
WORD Progress::operator++(int /*postFixDummy*/)
{
return ++(*this);
}
inline
void Progress::progressMessage(MsgType msgType,WPARAM wParam,LPARAM lParam)
{
::SendMessage(mhProgressControl,msgType,wParam,lParam);
}
inline
void Progress::staticMessage(const String &messageString)
{
sendMessage(mhStaticControl,WM_SETTEXT,0,(LONG)(LPSTR)messageString);
}
inline
WORD Progress::setCaption(const String &captionString)
{
return sendMessage(*this,WM_SETTEXT,0,(LONG)(LPSTR)captionString);
}
inline
DWORD Progress::itemIndex(void)const
{
return mItemIndex;
}
inline
WORD Progress::canCancel(void)const
{
return mCanCancel;
}
inline
void Progress::canCancel(WORD canCancel)
{
mCanCancel=canCancel;
}
inline
WORD Progress::isOkay(void)const
{
return ((HWND)*this&&mhProgressControl&&mhStaticControl);
}
#endif
#endif