tagging release
[dasher.git] / trunk / Src / Win32 / DasherWindow.h
blob3b7138524ffff1db10f03de1692f3e334e840518
1 // DasherWindow.h
2 //
3 /////////////////////////////////////////////////////////////////////////////
4 //
5 // Copyright (c) 2002 Iain Murray, Inference Group, Cavendish, Cambridge.
6 //
7 /////////////////////////////////////////////////////////////////////////////
9 #ifndef __DasherWindow_h__
10 #define __DasherWindow_h__
12 #include "resource.h"
14 #include "Widgets/Splitter.h"
15 #include "Widgets/Menu.h"
16 #include "Widgets/SplashScreen.h"
17 #include "Widgets/WindowSelect.h"
18 #include "DasherMouseInput.h"
19 #include "AppSettings.h"
20 #include "GameModeHelper.h"
22 #include "../Common/WinOptions.h"
24 class CToolbar;
25 class CSlidebar;
26 namespace Dasher {
27 class CDasher;
30 // Abstract interfaces to the Dasher engine
31 #include "../../DasherCore/DasherInterfaceBase.h"
33 class CDasherWindow :
34 public ATL::CWindowImpl<CDasherWindow>,
35 public CSplitterOwner
37 public:
38 CDasherWindow();
39 ~CDasherWindow();
41 DECLARE_WND_CLASS(_T("DASHER") )
43 BEGIN_MSG_MAP( CDasherWindow )
44 MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
45 MESSAGE_HANDLER(WM_COMMAND, OnCommand)
46 MESSAGE_HANDLER(WM_CLOSE, OnClose)
47 MESSAGE_HANDLER(WM_SIZE, OnSize)
48 MESSAGE_HANDLER(WM_GETMINMAXINFO,OnGetMinMaxInfo)
49 MESSAGE_HANDLER(WM_INITMENUPOPUP,OnInitMenuPopup)
50 MESSAGE_HANDLER(WM_SETFOCUS,OnSetFocus)
51 MESSAGE_RANGE_HANDLER(0xC000,0xFFFF,OnOther)
52 END_MSG_MAP()
54 LRESULT OnSetFocus(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
55 LRESULT OnInitMenuPopup(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
56 LRESULT OnGetMinMaxInfo(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
57 LRESULT OnOther(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
58 LRESULT OnDasherEvent(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
59 LRESULT OnDasherFocus(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
60 LRESULT OnSize(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
61 LRESULT OnDestroy(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
62 LRESULT OnClose(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
63 LRESULT OnCommand(UINT message, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
66 // Create window (and children)
67 // failure returns NULL
68 HWND Create();
70 void Show(int nCmdShow);
72 int MessageLoop();
74 private:
76 // Main processing function, called by MessageLoop
77 void Main();
79 void SaveWindowState() const;
80 bool LoadWindowState();
82 Dasher::CDasher *m_pDasher;
84 HACCEL hAccelTable;
86 // Method to set values of all settings in the menu
87 void PopulateSettings();
89 ///
90 /// Handle control events
91 ///
93 void HandleControlEvent(int iID);
95 void HandleParameterChange(int iParameter);
97 // Widgets:
98 CToolbar *m_pToolbar;
99 CEdit *m_pEdit;
100 CCanvas *m_pCanvas;
101 CSplitter *m_pSplitter;
102 CSlidebar *m_pSlidebar;
103 CMenu WinMenu;
104 CSplash *Splash;
106 CAppSettings *m_pAppSettings;
108 HICON m_hIconSm;
110 LPCWSTR AutoOffset;
111 LPCWSTR DialogCaption;
112 char tmpAutoOffset[25];
114 // Misc window handling
115 void Layout();
117 CGameModeHelper *m_pGameModeHelper;
121 #endif /* #ifdef __MainWindow_h__ */