#pragma once
#ifndef __HWINFORM_H__
#define __HWINFORM_H__
#include "hwindef.h"
#include "hwinmessage.h"
#include "hwinclass.h"
#include "hwincontainercontrol.h"
namespace harlinn
{
namespace windows
{
class Menu;
class MenuBar;
// --------------------------------------------------------------------
// Form
// --------------------------------------------------------------------
class MenuBar;
class Form : public ContainerControl
{
bool shown;
std::shared_ptr<MenuBar> menuBar;
private:
public:
typedef ContainerControl Base;
HWIN_EXPORT Form( );
protected:
HWIN_EXPORT virtual std::shared_ptr<WindowClass> GetWindowClass() const;
public:
HWIN_EXPORT virtual DWORD GetStyle() const;
HWIN_EXPORT virtual void HandleMessage(Message& message);
HWIN_EXPORT Form& Close();
HWIN_EXPORT Form& DrawMenuBar();
HWIN_EXPORT std::shared_ptr<MenuBar> GetMenu() const;
HWIN_EXPORT Form& SetMenu(std::shared_ptr<MenuBar> theMenu);
HWIN_EXPORT Form& GetMenuBarInfo(LONG idObject,LONG idItem,PMENUBARINFO pmbi);
HWIN_EXPORT Form& GetMenuBarInfo(LONG idObject,LONG idItem,MENUBARINFO& pmbi);
HWIN_EXPORT MENUBARINFO GetMenuBarInfo(LONG idObject,LONG idItem);
boost::signals2::signal<void (Form* theForm,Message& message)> OnActivate;
boost::signals2::signal<void (Form* theForm,Message& message)> OnActivateApp;
boost::signals2::signal<void (Form* theForm,Message& message)> OnDevModeChange;
boost::signals2::signal<void (Form* theForm,Message& message)> OnEndSession;
boost::signals2::signal<void (Form* theForm,Message& message)> OnFontChange;
boost::signals2::signal<void (Form* theForm,Message& message)> OnGetMinMaxInfo;
boost::signals2::signal<void (Form* theForm,Message& message)> OnIconEraseBackground;
boost::signals2::signal<void (Form* theForm,Message& message)> OnMouseActivate;
boost::signals2::signal<void (Form* theForm,Message& message)> OnPaintIcon;
boost::signals2::signal<void (Form* theForm,Message& message)> OnPowerBroadcast;
boost::signals2::signal<void (Form* theForm,Message& message)> OnQueryDragIcon;
boost::signals2::signal<void (Form* theForm,Message& message)> OnQueryEndSession;
boost::signals2::signal<void (Form* theForm,Message& message)> OnQueryOpen;
boost::signals2::signal<void (Form* theForm,Message& message)> OnSettingChange;
boost::signals2::signal<void (Form* theForm)> OnShown;
boost::signals2::signal<void (Form* theForm,Message& message)> OnTimeChange;
protected:
HWIN_EXPORT virtual void DoOnHandleCreated( );
HWIN_EXPORT virtual void DoOnActivate(Message& message);
HWIN_EXPORT virtual void DoOnActivateApp(Message& message);
HWIN_EXPORT virtual void DoOnDevModeChange(Message& message);
HWIN_EXPORT virtual void DoOnEndSession(Message& message);
HWIN_EXPORT virtual void DoOnFontChange(Message& message);
HWIN_EXPORT virtual void DoOnGetMinMaxInfo(Message& message);
HWIN_EXPORT virtual void DoOnIconEraseBackground(Message& message);
HWIN_EXPORT virtual void DoOnMouseActivate(Message& message);
HWIN_EXPORT virtual void DoOnPaintIcon(Message& message);
HWIN_EXPORT virtual void DoOnPowerBroadcast(Message& message);
HWIN_EXPORT virtual void DoOnQueryDragIcon(Message& message);
HWIN_EXPORT virtual void DoOnQueryEndSession(Message& message);
HWIN_EXPORT virtual void DoOnQueryOpen(Message& message);
HWIN_EXPORT virtual void DoOnSettingChange(Message& message);
HWIN_EXPORT virtual void DoOnShown();
HWIN_EXPORT virtual void DoOnShowWindow(Message& message);
HWIN_EXPORT virtual void DoOnTimeChange(Message& message);
};
}
}
#endif // __HWINFORM_H__