windows-nt/Source/XPSP1/NT/enduser/stuff/hhctrl/navpane.h
2020-09-26 16:20:57 +08:00

105 lines
2.7 KiB
C++

#ifndef __NAVPANE_H__
#define __NAVPANE_H__
///////////////////////////////////////////////////////////
//
//
// navpane.h --- Structures used by the nav panes.
//
//
//
/*
Currently the structures in this file are used by AdvFTS
and the bookmarks tab for resizing the window.
*/
///////////////////////////////////////////////////////////
//
// Forwards
//
interface INavUI ;
///////////////////////////////////////////////////////////
//
// CDlgItemInfo - Contains information about each control
// in the pane. Used for enabling/disabling controls and
// for sizing.
//
namespace Justify
{
typedef enum Vertical
{
Bottom,
Top
};
typedef enum Horizontal
{
Left,
Right
};
};
namespace ItemInfo
{
typedef enum Type
{
Generic,
Button,
CheckBox
};
};
struct CDlgItemInfo
{
// Window Info
HWND m_hWnd ; // hWnd Cache.
int m_id ; // ctrl id.
CHAR m_accelkey ; // accelerator key.
// Control Type Information
ItemInfo::Type m_Type; //Used when processing menu keys.
// Status bits
bool m_bIgnoreEnabled:1 ; // Ignore the following.
bool m_bEnabled:1 ; // Is the control enabled?
bool m_bIgnoreMax:1 ; // Ignore the Max parameter.
bool m_bGrowH:1 ; // Grow Horizontally.
bool m_bGrowV:1 ; // Grow Vertically.
Justify::Vertical m_JustifyV ; // Do we stick to the top or the bottom.
int m_iOffsetV ; // Distance from our justification point.
Justify::Horizontal m_JustifyH ; // Do we stick to the right or the left
int m_iOffsetH ;
int m_iPadH ; // Right Horizontal Padding.
int m_iPadV ; // Bottom Vertical Padding.
RECT m_rectMin ; // Defined in the RC file.
RECT m_rectCur ;
RECT m_rectMax ; // Max size.
};
///////////////////////////////////////////////////////////
//
// Utility Functions
//
// Convert a rect from screen to client.
void ScreenRectToClientRect(HWND hWnd, RECT* prect) ;
// Get an accelerator key for the appropriate control.
int GetAcceleratorKey(HWND hwndctrl) ;
inline int GetAcceleratorKey(HWND hWndDlg, int ctrlid) {return GetAcceleratorKey(::GetDlgItem(hWndDlg, ctrlid)) ; }
//TODO: Put this into a base class
// Process the menu character.
bool ProcessMenuChar( INavUI* pNavUI,
HWND hwndParent,
CDlgItemInfo* DlgItems, // Array of dialog items
int NumDlgItems, // Number of items in the array
int ch // accelerator to act on.
) ;
#endif //__NAVPANE_H__