www.pudn.com > uoth_src.zip > MainWnd.h
#ifndef DSSI_MAINWND_H #define DSSI_MAINWND_H //----------------------------------------------------------------------------- // // @doc // // @module MainWnd.h - Main window | // // This module contains the definition of the main window. // // Copyright (c) 2002 - Descartes Systems Sciences, Inc. // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // 2. Neither the name of Descartes Systems Sciences, Inc nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // @end // // $History: CnfMainWnd.h $ // //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // // Required include files // //----------------------------------------------------------------------------- #include "resource.h" #include "MapWnd.h" #include "RegionWnd.h" #include "uoth.h" #include "TBCustomizeDlg.h" //----------------------------------------------------------------------------- // // Forward definitions // //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // // Class definition // //----------------------------------------------------------------------------- class CMainWnd : public CFrameWindowImpl, public CUpdateUI , public CMessageFilter, public CIdleHandler { // @access Enumerations public: DECLARE_FRAME_WND_CLASS (NULL, IDR_MAIN_WND) // @access Constructors and destructors public: // @cmember General constructor CMainWnd (); // @cmember General destructor ~CMainWnd (); // @access Public methods public: // @cmember Create the window HWND Create (); // @cmember Set the status bar text void SetStatusBarText (LPCTSTR pszText); // @cmember Show world void ShowWorld (); // @cmember Show the region void ShowRegion (int nRegion, int nTreasure = 0); // @access ATL interface list public: BEGIN_MSG_MAP (CMainWnd) extern UINT g_umAppUpdate; MESSAGE_HANDLER (WM_CREATE, OnCreate) MESSAGE_HANDLER (WM_ERASEBKGND, OnEraseBackground) MESSAGE_HANDLER (WM_DESTROY, OnDestroy) MESSAGE_HANDLER (g_umAppUpdate, OnAppUpdate) MESSAGE_HANDLER (WM_INITMENUPOPUP, OnInitMenuPopup) if (uMsg == WM_COMMAND && m_hWndClient != NULL) { if (::SendMessage (m_hWndClient, uMsg, wParam, lParam) != 0) return TRUE; } COMMAND_ID_HANDLER (ID_FILE_PAGE_SETUP, OnFilePageSetup) COMMAND_ID_HANDLER (ID_FILE_PRINT, OnFilePrint); COMMAND_ID_HANDLER (ID_APP_EXIT, OnAppExit); COMMAND_ID_HANDLER (ID_APP_ABOUT, OnAppAbout); COMMAND_ID_HANDLER (ID_VIEW_OPTIONS, OnViewOptions); COMMAND_ID_HANDLER (ID_VIEW_WORLD, OnViewWorld); COMMAND_ID_HANDLER (ID_VIEW_REGION, OnViewRegionDropDown); COMMAND_ID_HANDLER (ID_VIEW_STAY_ON_TOP, OnViewStayOnTop); COMMAND_ID_HANDLER (ID_VIEW_TREASURE_INFORMATION, OnViewTreasureInformation); COMMAND_ID_HANDLER (ID_VIEW_LEVEL_INFORMATION, OnViewLevelInformation); COMMAND_ID_HANDLER (ID_EDIT_I_JUST_GOT, OnEditIJustGot); COMMAND_ID_HANDLER (ID_EDIT_I_JUST_COMPLETED, OnEditIJustGot); COMMAND_ID_HANDLER (ID_VIEW_CHARACTERS_MANAGE, OnViewManageCharacters); COMMAND_ID_HANDLER (ID_VIEW_RUNE_LIBRARIES_MANAGE, OnViewManageRuneLibraries); COMMAND_ID_HANDLER (ID_POPUP_CUSTOMIZE_TOOLBAR, OnPopupCustomizeToolbar); COMMAND_ID_HANDLER (ID_EDIT_FILTER, OnEditFilter); COMMAND_ID_HANDLER (ID_FILE_UOAM_EXPORT, OnFileUOAMExport); COMMAND_RANGE_HANDLER (ID_VIEW_REGION_FIRST, ID_VIEW_REGION_LAST, OnViewRegion); COMMAND_RANGE_HANDLER (ID_VIEW_CHARACTER_FIRST, ID_VIEW_CHARACTER_LAST, OnViewCharacter); COMMAND_RANGE_HANDLER (ID_VIEW_RUNE_LIBRARY_FIRST, ID_VIEW_RUNE_LIBRARY_LAST, OnViewRuneLibrary); NOTIFY_CODE_HANDLER (TBN_HOTITEMCHANGE, OnHotItemChange) NOTIFY_CODE_HANDLER (TBN_DROPDOWN, OnTBDropDown) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, NM_RCLICK, OnToolbarRClick) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_QUERYINSERT, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_QUERYDELETE, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_GETBUTTONINFO, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_INITCUSTOMIZE, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_BEGINADJUST, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_ENDADJUST, OnCustomizeToolbar) NOTIFY_HANDLER (ATL_IDW_TOOLBAR, TBN_TOOLBARCHANGE, OnCustomizeToolbar) NOTIFY_ID_HANDLER (ATL_IDW_TOOLBAR, OnCustomizeToolbar) NOTIFY_CODE_HANDLER(TTN_GETDISPINFOA, OnToolTipTextA) NOTIFY_CODE_HANDLER(TTN_GETDISPINFOW, OnToolTipTextW) CHAIN_MSG_MAP (CUpdateUI ); CHAIN_MSG_MAP (CFrameWindowImpl ); REFLECT_NOTIFICATIONS (); END_MSG_MAP () BEGIN_UPDATE_UI_MAP (CMainWnd) UPDATE_ELEMENT (ID_VIEW_STAY_ON_TOP, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_VIEW_TREASURE_INFORMATION, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_VIEW_LEVEL_INFORMATION, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_I_JUST_GOT, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_I_JUST_COMPLETED, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_COPY, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_NEXT_REGION, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_PREVIOUS_REGION, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_NEXT_TREASURE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) UPDATE_ELEMENT (ID_EDIT_PREVIOUS_TREASURE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR) END_UPDATE_UI_MAP () // @access ATL message handlers public: // @cmember Handle post creation actions LRESULT OnCreate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); // @cmember Handle destroy LRESULT OnDestroy (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); // @cmember Handle app update LRESULT OnAppUpdate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) { if (m_hWnd) InvalidateRect (NULL); if (m_hWndClient) ::InvalidateRect (m_hWndClient, NULL, FALSE); return 1; } // @cmember Don't erase the background LRESULT OnEraseBackground (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) { return 1; } // @cmember Handle menu popup LRESULT OnInitMenuPopup (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); // Notification handlers public: // @cmember Hot item change LRESULT OnHotItemChange (int idCtrl, LPNMHDR pnmh, BOOL &bHandled); // @cmember Handle drop down press LRESULT OnTBDropDown (int idCtrl, LPNMHDR pnmh, BOOL &bHandled); // @cmember Handle right click of toolbar LRESULT OnToolbarRClick (int idCtrl, LPNMHDR pnmh, BOOL &bHandled); // @cmember Handle toolbar customization messages LRESULT OnCustomizeToolbar (int idCtrl, LPNMHDR pnmh, BOOL &bHandled); // @cmember Handle toolbar tooltip text (overridden because I have 3 // fields in my string.) LRESULT OnToolTipTextA(int idCtrl, LPNMHDR pnmh, BOOL& /*bHandled*/) { LPNMTTDISPINFOA pDispInfo = (LPNMTTDISPINFOA)pnmh; pDispInfo->szText[0] = 0; if((idCtrl != 0) && !(pDispInfo->uFlags & TTF_IDISHWND)) { char szBuff[256]; szBuff[0] = 0; int nRet = ::LoadStringA(_Module.GetResourceInstance(), idCtrl, szBuff, 256); for(int i = 0; i < nRet; i++) { if(szBuff[i] == '\n') { for (int j = i + 1; j < nRet; j++) { if (szBuff [j] == '\n') { szBuff [j] = 0; break; } } lstrcpynA(pDispInfo->szText, &szBuff[i + 1], sizeof(pDispInfo->szText) / sizeof(pDispInfo->szText[0])); break; } } #if (_WIN32_IE >= 0x0300) if(nRet > 0) // string was loaded, save it pDispInfo->uFlags |= TTF_DI_SETITEM; #endif //(_WIN32_IE >= 0x0300) } return 0; } // @cmember Handle toolbar tooltip text (overridden because I have 3 // fields in my string.) LRESULT OnToolTipTextW(int idCtrl, LPNMHDR pnmh, BOOL& /*bHandled*/) { LPNMTTDISPINFOW pDispInfo = (LPNMTTDISPINFOW)pnmh; pDispInfo->szText[0] = 0; if((idCtrl != 0) && !(pDispInfo->uFlags & TTF_IDISHWND)) { wchar_t szBuff[256]; szBuff[0] = 0; int nRet = ::LoadStringW(_Module.GetResourceInstance(), idCtrl, szBuff, 256); for(int i = 0; i < nRet; i++) { if(szBuff[i] == L'\n') { for (int j = i + 1; j < nRet; j++) { if (szBuff [j] == '\n') { szBuff [j] = 0; break; } } lstrcpynW(pDispInfo->szText, &szBuff[i + 1], sizeof(pDispInfo->szText) / sizeof(pDispInfo->szText[0])); break; } } #if (_WIN32_IE >= 0x0300) if(nRet > 0) // string was loaded, save it pDispInfo->uFlags |= TTF_DI_SETITEM; #endif //(_WIN32_IE >= 0x0300) } return 0; } // Command handlers public: // @cmember Handle file print LRESULT OnFilePrint (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle an app exit request LRESULT OnAppExit (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle about box LRESULT OnAppAbout (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle view options LRESULT OnViewOptions (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember View the world LRESULT OnViewWorld (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember View a region LRESULT OnViewRegion (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember View a region LRESULT OnViewRegionDropDown (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Stay on top LRESULT OnViewStayOnTop (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember View treasure information LRESULT OnViewTreasureInformation (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember View level information LRESULT OnViewLevelInformation (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Change map counts LRESULT OnEditIJustGot (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Select current character LRESULT OnViewCharacter (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Manage characters LRESULT OnViewManageCharacters (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Select current rune library LRESULT OnViewRuneLibrary (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Manage rune libraries LRESULT OnViewManageRuneLibraries (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle customize of toolbar LRESULT OnPopupCustomizeToolbar (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle file page setup LRESULT OnFilePageSetup (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Edit the filter LRESULT OnEditFilter (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @cmember Handle file UOAM export LRESULT OnFileUOAMExport (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // @access Virtual ATL methods public: // @cmember Translate the messages virtual BOOL PreTranslateMessage (MSG *pMsg) { if (CFrameWindowImpl ::PreTranslateMessage (pMsg)) return TRUE; return FALSE; } // @cmember Idle update virtual BOOL OnIdle (); // @cmember Handle the final message virtual void OnFinalMessage (HWND hWnd); // @access Protected methods protected: // @cmember Initialize the tack drawing void InitializeTacks (); // @cmember Load the toolbar buttons void LoadToolbarButtons (); // @cmember Update the toolbar void UpdateToolbar (); // @cmember Update the status of a button void UpdateButton (TBBUTTON *pButton); // @cmember Save the toolbar buttons void SaveToolbarButtons (); // @access Protected variables protected: // @cmember The REAL tool bar CToolBarCtrl m_wndToolBar; // @cmember Command bar (toolbar) CCommandBarCtrl m_wndCommandBar; // @cmember Windows CMapWnd m_hwndMap; // @cmember Windows CRegionWnd m_hwndRegion; // @cmember Current stay on top setting bool m_fStayOnTop; // @cmember Extra customization dialog CTBCustomizeDlg m_sTBDlg; // @cmember Toolbar text style TB_TextStyle m_nTextStyle; // @cmember Toolbar icon style TB_IconStyle m_nIconStyle; }; #endif // DSSI_MAINWND_H