// EmbeddedPreviewFrame.cpp // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "IPCData.h" #include "EmbeddedPreviewView.h" #include "EmbeddedPreviewFrame.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CEmbeddedPreviewFrame IMPLEMENT_DYNCREATE(CEmbeddedPreviewFrame, CFrameWnd) CEmbeddedPreviewFrame::CEmbeddedPreviewFrame() : m_bSettingValid(FALSE) , WM_EMBEDDED_PREVIEW_FRAME_ON_MOVE( ::RegisterWindowMessage(EMBEDDED_PREVIEW_FRAME_ON_MOVE_MSG_ID)) { memset(&m_Settings, 0, sizeof(m_Settings)); } CEmbeddedPreviewFrame::~CEmbeddedPreviewFrame() { } BEGIN_MESSAGE_MAP(CEmbeddedPreviewFrame, CFrameWnd) //{{AFX_MSG_MAP(CEmbeddedPreviewFrame) ON_WM_CREATE() ON_WM_NCHITTEST_EX() ON_WM_CLOSE() ON_WM_SYSCOMMAND() ON_WM_MOVE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CEmbeddedPreviewFrame message handlers int CEmbeddedPreviewFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndView.Create(_T("STATIC"), NULL, WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) { TRACE0("Failed to create view window\n"); return -1; } if (!InitCommandBars()) return -1; CXTPCommandBars* pCommandBars = GetCommandBars(); // Set Special Image Manager CXTPImageManager* pImagerManager = new CXTPImageManager(); pImagerManager->SetMaskColor(RGB(0, 0xFF, 0)); pImagerManager->RemoveAll(); pCommandBars->SetImageManager(pImagerManager); CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), 0); pMenuBar->SetFlags(xtpFlagIgnoreSetMenuMessage); pCommandBars->EnableActions(); pCommandBars->m_bDesignerMode = FALSE; pCommandBars->SetCustomizeMode(FALSE); pCommandBars->GetPaintManager()->m_bAutoResizeIcons = TRUE; return 0; } BOOL CEmbeddedPreviewFrame::PreCreateWindow(CREATESTRUCT& cs) { if (!CFrameWnd::PreCreateWindow(cs)) return FALSE; cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; cs.dwExStyle &= ~WS_EX_CLIENTEDGE; return TRUE; } LRESULT CEmbeddedPreviewFrame::OnNcHitTest(CPoint /*point*/) { return HTCLIENT; } void CEmbeddedPreviewFrame::OnClose() { // Do nothing. } void CEmbeddedPreviewFrame::OnSysCommand(UINT nID, LPARAM lParam) { if (SC_CLOSE != nID && SC_MAXIMIZE != nID && SC_MINIMIZE != nID && SC_RESTORE != nID && SC_MOVE != nID) { CXTPFrameWnd::OnSysCommand(nID, lParam); } } void CEmbeddedPreviewFrame::Serialize(CArchive& ar) { CXTPPropExchangeArchive px(ar); DoPropExchange(&px); } void CEmbeddedPreviewFrame::DoPropExchange(CXTPPropExchange* pPX) { _ASSERTE(pPX->IsLoading()); CXTPCommandBars* pCommandBars = GetCommandBars(); CXTPImageManager* pImageManager = pCommandBars->GetImageManager(); for (int i = pCommandBars->GetCount() - 1; i >= 0; i--) { pCommandBars->Remove(pCommandBars->GetAt(i)); } pCommandBars->GetActions()->RemoveAll(); pCommandBars->GetContextMenus()->RemoveAll(); // Load Docking Position and Controls XTP_COMMANDBARS_PROPEXCHANGE_PARAM param; param.bSerializeControls = TRUE; param.bSerializeDesignerControls = TRUE; param.bSerializeActions = TRUE; pCommandBars->DoPropExchange(pPX, ¶m); // Icons CXTPPropExchangeSection secImages(pPX->GetSection(_T("Images"))); pImageManager->DoPropExchange(&secImages); // Accelerators: CXTPPropExchangeSection secShortcuts(pPX->GetSection(_T("Shortcuts"))); pCommandBars->GetShortcutManager()->DoPropExchange(&secShortcuts); // Options: CXTPPropExchangeSection secOptions(pPX->GetSection(_T("Options"))); XTPPaintTheme theme = xtpThemeOffice2000; PX_Enum(&secOptions, _T("Theme"), theme, xtpThemeOffice2000); pCommandBars->GetCommandBarsOptions()->DoPropExchange(&secOptions); m_Settings.theme = theme; SetSettings(&m_Settings); } void CEmbeddedPreviewFrame::SetCommandBarsData(LPCTSTR xmlData) { _ASSERTE(NULL != xmlData); if (m_xmlData != xmlData) { CXTPPropExchangeXMLNode px(TRUE, NULL, _T("DesignerFile")); if (px.LoadFromString(xmlData)) { DoPropExchange(&px); m_xmlData = xmlData; } } } void CEmbeddedPreviewFrame::SetSettings(const PREVIEW_SETTINGS* pSettings) { _ASSERTE(NULL != pSettings); if (m_bSettingValid && pSettings->bFrameThemeEnabled != m_Settings.bFrameThemeEnabled) { EnableFrameTheme(NULL); } m_bSettingValid = TRUE; memcpy(&m_Settings, pSettings, sizeof(m_Settings)); XTPThemeDLL()->SetHandle(m_Settings.szStyle); XTPPaintManager()->SetTheme(m_Settings.theme); CXTPCommandBars* pCommandBars = GetCommandBars(); if (m_Settings.bFrameThemeEnabled) { EnableFrameTheme(pCommandBars); } pCommandBars->GetPaintManager()->RefreshMetrics(); pCommandBars->UpdateCommandBars(); pCommandBars->RedrawCommandBars(); SendMessage(WM_NCPAINT); RedrawWindow(0, 0, RDW_ALLCHILDREN | RDW_INVALIDATE); } void CEmbeddedPreviewFrame::OnMove(int x, int y) { CXTPFrameWnd::OnMove(x, y); CWnd* m_wndParent = GetParent(); if (m_wndParent) { m_wndParent->PostMessage(WM_EMBEDDED_PREVIEW_FRAME_ON_MOVE); } } void CEmbeddedPreviewFrame::HideMenu() { XTP_SAFE_CALL2(GetCommandBars(), GetMenuBar(), SetSelected(-1)); }