Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / RibbonSimple / src / View.cpp
1 ///////////////////////////////\r
2 // View.cpp\r
3 \r
4 #include "stdafx.h"\r
5 #include "View.h"\r
6 #include "resource.h"\r
7 #include "RibbonUI.h"\r
8 \r
9 // Definitions for the CView class\r
10 \r
11 void CView::OnCreate()\r
12 {\r
13         // OnCreate is called automatically during window creation when a\r
14         // WM_CREATE message received.\r
15 \r
16         // Tasks such as setting the icon, creating child windows, or anything\r
17         // associated with creating windows are normally performed here.\r
18 \r
19         TRACE(_T("OnCreate\n"));\r
20         \r
21         // Set the window's icon\r
22         SetIconSmall(IDI_SMALL);\r
23         SetIconLarge(IDI_SIMPLERIBBON);\r
24 \r
25         // Set the window title\r
26         SetWindowText(LoadString(IDS_APP_TITLE).c_str());\r
27 \r
28         if (GetWinVersion() >= 2601)            // Ribbon only supported on Windows 7 and above\r
29         {\r
30                 if (CreateRibbon(this))\r
31                         TRACE(_T("Ribbon Created Succesfully\n"));\r
32                 else\r
33                         TRACE(_T("Failed to create ribbon\n"));\r
34         }\r
35 \r
36 }\r
37 \r
38 void CView::OnDestroy()\r
39 {\r
40         if (GetWinVersion() >= 2601)            // Ribbon only supported on Windows 7 and above\r
41         {\r
42                 DestroyRibbon();\r
43         }\r
44 \r
45         // End the application when the window is destroyed\r
46         ::PostQuitMessage(0);\r
47 }\r
48 \r
49 void CView::OnDraw(CDC* pDC)\r
50 {\r
51         // OnPaint is called automatically whenever a part of the\r
52         // window needs to be repainted.\r
53 \r
54         // Centre some text in our view window\r
55         CRect r = GetClientRect();\r
56         r.top += GetRibbonHeight();\r
57         pDC->DrawText(_T("Simple Ribon Demo"), -1, r, DT_CENTER|DT_VCENTER|DT_SINGLELINE);\r
58 }\r
59 \r
60 void CView::OnInitialUpdate()\r
61 {\r
62         // OnInitialUpdate is called after the window is created.\r
63         // Tasks which are to be done after the window is created go here.\r
64 \r
65         TRACE(_T("OnInitialUpdate\n"));\r
66 }\r
67 \r
68 void CView::OnSize()\r
69 {\r
70         CRect r = GetClientRect();\r
71         r.top += GetRibbonHeight();\r
72         InvalidateRect(&r);\r
73 }\r
74 \r
75 void CView::PreCreate(CREATESTRUCT& cs)\r
76 {\r
77         // This function will be called automatically by Create. It provides an\r
78         // opportunity to set various window parameters prior to window creation.\r
79         // You are not required to set these parameters, any paramters which\r
80         // aren't specified are set to reasonable defaults.\r
81 \r
82         // Set some optional parameters for the window\r
83         cs.dwExStyle = WS_EX_CLIENTEDGE;                // Extended style\r
84         cs.lpszClass = _T("View Window");               // Window Class\r
85         cs.x = 50;                                                              // top x\r
86         cs.y = 50;                                                              // top y\r
87         cs.cx = 400;                                                    // width\r
88         cs.cy = 300;                                                    // height\r
89 }\r
90 \r
91 STDMETHODIMP CView::Execute(UINT32 nCmdID, UI_EXECUTIONVERB verb, const PROPERTYKEY* key, const PROPVARIANT* ppropvarValue, IUISimplePropertySet* pCommandExecutionProperties)\r
92 {\r
93         UNREFERENCED_PARAMETER(pCommandExecutionProperties);\r
94         UNREFERENCED_PARAMETER(ppropvarValue);\r
95         UNREFERENCED_PARAMETER(key);\r
96         UNREFERENCED_PARAMETER(verb);\r
97 \r
98         HRESULT hr = S_OK;\r
99         switch(nCmdID)\r
100         {\r
101         case cmdButton1:\r
102                 TRACE(_T("Button 1\n"));\r
103                 break;\r
104         case cmdButton2:\r
105                 TRACE(_T("Button 2\n"));\r
106                 break;\r
107         case cmdButton3:\r
108                 TRACE(_T("Button 3\n"));\r
109                 break;\r
110         case cmdButton4:\r
111                 TRACE(_T("Button 4\n"));\r
112                 break;\r
113         case cmdButton5:\r
114                 TRACE(_T("Button 5\n"));\r
115                 break;\r
116         case cmdButton6:\r
117                 TRACE(_T("Button 6\n"));\r
118                 break;\r
119         case cmdToggleButton1:\r
120                 TRACE(_T("Toggle Button 1\n"));\r
121                 break;\r
122         case cmdToggleButton2:\r
123                 TRACE(_T("Toggle Button 2\n"));\r
124                 break;\r
125         case IDC_CMD_EXIT:\r
126                 TRACE(_T("Exit button\n"));\r
127                 break;\r
128         default:\r
129                 TRACE(_T("Unknown button\n"));\r
130                 break;\r
131         }\r
132 \r
133         return hr; \r
134 }\r
135 \r
136 STDMETHODIMP CView::OnViewChanged(UINT32 viewId, UI_VIEWTYPE typeId, IUnknown* pView, UI_VIEWVERB verb, INT32 uReasonCode)\r
137 {\r
138                 UNREFERENCED_PARAMETER(viewId);\r
139                 UNREFERENCED_PARAMETER(uReasonCode);\r
140 \r
141                 HRESULT hr = E_NOTIMPL;\r
142 \r
143                 // Checks to see if the view that was changed was a Ribbon view.\r
144                 if (UI_VIEWTYPE_RIBBON == typeId)\r
145                 {\r
146                         switch (verb)\r
147                         {           \r
148                                 // The view was newly created.\r
149                         case UI_VIEWVERB_CREATE:\r
150                                 hr = S_OK;\r
151                                 break;\r
152 \r
153                                 // The view has been resized.  For the Ribbon view, the application should\r
154                                 // call GetHeight to determine the height of the ribbon.\r
155                         case UI_VIEWVERB_SIZE:\r
156                                 {\r
157                                         IUIRibbon* pRibbon = NULL;\r
158                                         UINT uRibbonHeight;\r
159 \r
160                                         hr = ((IUnknown*)pView)->QueryInterface(IID_PPV_ARGS(&pRibbon));\r
161                                         if (SUCCEEDED(hr))\r
162                                         {\r
163                                                 // Call to the framework to determine the desired height of the Ribbon.\r
164                                                 hr = pRibbon->GetHeight(&uRibbonHeight);\r
165                                                 m_uRibbonHeight = uRibbonHeight;\r
166                                                 pRibbon->Release();\r
167                                                 // Use the ribbon height to position controls in the client area of the window.\r
168                                         }\r
169                                 }\r
170                                 break;\r
171                                 // The view was destroyed.\r
172                         case UI_VIEWVERB_DESTROY:\r
173                                 hr = S_OK;\r
174                                 break;\r
175                         }\r
176                 }  \r
177 \r
178                 return hr; \r
179 }\r
180 \r
181 LRESULT CView::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
182 {\r
183         switch (uMsg)\r
184         {\r
185         case WM_DESTROY:\r
186                 OnDestroy();\r
187                 break;\r
188         case WM_SIZE:\r
189                 OnSize();\r
190                 break;  // and also do default processing for this message\r
191         }\r
192 \r
193         // pass unhandled messages on for default processing\r
194         return WndProcDefault(uMsg, wParam, lParam);\r
195 }\r
196 \r

UCC git Repository :: git.ucc.asn.au