Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / Browser / src / Mainfrm.cpp
diff --git a/research/transmission_spectroscopy/TOF/Win32++/samples/Browser/src/Mainfrm.cpp b/research/transmission_spectroscopy/TOF/Win32++/samples/Browser/src/Mainfrm.cpp
new file mode 100644 (file)
index 0000000..a0535cb
--- /dev/null
@@ -0,0 +1,429 @@
+////////////////////////////////////////////////////\r
+// Mainfrm.cpp\r
+\r
+#include "stdafx.h"\r
+#include "resource.h"\r
+#include "mainfrm.h"\r
+#include <shlobj.h>\r
+#include <sstream>\r
+\r
+\r
+// Definitions for the CMainFrame class\r
+CMainFrame::CMainFrame()\r
+{\r
+       //Set m_View as the view window of the frame\r
+       SetView(m_View);\r
+\r
+       // Set CMainFrame as our event sink\r
+       m_EventSink.SetSink(this);\r
+\r
+       // Set the registry key name, and load the initial window position\r
+       // Use a registry key name like "CompanyName\\Application"\r
+       LoadRegistrySettings(_T("Win32++\\Browser Sample"));\r
+}\r
+\r
+CMainFrame::~CMainFrame()\r
+{\r
+       // Destructor for CMainFrame.\r
+}\r
+\r
+void CMainFrame::AddComboBoxBand(int Listbox_Height)\r
+{\r
+       // Get the reference to the rebar object\r
+       CReBar& RB = GetReBar();\r
+       ReBarTheme RBTheme = RB.GetReBarTheme();\r
+\r
+       // Create the ComboboxEx window\r
+       m_ComboboxEx.Create(&GetReBar());\r
+\r
+       // Put the window in a new rebar band\r
+       REBARBANDINFO rbbi = {0};\r
+       rbbi.cbSize             = sizeof(REBARBANDINFO);\r
+       rbbi.fMask      = RBBIM_COLORS | RBBIM_CHILDSIZE | RBBIM_STYLE | RBBIM_CHILD | RBBIM_TEXT;\r
+       rbbi.cyMinChild = Listbox_Height;\r
+       rbbi.cyMaxChild = Listbox_Height;\r
+       rbbi.cxMinChild = 200;\r
+       rbbi.fStyle     = RBBS_BREAK | RBBS_VARIABLEHEIGHT | RBBS_GRIPPERALWAYS;\r
+       rbbi.clrFore    = GetSysColor(COLOR_BTNTEXT);\r
+       rbbi.clrBack    = RBTheme.clrBand1;\r
+       rbbi.hwndChild  = m_ComboboxEx.GetHwnd();\r
+       rbbi.lpText     = (LPTSTR)_T("Address");\r
+\r
+       RB.InsertBand(-1, rbbi);\r
+}\r
+\r
+void CMainFrame::ConnectEvents()\r
+{\r
+       IUnknown* pUnk = GetBrowser().GetAXWindow().GetUnknown();\r
+       if(!pUnk)\r
+               return;\r
+\r
+       IConnectionPoint* pcp;\r
+       pcp = GetConnectionPoint(DIID_DWebBrowserEvents2);\r
+       if(!pcp)\r
+               return;\r
+\r
+       pcp->Advise(&m_EventSink, &m_eventCookie);\r
+       pcp->Release();\r
+       pUnk->Release();\r
+}\r
+\r
+IConnectionPoint* CMainFrame::GetConnectionPoint(REFIID riid)\r
+{\r
+       IUnknown *pUnk = GetBrowser().GetAXWindow().GetUnknown();\r
+       if(!pUnk)\r
+               return NULL;\r
+\r
+       IConnectionPointContainer* pcpc;\r
+       IConnectionPoint* pcp = NULL;\r
+\r
+       HRESULT hr = pUnk->QueryInterface(IID_IConnectionPointContainer, (void**)&pcpc);\r
+       if(SUCCEEDED(hr))\r
+       {\r
+               pcpc->FindConnectionPoint(riid, &pcp);\r
+               pcpc->Release();\r
+       }\r
+\r
+       pUnk->Release();\r
+\r
+       return pcp;\r
+}\r
+\r
+void CMainFrame::OnBeforeNavigate2(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+}\r
+\r
+void CMainFrame::OnCommandStateChange(DISPPARAMS* pDispParams)\r
+{\r
+       CToolBar& TB = GetToolBar();\r
+\r
+       if (GetToolBar().IsWindow())\r
+       {\r
+               if ((pDispParams) && (pDispParams->cArgs == 2))\r
+               {\r
+                       if (pDispParams->rgvarg[1].vt == (VT_I4) && pDispParams->rgvarg[0].vt == (VT_BOOL))\r
+                       {\r
+                               VARIANT_BOOL bEnable = pDispParams->rgvarg[0].boolVal;\r
+                               int nCommand = pDispParams->rgvarg[1].intVal;\r
+                               {\r
+                                       switch (nCommand)\r
+                                       {\r
+                                       case 1: // Navigate forward:\r
+                                               bEnable ? TB.EnableButton(IDM_FORWARD) : TB.DisableButton(IDM_FORWARD);\r
+\r
+                                               break;\r
+                                       case 2: // Navigate back:\r
+                                               bEnable ? TB.EnableButton(IDM_BACK) : TB.DisableButton(IDM_BACK);\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)\r
+{\r
+       // Respond to menu and and toolbar input\r
+\r
+       CEdit* pEdit = m_ComboboxEx.GetEditCtrl();\r
+\r
+       switch(LOWORD(wParam))\r
+       {\r
+       case IDM_FILE_EXIT:\r
+               // End the application\r
+               PostMessage(WM_CLOSE, 0, 0);\r
+               return TRUE;\r
+       case IDM_HELP_ABOUT:\r
+               // Display the help dialog\r
+               OnHelp();\r
+               return TRUE;\r
+       case IDM_BACK:\r
+               m_View.GoBack();\r
+               return TRUE;\r
+       case IDM_FORWARD:\r
+               m_View.GoForward();\r
+               return TRUE;\r
+       case IDM_REFRESH:\r
+               m_View.Refresh();\r
+               return TRUE;\r
+       case IDM_STOP:\r
+               m_View.Stop();\r
+               return TRUE;\r
+       case IDM_HOME:\r
+               m_View.GoHome();\r
+               return TRUE;\r
+       case IDM_EDIT_CUT:\r
+               if (GetFocus() == pEdit)\r
+                       pEdit->Cut();\r
+               else\r
+                       m_View.ExecWB( OLECMDID_CUT, OLECMDEXECOPT_DODEFAULT, NULL, NULL );\r
+               return TRUE;\r
+       case IDM_EDIT_COPY:\r
+               if (GetFocus() == pEdit)\r
+                       pEdit->Copy();\r
+               else\r
+                       m_View.ExecWB( OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, NULL, NULL );\r
+               return TRUE;\r
+       case IDM_EDIT_PASTE:\r
+               if (GetFocus() == pEdit)\r
+                       pEdit->Paste();\r
+               else\r
+                       m_View.ExecWB( OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT, NULL, NULL );\r
+               return TRUE;\r
+       case IDM_EDIT_DELETE:\r
+               if (GetFocus() == pEdit)\r
+                       pEdit->Clear();\r
+#if !defined(__GNUC__)\r
+               else\r
+                       m_View.ExecWB( OLECMDID_DELETE, OLECMDEXECOPT_DODEFAULT, NULL, NULL );\r
+#endif\r
+               return TRUE;\r
+       case IDW_VIEW_STATUSBAR:\r
+               OnViewStatusBar();\r
+               return TRUE;\r
+       case IDW_VIEW_TOOLBAR:\r
+               OnViewToolBar();\r
+               return TRUE;\r
+       }\r
+\r
+       // Handle notification WM_COMMAND from ComboboxEx\r
+       if((HWND)lParam == m_ComboboxEx.GetHwnd())\r
+       {\r
+               switch(HIWORD(wParam))\r
+               {\r
+               case CBN_SELCHANGE:\r
+                       // User made selection from list\r
+                       {\r
+                               // Get text from edit box\r
+                               CString str = m_ComboboxEx.GetWindowText();\r
+\r
+                               // Navigate to web page\r
+                               m_View.Navigate(str);\r
+                       }\r
+                       return TRUE;\r
+               }\r
+       }\r
+\r
+       return FALSE;\r
+}\r
+\r
+void CMainFrame::OnDocumentBegin(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+       TRACE(_T("OnDocumentBegin\n"));\r
+}\r
+\r
+void CMainFrame::OnCreate()\r
+{\r
+       // Call the base function first\r
+       CFrame::OnCreate();\r
+\r
+       ConnectEvents();\r
+}\r
+\r
+void CMainFrame::OnDocumentComplete(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+       GetStatusBar().SetPartText(0, _T("Done"));\r
+}\r
+\r
+void CMainFrame::OnDownloadBegin(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+}\r
+\r
+void CMainFrame::OnDownloadComplete(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+}\r
+\r
+void CMainFrame::OnInitialUpdate()\r
+{\r
+       // The frame is now created.\r
+       // Place any additional startup code here.\r
+\r
+       m_View.GoHome();\r
+}\r
+\r
+void CMainFrame::OnNavigateComplete2(DISPPARAMS* pDispParams)\r
+{\r
+       CString str = _T("NavigateComplete2: ");\r
+\r
+       if (pDispParams->rgvarg[0].vt == (VT_BYREF|VT_VARIANT))\r
+       {\r
+               VARIANT vtURL;\r
+               vtURL = *pDispParams->rgvarg[0].pvarVal;\r
+               vtURL.vt = VT_BSTR;\r
+\r
+               str += vtURL.bstrVal;\r
+               TRACE(str);\r
+               VariantClear(&vtURL);\r
+       }\r
+\r
+       BSTR bstrUrlName;\r
+\r
+       HRESULT hr = GetBrowser().GetIWebBrowser2()->get_LocationURL(&bstrUrlName);\r
+       if (FAILED(hr))\r
+               return;\r
+\r
+       // Update the URL in the ComboboxEx edit box.\r
+       m_ComboboxEx.SetWindowText(W2T(bstrUrlName));\r
+       m_View.SetFocus();\r
+}\r
+\r
+void CMainFrame::OnNewWindow2(DISPPARAMS* pDispParams)\r
+{\r
+       UNREFERENCED_PARAMETER(pDispParams);\r
+       TRACE(_T("NewWindow2\n"));\r
+}\r
+\r
+LRESULT CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam)\r
+{\r
+       switch (((LPNMHDR)lParam)->code)\r
+       {\r
+       case CBEN_ENDEDIT:\r
+               {\r
+                       switch (((PNMCBEENDEDIT)lParam)->iWhy)\r
+                       {\r
+                       case CBENF_RETURN:\r
+                               // User hit return in edit box\r
+                               {\r
+                                       // Get text from edit box\r
+                                       CString str = m_ComboboxEx.GetWindowText();\r
+\r
+                                       // Insert text into the list box.\r
+                                       COMBOBOXEXITEM CBXitem = {0};\r
+                                       CBXitem.mask = CBEIF_TEXT;\r
+                                       CBXitem.pszText = (LPTSTR)str.c_str();\r
+                                       m_ComboboxEx.InsertItem(&CBXitem);\r
+\r
+                                       // Navigate to the web page\r
+                                       m_View.Navigate(str);\r
+                                       return FALSE;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       return CFrame::OnNotify(wParam, lParam);\r
+}\r
+\r
+void CMainFrame::OnProgressChange(DISPPARAMS* pDispParams)\r
+{\r
+       CString str;\r
+\r
+       if (pDispParams->cArgs != 0)\r
+       {\r
+               if (pDispParams->cArgs > 1 && pDispParams->rgvarg[1].vt == VT_I4)\r
+               {\r
+                       str.Format(_T("Progress = %d"), pDispParams->rgvarg[1].lVal);\r
+               }\r
+\r
+               if (pDispParams->rgvarg[0].vt == VT_I4)\r
+               {\r
+                       CString str2;\r
+                       str2.Format(_T(", ProgressMax = %d\n"), pDispParams->rgvarg[0].lVal);\r
+                       str = str + str2;\r
+               }\r
+\r
+               TRACE(str);\r
+   }\r
+}\r
+\r
+void CMainFrame::OnPropertyChange(DISPPARAMS* pDispParams)\r
+{\r
+       CString str;\r
+       if (pDispParams->cArgs > 0 && pDispParams->rgvarg[0].vt == VT_BSTR)\r
+               str.Format(_T("Property Change: %s\n"), (LPCTSTR)W2T(pDispParams->rgvarg[0].bstrVal));\r
+\r
+       TRACE(str);\r
+}\r
+\r
+void CMainFrame::OnStatusTextChange(DISPPARAMS* pDispParams)\r
+{\r
+       LPOLESTR lpStatusText = pDispParams->rgvarg->bstrVal;\r
+\r
+       if (GetStatusBar().IsWindow() && lpStatusText)\r
+       {\r
+               if (lstrcmp(W2T(lpStatusText), _T("")))\r
+               {\r
+                       GetStatusBar().SetPartText(0, W2T(lpStatusText));\r
+               }\r
+               else\r
+                       GetStatusBar().SetPartText(0, _T("Done"));\r
+       }\r
+}\r
+\r
+void CMainFrame::OnTitleChange(DISPPARAMS* pDispParams)\r
+{\r
+       TRACE(_T("TitleChange: \n"));\r
+    CString str;\r
+\r
+       if (pDispParams->cArgs > 0 && pDispParams->rgvarg[0].vt == VT_BSTR)\r
+       {\r
+        str = CString(pDispParams->rgvarg[0].bstrVal) + _T(" - ") + LoadString(IDW_MAIN);\r
+               TRACE(W2T(pDispParams->rgvarg[0].bstrVal));\r
+       }\r
+       else\r
+               str = LoadString(IDW_MAIN);\r
+\r
+       SetWindowText(str);\r
+}\r
+\r
+void CMainFrame::SetupToolBar()\r
+{\r
+       // Set the Resource IDs for the toolbar buttons\r
+       AddToolBarButton( IDM_BACK   );\r
+       AddToolBarButton( IDM_FORWARD );\r
+       AddToolBarButton( 0 );                          // Separator\r
+       AddToolBarButton( IDM_REFRESH );\r
+       AddToolBarButton( IDM_STOP );\r
+       AddToolBarButton( 0 );                          // Separator\r
+       AddToolBarButton( IDM_HOME );\r
+\r
+       // Set the image lists for normal, hot and disabled buttons\r
+    int BitsPerPixel = GetDesktopWindow()->GetDC()->GetDeviceCaps(BITSPIXEL);\r
+       if (GetWinVersion() >= 2501 && LoadBitmap(MAKEINTRESOURCE(IDB_TOOLBAR32_NORM)) && BitsPerPixel == 32)\r
+       {\r
+               // Use 32bit bitmaps for XP and above (support for 32bit bitmaps began with XP)\r
+               SetToolBarImages(RGB(0,0,0), IDB_TOOLBAR32_NORM, IDB_TOOLBAR32_HOT, IDB_TOOLBAR32_DIS);\r
+       }\r
+       else\r
+       {\r
+               // Use 24bit bitmaps for Win2000 and below\r
+               SetToolBarImages(RGB(255,0,255), IDB_TOOLBAR24_NORM, IDB_TOOLBAR24_HOT, IDB_TOOLBAR24_DIS);\r
+       }\r
+\r
+       std::vector<UINT> IconData;\r
+       if (IsReBarUsed())\r
+       {\r
+               int Height = 22;\r
+               AddComboBoxBand(Height);\r
+\r
+               // Set the icons for popup menu items\r
+               IconData.push_back ( IDM_FILE_NEW  );\r
+               IconData.push_back ( IDM_FILE_OPEN );\r
+               IconData.push_back ( IDM_FILE_SAVE );\r
+               IconData.push_back ( IDM_EDIT_CUT  );\r
+               IconData.push_back ( IDM_EDIT_COPY );\r
+               IconData.push_back ( IDM_EDIT_PASTE);\r
+               IconData.push_back ( IDM_FILE_PRINT);\r
+               IconData.push_back ( IDM_HELP_ABOUT);\r
+       }\r
+\r
+       AddMenuIcons(IconData, RGB(192, 192, 192), IDW_MAIN, 0);\r
+}\r
+\r
+LRESULT CMainFrame::WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+//     switch (uMsg)\r
+//     {\r
+               //Additional messages to be handled go here\r
+//     }\r
+\r
+       // pass unhandled messages on for default processing\r
+       return WndProcDefault(uMsg, wParam, lParam);\r
+}\r
+\r

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