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.
837 lines
34 KiB
C++
837 lines
34 KiB
C++
// XTPPopupControl.h: interface for the CXTPPopupControl class.
|
|
//
|
|
// This file is a part of the XTREME CONTROLS 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(_XTPPOPUPCONTROL_H__)
|
|
#define _XTPPOPUPCONTROL_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
class CXTPPopupItem;
|
|
class CXTPPopupPaintManager;
|
|
class CXTPImageManager;
|
|
class CXTPImageManagerIcon;
|
|
class CXTPMarkupContext;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Enumeration used to determine the popup window theme in use
|
|
// Example:
|
|
// <code>m_wndPopupControl.SetTheme(xtpPopupThemeOffice2000);</code>
|
|
// See Also: CXTPPopupControl::SetTheme, CXTPPopupControl::GetTheme
|
|
//
|
|
// <KEYWORDS xtpPopupThemeOffice2000, xtpPopupThemeOfficeXP, xtpPopupThemeOffice2003, xtpPopupThemeMSN, xtpPopupThemeCustom>
|
|
//-----------------------------------------------------------------------
|
|
enum XTPPopupPaintTheme
|
|
{
|
|
xtpPopupThemeOffice2000, // The theme like to a Office2000
|
|
xtpPopupThemeOfficeXP, // The theme like to a OfficeXP
|
|
xtpPopupThemeOffice2003, // The theme like to a Office2003
|
|
xtpPopupThemeMSN, // The theme like to a MSN Messenger
|
|
xtpPopupThemeResource, // The theme like to a Office2007
|
|
xtpPopupThemeCustom // The custom theme
|
|
};
|
|
|
|
#define xtpPopupThemeOffice2007 xtpPopupThemeResource
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Location the popup control can get displayed.
|
|
//-----------------------------------------------------------------------
|
|
enum XTPPopupLocation
|
|
{
|
|
xtpPopupLocationNearTaskBar, // Displays in the bottom right of the screen right above the task bar.
|
|
xtpPopupLocationBottomRight, // Displays in the bottom right of the screen.
|
|
xtpPopupLocationCenter // Displays in the center of the screen.
|
|
};
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Enumeration used to determine the popup window animation in use
|
|
// Example:
|
|
// <code>m_wndPopupControl.SetPopupAnimation(xtpPopupAnimationFade);</code>
|
|
// See Also: CXTPPopupControl::SetPopupAnimation, CXTPPopupControl::GetPopupAnimation
|
|
//
|
|
// <KEYWORDS xtpPopupAnimationNone, xtpPopupAnimationFade, xtpPopupAnimationSlide, xtpPopupAnimationUnfold>
|
|
//-----------------------------------------------------------------------
|
|
enum XTPPopupAnimation
|
|
{
|
|
xtpPopupAnimationNone, // Animation is not used
|
|
xtpPopupAnimationFade, // Fade method animation
|
|
xtpPopupAnimationSlide, // Slide method animation
|
|
xtpPopupAnimationUnfold // Unfold method animation
|
|
};
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Enumeration used to determine a current popup window state
|
|
// Example:
|
|
// <code>
|
|
// if (pControl->GetPopupState() == xtpPopupStateClosed)
|
|
// {
|
|
// EnableItems(TRUE);
|
|
// }
|
|
// </code>
|
|
// See Also: CXTPPopupControl::GetPopupState, CXTPPopupControl::SetPopupState
|
|
//
|
|
// <KEYWORDS xtpPopupStateClosed, xtpPopupStateExpanding, xtpPopupStateShow, xtpPopupStateCollapsing>
|
|
//-----------------------------------------------------------------------
|
|
enum XTPPopupState
|
|
{
|
|
xtpPopupStateClosed, // The popup window is closed
|
|
xtpPopupStateExpanding, // The popup window is expanding
|
|
xtpPopupStateShow, // The popup window is shown
|
|
xtpPopupStateCollapsing // The popup window is collapsing
|
|
};
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// The XTPWM_POPUPCONTROL_NOTIFY message is sent to the CXTPPopupControl owner window
|
|
// whenever an action occurs within the CXTPPopupControl
|
|
// Parameters:
|
|
// nAction - Value of wParam specifies a Popup Control value that indicates the user's
|
|
// request. Can be any of the values listed in the Remarks section.
|
|
// Remarks:
|
|
// nAction parameter can be one of the following:
|
|
// * <b>XTP_PCN_ITEMCLICK</b> Indicates the user clicked on the popup control item.
|
|
// * <b>XTP_PCN_STATECHANGED</b> Indicates the state of control changed.
|
|
// Returns:
|
|
// If the application is to process this message, the return value should be TRUE, otherwise the
|
|
// return value is FALSE.
|
|
// Example:
|
|
// Here is an example of how an application would process the XTPWM_POPUPCONTROL_NOTIFY
|
|
// message.
|
|
// <code>
|
|
//
|
|
// BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
|
|
// //{{AFX_MSG_MAP(CMainFrame)
|
|
// ON_MESSAGE(XTPWM_POPUPCONTROL_NOTIFY, OnPopUpNotify)
|
|
// //}}AFX_MSG_MAP
|
|
// END_MESSAGE_MAP()
|
|
//
|
|
// LRESULT CMainFrame::OnPopUpNotify(WPARAM wParam, LPARAM lParam)
|
|
// {
|
|
// if (wParam == XTP_PCN_ITEMCLICK)
|
|
// {
|
|
// CXTPPopupItem* pItem = (CXTPPopupItem*)lParam;
|
|
// ASSERT(pItem);
|
|
//
|
|
// m_wndPopupControl.Close();
|
|
//
|
|
// if (pItem->GetID() == ID_GOTO_SITE)
|
|
// {
|
|
// ::ShellExecute(NULL, _T("open"), _T("http://www.codejock.com/"), NULL, NULL, SW_SHOW);
|
|
// }
|
|
// }
|
|
// else if (wParam == XTP_PCN_STATECHANGED)
|
|
// {
|
|
// CXTPPopupControl* pControl = (CXTPPopupControl*)lParam;
|
|
// ASSERT(pControl);
|
|
//
|
|
// if (pControl->GetPopupState() == xtpPopupStateClosed)
|
|
// {
|
|
// EnableItems(TRUE);
|
|
// }
|
|
// }
|
|
// return TRUE;
|
|
// }
|
|
// </code>
|
|
// See Also:
|
|
// XTP_PCN_ITEMCLICK, XTP_PCN_STATECHANGED, CXTPPopupControl
|
|
//-----------------------------------------------------------------------
|
|
const UINT XTPWM_POPUPCONTROL_NOTIFY = (WM_XTP_CONTROLS_BASE + 37);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// XTP_PCN_ITEMCLICK is used to indicate that the user clicked on a popup control item.
|
|
// Remarks:
|
|
// XTP_PCN_ITEMCLICK is sent in the XTPWM_POPUPCONTROL_NOTIFY message to the
|
|
// owner window when the user has clicked on a popup control item.
|
|
// Example:
|
|
// See example of XTPWM_POPUPCONTROL_NOTIFY
|
|
// See Also:
|
|
// XTPWM_POPUPCONTROL_NOTIFY, XTP_PCN_STATECHANGED
|
|
//-----------------------------------------------------------------------
|
|
const UINT XTP_PCN_ITEMCLICK = 1;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// XTP_PCN_STATECHANGED is used to indicate that the state of popup control changed
|
|
// Remarks:
|
|
// XTP_PCN_STATECHANGED is sent in the XTPWM_POPUPCONTROL_NOTIFY message to the
|
|
// owner window when the state of popup control changed.
|
|
// It can be one of the following states:
|
|
// * <b>xtpPopupStateClosed</b> Indicates the the popup window is closed
|
|
// * <b>xtpPopupStateExpanding</b> Indicates the popup window is expanding
|
|
// * <b>xtpPopupStateShow</b> Indicates the popup window is shown
|
|
// * <b>xtpPopupStateCollapsing</b> Indicates the popup window is collapsing
|
|
// Example:
|
|
// See example of XTPWM_POPUPCONTROL_NOTIFY
|
|
// See Also:
|
|
// XTPWM_POPUPCONTROL_NOTIFY, XTP_PCN_ITEMCLICK
|
|
//-----------------------------------------------------------------------
|
|
const UINT XTP_PCN_STATECHANGED = 2;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// XTP_PCN_POSCHANGED is used to indicate that user move Popup control with mouse
|
|
// See Also:
|
|
// XTPWM_POPUPCONTROL_NOTIFY
|
|
//-----------------------------------------------------------------------
|
|
const UINT XTP_PCN_POSCHANGED = 3;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// CXTPPopupControl is a class for control of popup window
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPPopupControl : public CWnd
|
|
{
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Popup state descriptor
|
|
// See Also: CXTPPopupControl::m_stateTarget, CXTPPopupControl::m_stateCurrent
|
|
//-----------------------------------------------------------------------
|
|
struct POPUPSTATE
|
|
{
|
|
CRect rcPopup; // Popup position
|
|
int nTransparency; // Popup transparency
|
|
};
|
|
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPPopupControl object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPPopupControl(BOOL bAutoDelete = FALSE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPPopupControl object, all handles cleanup and
|
|
// deallocation.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPPopupControl();
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the position of a popup
|
|
// window.
|
|
// Parameters:
|
|
// ptPopup - a CPoint object containing XY location.
|
|
//-----------------------------------------------------------------------
|
|
void SetPopupPos(CPoint ptPopup);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the position of a popup
|
|
// window.
|
|
// Returns:
|
|
// A CPoint object containing XY location.
|
|
//-----------------------------------------------------------------------
|
|
CPoint GetPopupPos() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the size of a popup window.
|
|
// Parameters:
|
|
// szPopup - A CSize object containing XY size.
|
|
//-----------------------------------------------------------------------
|
|
void SetPopupSize(CSize szPopup);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the size of a popup window.
|
|
// Returns:
|
|
// A CSize object containing XY size.
|
|
//-----------------------------------------------------------------------
|
|
CSize GetPopupSize() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member for create and starting expanding state
|
|
// of a popup window
|
|
// Parameters:
|
|
// pParent - points to a CWnd object that represents the parent
|
|
// window.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL Show(CWnd* pParent);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: Call this method to show modal popup control
|
|
// Parameters:
|
|
// pParent - points to a CWnd object that represents the parent
|
|
// window.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL ShowModal(CWnd* pParent);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member for starting collapsing state of a popup
|
|
// window with the posterior destroy.
|
|
//-----------------------------------------------------------------------
|
|
void Hide();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to destroy a popup window.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL Close();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the transparency value of a
|
|
// popup window.
|
|
// Parameters:
|
|
// bTransp - value of transparency (0...255).
|
|
// If bTransp = 0 the popup window is full transparent, otherwise
|
|
// if bTransp = 255 the popup window is full opaque.
|
|
//-----------------------------------------------------------------------
|
|
void SetTransparency(BYTE bTransp);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the transparency value a popup
|
|
// window.
|
|
// Returns:
|
|
// Transparency value of a popup window.
|
|
//-----------------------------------------------------------------------
|
|
BYTE GetTransparency() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the value of show delay a
|
|
// popup window.
|
|
// Parameters:
|
|
// dwShowDelay - value of show delay in milliseconds.
|
|
//-----------------------------------------------------------------------
|
|
void SetShowDelay(DWORD dwShowDelay);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the value of show delay a
|
|
// popup window.
|
|
// Returns:
|
|
// Transparency value of show delay in milliseconds.
|
|
//-----------------------------------------------------------------------
|
|
DWORD GetShowDelay() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the value of animate delay
|
|
// a popup window.
|
|
// Parameters:
|
|
// dwAnimateDelay - value of animate delay in milliseconds .
|
|
//-----------------------------------------------------------------------
|
|
void SetAnimateDelay(DWORD dwAnimateDelay);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the value of animate
|
|
// delay a popup window.
|
|
// Returns:
|
|
// Transparency value of animate delay in milliseconds.
|
|
//-----------------------------------------------------------------------
|
|
DWORD GetAnimateDelay() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the popup animation method.
|
|
// Parameters:
|
|
// popupAnimation - method in use, see XTPPopupAnimation enum.
|
|
//-----------------------------------------------------------------------
|
|
void SetPopupAnimation(XTPPopupAnimation popupAnimation);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the default popup animation method.
|
|
//-----------------------------------------------------------------------
|
|
void SetPopupAnimation();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the popup animation method.
|
|
// Returns:
|
|
// Method in use, see XTPPopupAnimation enum.
|
|
//-----------------------------------------------------------------------
|
|
XTPPopupAnimation GetPopupAnimation() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the current state of a popup
|
|
// window.
|
|
// Returns:
|
|
// Current state, see XTPPopupState enum.
|
|
//-----------------------------------------------------------------------
|
|
XTPPopupState GetPopupState() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the paint manager or paint theme used
|
|
// for drawing a popup window.
|
|
// Parameters:
|
|
// theme - theme of popup window drawing, see XTPPopupPaintTheme
|
|
// enum.
|
|
// pPaintManager - point of paint manager object.
|
|
//-----------------------------------------------------------------------
|
|
void SetTheme(XTPPopupPaintTheme theme);
|
|
void SetTheme(CXTPPopupPaintManager* pPaintManager); // <combine CXTPPopupControl::SetTheme@XTPPopupPaintTheme>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get the paint manager object used
|
|
// for drawing a popup window.
|
|
// Returns:
|
|
// Point of paint manager object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPPopupPaintManager* GetPaintManager() const;
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to get the theme that the popup window is
|
|
// currently using.
|
|
// Returns:
|
|
// The currently used theme of the popup window drawing.
|
|
// See Also: SetTheme, XTPPopupPaintTheme
|
|
//-----------------------------------------------------------------------
|
|
XTPPopupPaintTheme GetTheme() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to redraw all controlled items of a
|
|
// popup window.
|
|
//-----------------------------------------------------------------------
|
|
void RedrawControl();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to install new controlled item in
|
|
// a popup window.
|
|
// Parameters:
|
|
// pItem - Point to CXTPPopupItem object which will be installed
|
|
// in a popup window.
|
|
// Returns:
|
|
// Point to the installed CXTPPopupItem object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPPopupItem* AddItem(CXTPPopupItem* pItem);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to remove all controlled items from
|
|
// a popup window.
|
|
//-----------------------------------------------------------------------
|
|
void RemoveAllItems();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to remove controlled item from
|
|
// a popup window.
|
|
// Parameters:
|
|
// pItem - Point to CXTPPopupItem object which will be removed
|
|
// nIndex - Index of item to remove from control
|
|
//-----------------------------------------------------------------------
|
|
void RemoveItem(CXTPPopupItem* pItem);
|
|
void RemoveItem(int nIndex); // <combine CXTPPopupControl::RemoveItem@CXTPPopupItem*>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get count of controlled items
|
|
// a popup window.
|
|
// Returns:
|
|
// Count of controlled items.
|
|
//-----------------------------------------------------------------------
|
|
int GetItemCount() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to get a controlled item on an index
|
|
// Parameters:
|
|
// nIndex - Index of a controlled item.
|
|
// Returns:
|
|
// Point to CXTPPopupItem object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPPopupItem* GetItem(int nIndex) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to testing a point for controlled
|
|
// items of a popup window.
|
|
// Parameters:
|
|
// pt - a CPoint object containing XY location for testing.
|
|
// Returns:
|
|
// Point to CXTPPopupItem object if test is successful, otherwise
|
|
// returns NULL.
|
|
//-----------------------------------------------------------------------
|
|
CXTPPopupItem* HitTest(CPoint pt) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to specify whether the user can click and drag
|
|
// the popup window when it is displayed.
|
|
// Parameters:
|
|
// bAllowMove - TRUE to allow the user can click and drag the popup
|
|
// window anywhere on the screen.
|
|
// If FALSE, the popup window cannot be moved by the user.
|
|
//-----------------------------------------------------------------------
|
|
void AllowMove(BOOL bAllowMove);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to set bitmap index for background.
|
|
// Parameters:
|
|
// nBackgroundBitmap - Index of bitmap in IamgeMnaager to set as background and region for control
|
|
//-----------------------------------------------------------------------
|
|
void SetBackgroundBitmap(int nBackgroundBitmap);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to get bitmap index for background.
|
|
// See Also: SetBackgroundBitmap
|
|
//-----------------------------------------------------------------------
|
|
int GetBackgroundBitmap() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to let popup control delete self.
|
|
// Parameters:
|
|
// bAutoDelete - TRUE to delete control automatically after popup control will be closed.
|
|
//-----------------------------------------------------------------------
|
|
void SetAutoDelete(BOOL bAutoDelete);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to set default popup location
|
|
// Parameters:
|
|
// nPopupLocation - Default Popup Location (Near TaskBar, BottomLeft or Center)
|
|
// See Also: SetPopupPos
|
|
//-----------------------------------------------------------------------
|
|
void SetDefaultLocation(XTPPopupLocation nPopupLocation);
|
|
|
|
BOOL GetSplashScreenMode() const;
|
|
void SetSplashScreenMode(BOOL bSet);
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines if right-to-left mode was set.
|
|
// Returns:
|
|
// TRUE if text is displayed using right-to-left reading-order properties.
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsLayoutRTL() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to set right-to-left mode.
|
|
// Parameters:
|
|
// bRightToLeft - TRUE to set right-to-left reading-order properties.
|
|
//-----------------------------------------------------------------------
|
|
void SetLayoutRTL(BOOL bRightToLeft);
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set new image manager.
|
|
// Parameters:
|
|
// pImageManager - Points to a CXTPImageManager object to be set
|
|
// Example:
|
|
// <code>
|
|
// CXTPImageManager* pImageManager = new CXTPImageManager();
|
|
// pImageManager->SetIcons(IDR_MAINFRAME);
|
|
// m_wndPopupControl.SetImageManager(pImageManager);
|
|
// </code>
|
|
// See Also:
|
|
// GetImageManager
|
|
//-----------------------------------------------------------------------
|
|
void SetImageManager(CXTPImageManager* pImageManager);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to get a pointer to the image manager of popup
|
|
// control.
|
|
// Returns:
|
|
// Pointer to the image manager of popup control.
|
|
// Remarks:
|
|
// The image manager is used to hold all of the icons displayed in the
|
|
// popup control.
|
|
// See Also:
|
|
// SetImageManager
|
|
//-----------------------------------------------------------------------
|
|
CXTPImageManager* GetImageManager() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: Call this method to enable markup for Popup Control
|
|
// Input: bEnableMarkup - TRUE to enable markup
|
|
//-----------------------------------------------------------------------
|
|
void EnableMarkup(BOOL bEnableMarkup);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Returns markup context associated with Popup Control
|
|
//-------------------------------------------------------------------------
|
|
CXTPMarkupContext* GetMarkupContext() const;
|
|
|
|
protected:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Creates a popup window
|
|
// Parameters:
|
|
// pParentWnd - Pointer to the parent window.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL Create(CWnd* pParentWnd);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called when user click on controlled item
|
|
// Parameters:
|
|
// pItem - Item has been clicked.
|
|
//-----------------------------------------------------------------------
|
|
virtual void OnClick(CXTPPopupItem* pItem);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called to start expanding animation
|
|
// Parameters:
|
|
// bUpdateCurrent - TRUE to update current state.
|
|
//-----------------------------------------------------------------------
|
|
virtual void OnExpanding(BOOL bUpdateCurrent);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called to start collapsing animation
|
|
//-------------------------------------------------------------------------
|
|
virtual void OnCollapsing();
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called to show control
|
|
//-------------------------------------------------------------------------
|
|
virtual void OnShow();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called to notify parent about action.
|
|
// Parameters:
|
|
// wParam - Occured action
|
|
// lParam - Extended parameter.
|
|
//-----------------------------------------------------------------------
|
|
virtual void Notify(WPARAM wParam, LPARAM lParam);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This method animates popup control
|
|
// Parameters:
|
|
// nStep - Current step of animation.
|
|
//-----------------------------------------------------------------------
|
|
void Animate(int nStep);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Updates position in animation according current animation step
|
|
// Parameters:
|
|
// bInit - Initial step of animation.
|
|
//-----------------------------------------------------------------------
|
|
void UpdateState(BOOL bInit = FALSE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This method is called when current state of control changed.
|
|
// Parameters:
|
|
// popupState - Current state of control.
|
|
//-----------------------------------------------------------------------
|
|
void SetPopupState(XTPPopupState popupState);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Updates current control transparency
|
|
// Parameters:
|
|
// bAlpha - Current alpha level of window
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL SetLayeredWindowAttributes(int bAlpha);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Loop of control moving.
|
|
//-------------------------------------------------------------------------
|
|
void TrackMove();
|
|
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
DECLARE_MESSAGE_MAP()
|
|
virtual void PostNcDestroy();
|
|
virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
|
|
|
|
//{{AFX_MSG(CXTPPopupControl)
|
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
|
afx_msg void OnCaptureChanged(CWnd* pWnd);
|
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
|
afx_msg void OnMouseLeave();
|
|
afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
|
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
|
//}}AFX_MSG
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
private:
|
|
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
|
|
void UpdateBitmapRegion();
|
|
HRGN BitmapToRegion(CXTPImageManagerIcon* pIcon);
|
|
void SetRegionAlphaLayer(CXTPImageManagerIcon* pIcon);
|
|
|
|
protected:
|
|
CXTPPopupPaintManager* m_pPaintManager; // point to CXTPPopupPaintManager object
|
|
CArray<CXTPPopupItem*, CXTPPopupItem*> m_arrItems; // array for controlled items
|
|
CXTPPopupItem* m_pSelected; // point to selected item
|
|
CXTPPopupItem* m_pPressed; // point to pressed item
|
|
XTPPopupAnimation m_popupAnimation; // current animation method
|
|
XTPPopupState m_popupState; // current popup state
|
|
CSize m_szPopup; // current XY location of a popup window
|
|
CPoint m_ptPopup; // current XY size of a popup window
|
|
int m_nTransparency; // current value transparency of a popup window
|
|
int m_nCurrentTransparency; // current transparency of a popup window
|
|
UINT m_uShowDelay; // value of show delay of a popup window
|
|
UINT m_uAnimationDelay; // value of animation delay of a popup window
|
|
UINT m_nAnimationInterval; // value of animation interval of a popup window
|
|
int m_nStep; // value of step animation of a popup window
|
|
XTPPopupPaintTheme m_paintTheme; // Currently used theme.
|
|
BOOL m_bAllowMove; // If TRUE, the user can click and drag the popup window anywhere on the screen. If FALSE, the popup window cannot be moved by the user.
|
|
|
|
POPUPSTATE m_stateTarget; // Target descriptor
|
|
POPUPSTATE m_stateCurrent; // Current descriptor
|
|
CXTPImageManager* m_pImageManager; // Images of popup items.
|
|
BOOL m_bRightToLeft; // Right-To-Left layout
|
|
|
|
CXTPMarkupContext* m_pMarkupContext; // Assiciated Markup Context
|
|
|
|
int m_nBackgroundBitmap; // Image index used as background of popup control
|
|
BOOL m_bAutoDelete; // TRUE to delete popup after it will be closed
|
|
XTPPopupLocation m_nPopupLocation; // Default locations for the popup control to display.
|
|
HCURSOR m_hHandCursor; // The system hand cursor for hyperlink items.
|
|
|
|
BOOL m_bSplashScreenMode; // TRUE to ignore mouse movement
|
|
|
|
private:
|
|
typedef BOOL (WINAPI *PFNSETLAYEREDWINDOWATTRIBUTES) (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
|
|
typedef BOOL(WINAPI* LPFNUPDATELAYEREDWINDOW) (HWND hwnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags);
|
|
|
|
PFNSETLAYEREDWINDOWATTRIBUTES m_pfnSetLayeredWindowAttributes; // point to Transparency proc in USER32.dll module
|
|
LPFNUPDATELAYEREDWINDOW m_pfnUpdateLayeredWindow;
|
|
BOOL m_bCapture; // capture flag of mouse event
|
|
BOOL m_bLayered;
|
|
|
|
friend class CXTPPopupItem;
|
|
friend class CPopupControlCtrl;
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
AFX_INLINE BOOL CXTPPopupControl::GetSplashScreenMode() const {
|
|
return m_bSplashScreenMode;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetSplashScreenMode(BOOL bSet) {
|
|
m_bSplashScreenMode = bSet;
|
|
}
|
|
AFX_INLINE CXTPPopupPaintManager* CXTPPopupControl::GetPaintManager() const {
|
|
return m_pPaintManager;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetPopupSize(CSize szPopup) {
|
|
m_szPopup = szPopup;
|
|
}
|
|
AFX_INLINE CSize CXTPPopupControl::GetPopupSize() const {
|
|
return m_szPopup;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetPopupPos(CPoint ptPopup) {
|
|
m_ptPopup = ptPopup;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetShowDelay(DWORD dwShowDelay) {
|
|
m_uShowDelay = dwShowDelay;
|
|
}
|
|
AFX_INLINE DWORD CXTPPopupControl::GetShowDelay() const {
|
|
return m_uShowDelay;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetAnimateDelay(DWORD dwAnimateDelay) {
|
|
m_uAnimationDelay = dwAnimateDelay;
|
|
}
|
|
AFX_INLINE DWORD CXTPPopupControl::GetAnimateDelay() const {
|
|
return m_uAnimationDelay;
|
|
}
|
|
AFX_INLINE BYTE CXTPPopupControl::GetTransparency() const {
|
|
return (BYTE)m_nTransparency;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetTransparency(BYTE nTransparency) {
|
|
m_nTransparency = nTransparency;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetAutoDelete(BOOL bAutoDelete) {
|
|
m_bAutoDelete = bAutoDelete;
|
|
}
|
|
AFX_INLINE XTPPopupAnimation CXTPPopupControl::GetPopupAnimation() const {
|
|
return m_popupAnimation;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetPopupAnimation(XTPPopupAnimation popupAnimation) {
|
|
m_popupAnimation = popupAnimation;
|
|
}
|
|
AFX_INLINE XTPPopupPaintTheme CXTPPopupControl::GetTheme() const {
|
|
return m_paintTheme;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::AllowMove(BOOL bAllowMove) {
|
|
m_bAllowMove = bAllowMove;
|
|
}
|
|
AFX_INLINE BOOL CXTPPopupControl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
|
|
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
|
|
}
|
|
AFX_INLINE BOOL CXTPPopupControl::IsLayoutRTL() const {
|
|
return m_bRightToLeft;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetBackgroundBitmap(int nBackgroundBitmap) {
|
|
m_nBackgroundBitmap = nBackgroundBitmap;
|
|
UpdateBitmapRegion();
|
|
}
|
|
AFX_INLINE int CXTPPopupControl::GetBackgroundBitmap() const {
|
|
return m_nBackgroundBitmap;
|
|
}
|
|
AFX_INLINE CXTPMarkupContext* CXTPPopupControl::GetMarkupContext() const {
|
|
return m_pMarkupContext;
|
|
}
|
|
AFX_INLINE void CXTPPopupControl::SetDefaultLocation(XTPPopupLocation nPopupLocation) {
|
|
m_nPopupLocation = nPopupLocation;
|
|
}
|
|
|
|
#endif // !defined(_XTPPOPUPCONTROL_H__)
|