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.
193 lines
8.4 KiB
C
193 lines
8.4 KiB
C
2 years ago
|
// XTPMiniToolBar.h : interface for the CXTPMiniToolBar 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(__XTPMINITOOLBAR_H__)
|
||
|
#define __XTPMINITOOLBAR_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CXTPMiniToolBar window
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary: Represents a MiniToolbar object.
|
||
|
// Remarks: MiniToolBar is a Office 2007 style context toolbar. It has many
|
||
|
// uses, for example, you might want to display a MiniToolbar presenting some
|
||
|
// of the more commonly used commands that a user would probably want to use
|
||
|
// in a given situation like selecting text. For example, this can save the
|
||
|
// user allot of time by making font related tasks available without fumbling
|
||
|
// through tabs or menus. So to effectively use a MiniToolbar you would
|
||
|
// place all commands the user would most probably want to use when
|
||
|
// performing a given action.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPMiniToolBar : public CXTPPopupToolBar
|
||
|
{
|
||
|
DECLARE_XTP_COMMANDBAR(CXTPMiniToolBar);
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to create CXTPMiniToolBar class
|
||
|
// Input:
|
||
|
// pCommandBars - Pointer to owner CXTPCommandBars
|
||
|
// Returns: Pointer to new CXTPMiniToolBar object
|
||
|
//-----------------------------------------------------------------------
|
||
|
static CXTPMiniToolBar* AFX_CDECL CreateMiniToolBar(CXTPCommandBars* pCommandBars);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary: Constructs a CXTPMiniToolBar object.
|
||
|
//-------------------------------------------------------------------------
|
||
|
CXTPMiniToolBar();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPMiniToolBar object, handles cleanup and
|
||
|
// deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPMiniToolBar();
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary: Call this method to show minibar in specific position
|
||
|
// Input: nFlags - Reserved, currently not used.
|
||
|
// xPos - Specifies the horizontal position in screen coordinates
|
||
|
// of the minibar.
|
||
|
// yPos - Specifies the vertical position in screen coordinates
|
||
|
// of the top of the minibar.
|
||
|
// Returns: TRUE if successful; otherwise returns FALSE
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL TrackMiniBar(UINT nFlags, int xPos, int yPos);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Input: pPopupMenu - Points to a CXTPPopupBar object.
|
||
|
// nFlags - Reserved, currently not used.
|
||
|
// xPos - Specifies the horizontal position in screen coordinates
|
||
|
// of the popup menu.
|
||
|
// yPos - Specifies the vertical position in screen coordinates
|
||
|
// of the top of the menu on the screen.
|
||
|
// Summary: Call this member to display a floating pop-up menu at
|
||
|
// the specified location.
|
||
|
// Returns: TRUE if successful; otherwise returns FALSE
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL TrackPopupMenu(CXTPPopupBar* pPopupMenu, UINT nFlags, int xPos, int yPos);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Input: nChar - Specifies the virtual key code of the given key.
|
||
|
// lParam - Specifies additional message-dependent information.
|
||
|
// Summary: The framework calls this member function when a non-system
|
||
|
// key is pressed.
|
||
|
// Returns: TRUE if key handled, otherwise returns FALSE
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL OnHookKeyDown(UINT nChar, LPARAM lParam);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary: Call this method to enable/disable keyboard interaction with custom control (xtpControlCustom)
|
||
|
// disabled by default (the minitoolbar closes on keyboard events in the custom control)
|
||
|
void SetCustomControlKeyboardInteraction(BOOL bInteract = TRUE);
|
||
|
|
||
|
BOOL IsCustomControlKeyboardInteraction() const;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary: Translates all messages in message queue.
|
||
|
//-------------------------------------------------------------------------
|
||
|
virtual void PumpMessage();
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary: Updates the opacity of the mini toolbar and popup menu.
|
||
|
//-------------------------------------------------------------------------
|
||
|
void UpdateOpacity();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary: Specifies whether the mouse cursor is hovered over the mini
|
||
|
// toolbar.
|
||
|
// Returns: TRUE if the cursor is over the mini toolbar, FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL CursorInWindow() const;
|
||
|
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
//{{AFX_VIRTUAL(CXTPMiniToolBar)
|
||
|
|
||
|
virtual void Animate();
|
||
|
virtual BOOL SetTrackingMode(int bMode, BOOL bSelectFirst = TRUE, BOOL bKeyboard = FALSE);
|
||
|
virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
|
||
|
virtual int OnHookMessage(HWND hWnd, UINT nMessage, WPARAM& wParam, LPARAM& lParam, LRESULT& lResult);
|
||
|
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
//{{AFX_MSG(CXTPMiniToolBar)
|
||
|
//}}AFX_MSG
|
||
|
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// UpdateLayeredWindow declaration.
|
||
|
// Input:
|
||
|
// LPFNUPDATELAYEREDWINDOW - Struct that contains the position, size, shape, content, and translucency of a layered window.
|
||
|
// Remarks:
|
||
|
// Required for transparent Windows. But they are not present in the VC6 headers. They are only present
|
||
|
// on Win2k or later.
|
||
|
// Returns:
|
||
|
// TRUE if successful; otherwise returns FALSE
|
||
|
//-------------------------------------------------------------------------
|
||
|
typedef BOOL(WINAPI* LPFNUPDATELAYEREDWINDOW) (HWND hwnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags);
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// SetLayeredWindowAttributes declaration.
|
||
|
// Input:
|
||
|
// PFNSETLAYEREDWINDOWATTRIBUTES - Struct that contains the opacity and transparency color key of a layered window.
|
||
|
// Remarks:
|
||
|
// Required for transparent Windows. But they are not present in the VC6 headers. They are only present
|
||
|
// on Win2k or later.
|
||
|
// Returns:
|
||
|
// TRUE if successful; otherwise returns FALSE
|
||
|
//-------------------------------------------------------------------------
|
||
|
typedef BOOL (WINAPI *PFNSETLAYEREDWINDOWATTRIBUTES) (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
|
||
|
|
||
|
PFNSETLAYEREDWINDOWATTRIBUTES m_pfnSetLayeredWindowAttributes; // Point to Transparency proc in USER32.dll module
|
||
|
LPFNUPDATELAYEREDWINDOW m_pfnUpdateLayeredWindow; // Point to UpdateLayeredWindow proc in USER32.dll module
|
||
|
|
||
|
BOOL m_bActivated; // TRUE if the mini toolbar is activated.
|
||
|
int m_nOpacity; // Opacity level.
|
||
|
BOOL m_bTracking; // TRUE if the command bar is in tracking mode.
|
||
|
CXTPPopupBar* m_pContextMenu; // Context menu that is displayed in customization mode when a user right-clicks on a control.
|
||
|
BOOL m_bCustomControlKeyboardInteraction;
|
||
|
};
|
||
|
|
||
|
#endif // !defined(__XTPMINITOOLBAR_H__)
|