Initial Commit
This commit is contained in:
401
common/Guiwnd.hpp
Normal file
401
common/Guiwnd.hpp
Normal file
@@ -0,0 +1,401 @@
|
||||
#ifndef _COMMON_GUIWINDOW_HPP_
|
||||
#define _COMMON_GUIWINDOW_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_VECTORHANDLER_HPP_
|
||||
#include <common/vhandler.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_ACCELERATOR_HPP_
|
||||
#include <common/accelerator.hpp>
|
||||
#endif
|
||||
|
||||
class String;
|
||||
class Rect;
|
||||
class PureMenu;
|
||||
class Control;
|
||||
class Font;
|
||||
class Point;
|
||||
class GDIPoint;
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#ifdef enable
|
||||
#undef enable
|
||||
#endif
|
||||
#endif
|
||||
class GUIWindow : public VectorHandler
|
||||
{
|
||||
friend class Control;
|
||||
public:
|
||||
GUIWindow(void);
|
||||
virtual ~GUIWindow();
|
||||
WORD operator==(const GUIWindow &someGUIWindow)const;
|
||||
operator HWND(void)const;
|
||||
bool loadAccelerators(const String &strAcceleratorTable);
|
||||
bool loadAccelerators(UINT resID);
|
||||
WORD enable(WORD isEnabled)const;
|
||||
void setFocus(void)const;
|
||||
void setFocus(GUIWindow &someGUIWindow)const;
|
||||
BOOL setCaption(const String &captionString)const;
|
||||
int show(int nCmdShow=SW_SHOW)const;
|
||||
void update(void)const;
|
||||
void clear(void)const;
|
||||
void invalidate(WORD eraseBackground=TRUE)const;
|
||||
void invalidate(const Rect &invalidRect,BOOL eraseBackground=TRUE)const;
|
||||
BOOL validate(const Rect &validRect);
|
||||
void clientRect(Rect &clientRect)const;
|
||||
void windowRect(Rect &windowRect)const;
|
||||
int windowText(String &strText)const;
|
||||
WORD clientToScreen(Rect &clientRect)const;
|
||||
WORD screenToClient(Rect &clientRect)const;
|
||||
BOOL screenToClient(GDIPoint &somePoint)const;
|
||||
BOOL clientToScreen(GDIPoint &somePoint)const;
|
||||
void size(const Point &dimensionPoint);
|
||||
WORD moveWindow(const Rect &winRect,WORD repaint=TRUE)const;
|
||||
WORD moveWindow(int left,int top,int right,int bottom,WORD repaint=TRUE)const;
|
||||
WORD top(void)const;
|
||||
void move(const Point &topLeftPoint,bool repaint=TRUE);
|
||||
void move(const GDIPoint &topleftPoint,bool repaint=true);
|
||||
WORD setTimer(WORD timerIdentifier,UINT timeOut);
|
||||
HINSTANCE processInstance(void)const;
|
||||
HWND findWindow(const String &strWindowName)const;
|
||||
HWND createWindow(const String &className,const String &windowName,DWORD dwStyle,const Rect &initRect,HWND hParentWnd,HMENU hMenu,HINSTANCE hInstance=0,void FAR *lpInstanceData=0);
|
||||
HWND createWindow(DWORD dwExStyle,const String &className,const String &windowName,DWORD dwStyle,const Rect &initRect,HWND hParentWnd,HMENU hMenu,HINSTANCE hInstance=0,void FAR *lpInstanceData=0);
|
||||
LRESULT postMessage(HWND hPostWindow,UINT message,WPARAM wParam,LPARAM lParam)const;
|
||||
LRESULT sendMessage(HWND hPostWindow,UINT message,WPARAM wParam,LPARAM lParam)const;
|
||||
LRESULT sendMessage(UINT message,WPARAM wParam,LPARAM lParam)const;
|
||||
void setFont(const Font &someFont,BOOL redraw=TRUE)const;
|
||||
WORD killTimer(WORD timerIdentifier);
|
||||
WORD width(void)const;
|
||||
BOOL width(WORD width);
|
||||
WORD height(void)const;
|
||||
bool hasChildren(void)const;
|
||||
HWND getChild(void)const;
|
||||
BOOL height(WORD height);
|
||||
BOOL setWindowPos(int width,int height)const;
|
||||
BOOL setWindowPos(const GDIPoint &startPoint,int width,int height)const;
|
||||
void destroy(void);
|
||||
void close(void);
|
||||
void postQuitMessage(int exitCode=0)const;
|
||||
WORD isVisible(void)const;
|
||||
WORD isIconic(void)const;
|
||||
HWND parent(void)const;
|
||||
HWND setCapture(void)const;
|
||||
bool hasCapture(void)const;
|
||||
BOOL setRedraw(BOOL redrawFlag)const;
|
||||
BOOL setMenu(const PureMenu &somePureMenu)const;
|
||||
BOOL setIcon(const String &strResIcon);
|
||||
BOOL drawMenuBar(void)const;
|
||||
BOOL releaseCapture(void)const;
|
||||
BOOL bringWindowToTop(void)const;
|
||||
BOOL isWindowVisible(void)const;
|
||||
String getClassName(void)const;
|
||||
WORD isValid(void)const;
|
||||
bool flash(BOOL invert)const;
|
||||
bool insertModelessDialog(GUIWindow &modelessDialog);
|
||||
void removeModelessDialog(GUIWindow &modelessDialog);
|
||||
HMENU getMenu(void)const;
|
||||
virtual int messageLoop(void)const;
|
||||
virtual void yieldTask(void)const;
|
||||
HWND getHandle(void)const;
|
||||
protected:
|
||||
enum Disposition{Destroy=0x01,Assume=0x02,AssumeAndDestroy=0x03};
|
||||
GUIWindow(HWND hWnd);
|
||||
GUIWindow(const GUIWindow &someGUIWindow);
|
||||
GUIWindow &operator=(const GUIWindow &someGUIWindow);
|
||||
GUIWindow &operator=(HWND hWnd);
|
||||
void setHandle(HWND hWnd);
|
||||
LONG handlePaintMessage(HWND hWnd,WORD message,WPARAM wParam,LPARAM lParam);
|
||||
virtual int windowProcedure(HWND hWnd,WORD message,WPARAM wParam,LPARAM lParam);
|
||||
#if defined(_MSC_VER)
|
||||
__declspec(dllexport) static LONG FAR PASCAL WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
__declspec(dllexport) static BOOL FAR PASCAL DlgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
__declspec(dllexport) static UINT FAR PASCAL OFHookProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
__declspec(dllexport) static LONG FAR PASCAL FrameProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
__declspec(dllexport) static LONG FAR PASCAL MDIProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
#else
|
||||
static LONG FAR PASCAL _export WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
static int FAR PASCAL _export DlgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
static UINT FAR PASCAL OFHookProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
static LONG FAR PASCAL _export FrameProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
static LONG FAR PASCAL _export MDIProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
#endif
|
||||
private:
|
||||
typedef SmartPointer<GUIWindow> WindowPointer;
|
||||
typedef Block<WindowPointer> WindowPointerList;
|
||||
Disposition disposition(void)const;
|
||||
void disposition(Disposition disposition);
|
||||
|
||||
Disposition mDisposition;
|
||||
WindowPointerList mModelessDialogs;
|
||||
Accelerator mAccelerator;
|
||||
HWND mhWnd;
|
||||
};
|
||||
|
||||
inline
|
||||
GUIWindow::GUIWindow(void)
|
||||
: mhWnd(0), mDisposition(Destroy)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
GUIWindow::GUIWindow(HWND hWnd)
|
||||
: mhWnd(0), mDisposition(Assume)
|
||||
{ // private implementation
|
||||
*this=hWnd;
|
||||
}
|
||||
|
||||
inline
|
||||
GUIWindow::GUIWindow(const GUIWindow &someGUIWindow)
|
||||
: mhWnd(0), mDisposition(Assume)
|
||||
{ // private implementation
|
||||
*this=someGUIWindow;
|
||||
}
|
||||
|
||||
inline
|
||||
GUIWindow::operator HWND(void)const
|
||||
{
|
||||
return (isValid()?mhWnd:0);
|
||||
}
|
||||
|
||||
inline
|
||||
HMENU GUIWindow::getMenu(void)const
|
||||
{
|
||||
return (isValid()?::GetMenu(mhWnd):0);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::setHandle(HWND hWnd)
|
||||
{
|
||||
mhWnd=hWnd;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::operator==(const GUIWindow &someGUIWindow)const
|
||||
{
|
||||
return (HWND)*this==(HWND)someGUIWindow;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::width(WORD width)
|
||||
{
|
||||
return setWindowPos(width,height());
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::height(WORD height)
|
||||
{
|
||||
return setWindowPos(width(),height);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::setWindowPos(int width,int height)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::SetWindowPos(*this,HWND_BOTTOM,0,0,width,height,SWP_NOMOVE|SWP_NOZORDER);
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::enable(WORD isEnabled)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::EnableWindow(mhWnd,isEnabled);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::setFocus(void)const
|
||||
{
|
||||
if(isValid())::SetFocus(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::setFocus(GUIWindow &someGUIWindow)const
|
||||
{
|
||||
if(!isValid()||!someGUIWindow.isValid())return;
|
||||
::SetFocus(someGUIWindow);
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::top(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::BringWindowToTop(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
int GUIWindow::show(int nCmdShow)const
|
||||
{
|
||||
if(isValid())return ::ShowWindow(mhWnd,nCmdShow);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::update(void)const
|
||||
{
|
||||
if(isValid())::UpdateWindow(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::clear(void)const
|
||||
{
|
||||
if(!isValid())return;
|
||||
::InvalidateRect(mhWnd,0,TRUE);
|
||||
::UpdateWindow(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::invalidate(WORD eraseBackGround)const
|
||||
{
|
||||
if(!isValid())return;
|
||||
::InvalidateRect(mhWnd,0,eraseBackGround);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::invalidate(const Rect &invalidRect,BOOL eraseBackground)const
|
||||
{
|
||||
if(!isValid())return;
|
||||
// ::InvalidateRect(mhWnd,&(RECT&)invalidRect,eraseBackground);
|
||||
::InvalidateRect(mhWnd,&((Rect&)invalidRect).getRect(),eraseBackground);
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::close(void)
|
||||
{
|
||||
if(!isValid())return;
|
||||
sendMessage(*this,WM_CLOSE,0,0L);
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::setTimer(WORD timerIdentifier,UINT timeOut)
|
||||
{
|
||||
if(!isValidHandler(VectorHandler::TimerHandler,timerIdentifier))return FALSE;
|
||||
::SetTimer((HWND)*this,timerIdentifier,timeOut,0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
inline
|
||||
GUIWindow::Disposition GUIWindow::disposition(void)const
|
||||
{
|
||||
return mDisposition;
|
||||
}
|
||||
|
||||
inline
|
||||
void GUIWindow::disposition(Disposition disposition)
|
||||
{
|
||||
mDisposition=disposition;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::isVisible(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::IsWindowVisible(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::isIconic(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::IsIconic(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
HWND GUIWindow::parent(void)const
|
||||
{
|
||||
if(!isValid())return (HWND)0;
|
||||
return ::GetParent(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::releaseCapture(void)const
|
||||
{
|
||||
return ::ReleaseCapture();
|
||||
}
|
||||
|
||||
inline
|
||||
HWND GUIWindow::setCapture(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::SetCapture(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
bool GUIWindow::hasCapture(void)const
|
||||
{
|
||||
if(!isValid())return false;
|
||||
return mhWnd==::GetCapture();
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::setRedraw(BOOL redrawFlag)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
sendMessage(WM_SETREDRAW,redrawFlag,0L);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::bringWindowToTop(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::BringWindowToTop(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL GUIWindow::isWindowVisible(void)const
|
||||
{
|
||||
if(!isValid())return FALSE;
|
||||
return ::IsWindowVisible(mhWnd);
|
||||
}
|
||||
|
||||
inline
|
||||
bool GUIWindow::hasChildren(void)const
|
||||
{
|
||||
if(!isValid())return false;
|
||||
return (::GetWindow(mhWnd,GW_CHILD)?true:false);
|
||||
}
|
||||
|
||||
inline
|
||||
HWND GUIWindow::getChild(void)const
|
||||
{
|
||||
if(!isValid())return (HWND)0;
|
||||
return ::GetWindow(mhWnd,GW_CHILD);
|
||||
}
|
||||
|
||||
inline
|
||||
bool GUIWindow::flash(BOOL invert)const
|
||||
{
|
||||
if(!isValid())return false;
|
||||
return ::FlashWindow(mhWnd,invert);
|
||||
}
|
||||
|
||||
inline
|
||||
bool GUIWindow::loadAccelerators(const String &strAcceleratorTable)
|
||||
{
|
||||
return mAccelerator.loadAccelerators(strAcceleratorTable);
|
||||
}
|
||||
|
||||
inline
|
||||
bool GUIWindow::loadAccelerators(UINT resID)
|
||||
{
|
||||
return mAccelerator.loadAccelerators(resID);
|
||||
}
|
||||
|
||||
inline
|
||||
HWND GUIWindow::getHandle(void)const
|
||||
{
|
||||
return mhWnd;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD GUIWindow::isValid(void)const
|
||||
{
|
||||
return (mhWnd&&::IsWindow(mhWnd));
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user