You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
9.8 KiB
C

2 years ago
// XTPCustomizeSheet.h : interface for the CXTPCustomizeSheet class.
//
// This file is a part of the XTREME COMMANDBARS MFC class library.
// (c)1998-2012 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
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPCUSTOMIZESHEET_H__)
#define __XTPCUSTOMIZESHEET_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPCommandBars;
class CXTPCustomizeToolbarsPage;
class CXTPCustomizeCommandsPage;
class CXTPImageManager;
class CXTPPropertyPage;
class CXTPPopupBar;
class CXTPControl;
//===========================================================================
// Summary:
// CXTPCustomizeSheet is a CPropertySheet derived class. It represents
// the Customize dialog.
//===========================================================================
class _XTP_EXT_CLASS CXTPCustomizeSheet : public CXTPPropertySheet
{
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPCustomizeSheet object
// Parameters:
// pCommandBars - Points to a CXTPCommandBars object
// iSelectPage - Page initially selected.
//-----------------------------------------------------------------------
CXTPCustomizeSheet(CXTPCommandBars* pCommandBars, UINT iSelectPage = 0);
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPCustomizeSheet object, handles cleanup and deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPCustomizeSheet();
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member to get a pointer to the context menu that
// is displayed in customization mode when a user right-clicks
// on a control.
// Returns:
// Retrieves the context menu.
//-----------------------------------------------------------------------
CXTPPopupBar* GetContextMenu() const;
//-----------------------------------------------------------------------
// Summary:
// Retrieves collection of custom icons that can be selected for
// a control during customization mode. Custom icons are displayed
// in the "Change Button Image" popup of the context menu that is
// displayed when a user right-clicks on a control.
// Remarks:
// Icons must be numbered from 1. When adding icons, the numbering
// must start with 1 and increment by 1 for each icon added. So the
// numbering would look like this: 1, 2, 3, 4, ...N.
//
// The toolkit provide 42 "built-in" icons that you can choose from
// and they are automatically displayed in the "Change Button Icon"
// popup menu if you do not remove them. If you do not remove the
// "built-in" icons that are provided with the toolkit then you should
// start your numbering at 43. If you start at 1 and you did not
// remove the "bulilt-in" icons, then you will overwrite some of
// the "built-in" icons. So you would number your icons
// 43, 44, 45, ...N. So you could even keep some of the "built-in"
// icons and overwrite the ones you don't need with your own
// custom icons.
//-----------------------------------------------------------------------
CXTPImageManager* GetCustomIcons() const;
//-----------------------------------------------------------------------
// Input: lpszText - Text in message box.
// nType - Specifies the contents and behavior of the dialog box.
// Summary: Displays a message box.
// Returns: If the function succeeds, the return value specified the
// button that was selected.
//-----------------------------------------------------------------------
int MessageBox(LPCTSTR lpszText, UINT nType = MB_OK);
//-----------------------------------------------------------------------
// Summary:
// Call this member to retrieve the current customized control.
// Returns:
// A pointer to a CXTPControl object.
//-----------------------------------------------------------------------
CXTPControl* GetDragControl() const;
public:
//-----------------------------------------------------------------------
// Summary:
// Returns the Commands PropertyPage
// Returns:
// A pointer to a CXTPCustomizeCommandsPage object
//-----------------------------------------------------------------------
CXTPCustomizeCommandsPage* GetCommandsPage() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the Toolbars PropertyPage
// Returns:
// A pointer to a CXTPCustomizeCommandsPage object
//-----------------------------------------------------------------------
CXTPCustomizeToolbarsPage* GetToolbarsPage() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the parent Command Bars class
// Returns:
// A pointer to a CXTPCommandBars object
//-----------------------------------------------------------------------
CXTPCommandBars* GetCommandBars() const;
//-----------------------------------------------------------------------
// Summary:
// Call this method to show customize dialog.
//-----------------------------------------------------------------------
INT_PTR DoModal();
//-----------------------------------------------------------------------
// Summary:
// This method shows the context menu for toolbars
// Parameters:
// point - Position of the menu to show
//-----------------------------------------------------------------------
void ContextMenu(CPoint point);
//-----------------------------------------------------------------------
// Summary:
// Adds the supplied page with the rightmost tab in the property sheet.
// Parameters:
// pPage - Points to the page to be added to the property sheet. Cannot be NULL.
//-----------------------------------------------------------------------
void AddPage(CXTPPropertyPage* pPage, int nIndex = -1);
protected:
//{{AFX_CODEJOCK_PRIVATE
DECLARE_MESSAGE_MAP()
//{{AFX_VIRTUAL(CXTPCustomizeSheet)
BOOL OnInitDialog();
BOOL PreTranslateMessage(MSG* pMsg);
BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
//}}AFX_VIRTUAL
//{{AFX_MSG(CXTPCustomizeSheet)
afx_msg void OnCustomizeDefaultStyle();
afx_msg void OnCustomizeImageAndText();
afx_msg void OnCustomizeTextOnly();
afx_msg void OnCustomizeBeginGroup();
afx_msg void OnCustomizeDelete();
afx_msg void OnCustomizeCopyImage();
afx_msg void OnCustomizePasteImage();
afx_msg void OnCustomizeResetImage();
afx_msg void OnCustomizeEditImage();
afx_msg void OnCustomizeReset();
afx_msg LRESULT OnCustomizeName(WPARAM wParam, LPARAM lParam);
afx_msg void OnUpdateCustomizeDefaultStyle(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeImageAndText(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeTextOnly(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeBeginGroup(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeName(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeCopyImage(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizePasteImage(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeResetImage(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeReset(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeEditImage(CCmdUI* pCmdUI);
afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnInitCommandsPopup(CXTPPopupBar* pPopupBar);
afx_msg void OnGrabFocus();
//}}AFX_MSG
//}}AFX_CODEJOCK_PRIVATE
private:
BOOL FilterMouse(WPARAM wParam, LPARAM lParam);
BOOL FilterKey(WPARAM wParam, LPARAM lParam);
BOOL FilterMessage(WPARAM wParam, LPARAM lParam);
void CreateContextMenu();
BOOL IsAllowChangeStyle(CXTPControl* pControl) const;
virtual BOOL CreateClient();
public:
BOOL m_bHookMainFrame;
protected:
CXTPCustomizeToolbarsPage* m_pPageToolBars; // Toolbar page.
CXTPCustomizeCommandsPage* m_pPageCommands; // Commands page.
CWnd* m_pWndParent; // Parent window.
CXTPCommandBars* m_pCommandBars; // Customized comamndBars.
CXTPPopupBar* m_pContextMenu; // Context menu that is displayed in customization mode when a
// user right-clicks on a control.
CXTPImageManager* m_pCustomIcons; // Icons displayed in the "Change Button Image" popup of the
// context menu that is displayed when a user right-clicks on a control.
private:
DECLARE_DYNAMIC(CXTPCustomizeSheet)
class CCustomizeButton;
class CCustomizeEdit;
};
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE CXTPCustomizeCommandsPage* CXTPCustomizeSheet::GetCommandsPage() const {
return m_pPageCommands;
}
AFX_INLINE CXTPCustomizeToolbarsPage* CXTPCustomizeSheet::GetToolbarsPage() const {
return m_pPageToolBars;
}
AFX_INLINE CXTPCommandBars* CXTPCustomizeSheet::GetCommandBars() const {
return m_pCommandBars;
}
AFX_INLINE CXTPPopupBar* CXTPCustomizeSheet::GetContextMenu() const {
return m_pContextMenu;
}
AFX_INLINE CXTPImageManager* CXTPCustomizeSheet::GetCustomIcons() const {
return m_pCustomIcons;
}
#endif // #if !defined(__XTPCUSTOMIZESHEET_H__)