975 lines
27 KiB
C++
975 lines
27 KiB
C++
// ShortcutBarDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ShortcutBar.h"
|
|
#include "ShortcutBarDlg.h"
|
|
#include "SHBPropertiesDlg.h"
|
|
|
|
#include "UTSampleAbout.h"
|
|
#include "UTBStrOp.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CShortcutBarDlg dialog
|
|
|
|
CShortcutBarDlg::CShortcutBarDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CShortcutBarDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CShortcutBarDlg)
|
|
m_bAutoScroll = FALSE;
|
|
m_bBoldExpandedGroup = FALSE;
|
|
m_sDescription = _T("");
|
|
m_bDisableDragDropHeader = FALSE;
|
|
m_bEditHeaders = FALSE;
|
|
m_bEditItems = FALSE;
|
|
m_bHandleNotifications = TRUE;
|
|
m_bInfoTip = FALSE;
|
|
m_nSorting = 0;
|
|
m_bNoScroll = FALSE;
|
|
m_bShowActiveAlways = FALSE;
|
|
m_bUnderlineHotItem = FALSE;
|
|
m_bAnimateExpand = FALSE;
|
|
m_bAutoExpand = FALSE;
|
|
m_bDrawHeaderDragImage = FALSE;
|
|
m_bDrawItemDragImage = FALSE;
|
|
m_bDisableDragItem = FALSE;
|
|
m_bDisableDropItem = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
m_bItemDroped=FALSE;
|
|
}
|
|
|
|
void CShortcutBarDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CShortcutBarDlg)
|
|
DDX_Check(pDX, IDC_AUTOSCROLL, m_bAutoScroll);
|
|
DDX_Check(pDX, IDC_BOLDEXPANDEDGROUP, m_bBoldExpandedGroup);
|
|
DDX_Text(pDX, IDC_DESCRIPTION, m_sDescription);
|
|
DDX_Check(pDX, IDC_DISABLEDDRAGDROPHEADER, m_bDisableDragDropHeader);
|
|
DDX_Check(pDX, IDC_EDITHEADERS, m_bEditHeaders);
|
|
DDX_Check(pDX, IDC_EDITITEMS, m_bEditItems);
|
|
DDX_Check(pDX, IDC_HANDLENOTIFICATIONS, m_bHandleNotifications);
|
|
DDX_Check(pDX, IDC_INFOTIP, m_bInfoTip);
|
|
DDX_Radio(pDX, IDC_NO_SORT, m_nSorting);
|
|
DDX_Check(pDX, IDC_NOSCROLL, m_bNoScroll);
|
|
DDX_Check(pDX, IDC_SHOWACTIVEALWAYS, m_bShowActiveAlways);
|
|
DDX_Check(pDX, IDC_UNDERLINEHOTITEM, m_bUnderlineHotItem);
|
|
DDX_Check(pDX, IDC_ANIMATEEXPAND, m_bAnimateExpand);
|
|
DDX_Check(pDX, IDC_AUTOEXPAND, m_bAutoExpand);
|
|
DDX_Check(pDX, IDC_DRAWHEADERDRAGIMAGE, m_bDrawHeaderDragImage);
|
|
DDX_Check(pDX, IDC_DRAWITEMDRAGIMAGE, m_bDrawItemDragImage);
|
|
DDX_Check(pDX, IDC_DISABLEDRAGITEM, m_bDisableDragItem);
|
|
DDX_Check(pDX, IDC_DISABLEDROPITEM, m_bDisableDropItem);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CShortcutBarDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CShortcutBarDlg)
|
|
ON_WM_SYSCOMMAND()
|
|
ON_WM_PAINT()
|
|
ON_WM_QUERYDRAGICON()
|
|
ON_BN_CLICKED(IDC_ASCENDING, OnAscending)
|
|
ON_BN_CLICKED(IDC_AUTOSCROLL, OnAutoscroll)
|
|
ON_BN_CLICKED(IDC_BOLDEXPANDEDGROUP, OnBoldexpandedgroup)
|
|
ON_BN_CLICKED(IDC_DESCENDING, OnDescending)
|
|
ON_BN_CLICKED(IDC_DISABLEDDRAGDROPHEADER, OnDisableddragdropheader)
|
|
ON_BN_CLICKED(IDC_EDITHEADERS, OnEditheaders)
|
|
ON_BN_CLICKED(IDC_EDITITEMS, OnEdititems)
|
|
ON_BN_CLICKED(IDC_HANDLENOTIFICATIONS, OnHandlenotifications)
|
|
ON_BN_CLICKED(IDC_INFOTIP, OnInfotip)
|
|
ON_BN_CLICKED(IDC_NO_SORT, OnNoSort)
|
|
ON_BN_CLICKED(IDC_NOSCROLL, OnNoscroll)
|
|
ON_BN_CLICKED(IDC_SHOWACTIVEALWAYS, OnShowactivealways)
|
|
ON_BN_CLICKED(IDC_UNDERLINEHOTITEM, OnUnderlinehotitem)
|
|
ON_BN_CLICKED(IDC_AUTOEXPAND, OnAutoexpand)
|
|
ON_BN_CLICKED(IDC_ANIMATEEXPAND, OnAnimateexpand)
|
|
ON_BN_CLICKED(IDC_DRAWITEMDRAGIMAGE, OnDrawitemdragimage)
|
|
ON_BN_CLICKED(IDC_DRAWHEADERDRAGIMAGE, OnDrawheaderdragimage)
|
|
ON_BN_CLICKED(IDC_DISABLEDRAGITEM, OnDisabledragitem)
|
|
ON_BN_CLICKED(IDC_DISABLEDROPITEM, OnDisabledropitem)
|
|
//}}AFX_MSG_MAP
|
|
|
|
ON_NOTIFY(SHBN_BEGINDRAGHEADER,IDC_SHORTCUT_BAR,OnBeginDragHeader)
|
|
ON_NOTIFY(SHBN_BEGINHEADEREDIT,IDC_SHORTCUT_BAR,OnBeginHeaderEdit)
|
|
ON_NOTIFY(SHBN_DELETEGROUP,IDC_SHORTCUT_BAR,OnDeleteGroup)
|
|
ON_NOTIFY(SHBN_ENDHEADEREDIT,IDC_SHORTCUT_BAR,OnEndHeaderEdit)
|
|
ON_NOTIFY(SHBN_GETHEADERINFOTIP,IDC_SHORTCUT_BAR,OnGetHeaderInfoTip)
|
|
ON_NOTIFY(SHBN_GROUPEXPANDED,IDC_SHORTCUT_BAR,OnGroupExpanded)
|
|
ON_NOTIFY(SHBN_GROUPEXPANDING,IDC_SHORTCUT_BAR,OnGroupExpanding)
|
|
ON_NOTIFY(SHBN_DRAWHEADER,IDC_SHORTCUT_BAR,OnDrawHeader)
|
|
ON_NOTIFY(SHBN_DROPGROUP,IDC_SHORTCUT_BAR,OnDropGroup)
|
|
|
|
ON_NOTIFY(SHBN_BEGINDRAGITEM,IDC_SHORTCUT_BAR,OnBeginDragItem)
|
|
ON_NOTIFY(SHBN_BEGINITEMEDIT,IDC_SHORTCUT_BAR,OnBeginItemEdit)
|
|
ON_NOTIFY(SHBN_DELETEITEM,IDC_SHORTCUT_BAR,OnDeleteItem)
|
|
ON_NOTIFY(SHBN_DELETEALLITEMS,IDC_SHORTCUT_BAR,OnDeleteAllItems)
|
|
ON_NOTIFY(SHBN_ENDITEMEDIT,IDC_SHORTCUT_BAR,OnEndItemEdit)
|
|
ON_NOTIFY(SHBN_GETITEMINFOTIP,IDC_SHORTCUT_BAR,OnGetItemInfoTip)
|
|
ON_NOTIFY(SHBN_INSERTITEM,IDC_SHORTCUT_BAR,OnInsertItem)
|
|
ON_NOTIFY(SHBN_SELECTITEM,IDC_SHORTCUT_BAR,OnSelectItem)
|
|
ON_NOTIFY(SHBN_ACTIVATEITEM,IDC_SHORTCUT_BAR,OnActivateItem)
|
|
ON_NOTIFY(SHBN_HOTITEM,IDC_SHORTCUT_BAR,OnHotItem)
|
|
ON_NOTIFY(SHBN_DRAWITEM,IDC_SHORTCUT_BAR,OnDrawItem)
|
|
ON_NOTIFY(SHBN_DROP,IDC_SHORTCUT_BAR,OnDropItem)
|
|
ON_NOTIFY(SHBN_ENDDRAGDROPITEM,IDC_SHORTCUT_BAR,OnEndDragDropItem)
|
|
|
|
ON_NOTIFY(SHBN_CONTEXTMENU,IDC_SHORTCUT_BAR,OnSHBContextMenu)
|
|
|
|
ON_COMMAND(SHB_IDMPROPERTIES, OnSHBProperties)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CShortcutBarDlg message handlers
|
|
|
|
BOOL CShortcutBarDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// Add "About..." menu item to system menu.
|
|
|
|
// IDM_ABOUTBOX must be in the system command range.
|
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
|
ASSERT(IDM_ABOUTBOX < 0xF000);
|
|
|
|
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
|
if (pSysMenu != NULL)
|
|
{
|
|
CString strAboutMenu;
|
|
strAboutMenu.LoadString(IDS_ABOUTBOX);
|
|
if (!strAboutMenu.IsEmpty())
|
|
{
|
|
pSysMenu->AppendMenu(MF_SEPARATOR);
|
|
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
|
}
|
|
}
|
|
|
|
// Set the icon for this dialog. The framework does this automatically
|
|
// when the application's main window is not a dialog
|
|
SetIcon(m_hIcon, TRUE); // Set big icon
|
|
SetIcon(m_hIcon, FALSE); // Set small icon
|
|
|
|
// TODO: Add extra initialization here
|
|
InitShortcutBar();
|
|
|
|
GetVars();
|
|
|
|
m_LayoutManager.Attach(this);
|
|
|
|
CRect rect;
|
|
GetClientRect(rect);
|
|
CRect rectBar;
|
|
m_ctlShortcutBar.GetWindowRect(rectBar);
|
|
ScreenToClient(rectBar);
|
|
m_LayoutManager.SetConstraint(IDC_SHORTCUT_BAR, OX_LMS_LEFT, OX_LMT_SAME,
|
|
rectBar.left-rect.left);
|
|
m_LayoutManager.SetConstraint(IDC_SHORTCUT_BAR, OX_LMS_TOP, OX_LMT_SAME,
|
|
rectBar.top-rect.top);
|
|
m_LayoutManager.SetConstraint(IDC_SHORTCUT_BAR, OX_LMS_RIGHT, OX_LMT_SAME,
|
|
rectBar.right-rect.right);
|
|
m_LayoutManager.SetConstraint(IDC_SHORTCUT_BAR, OX_LMS_BOTTOM, OX_LMT_SAME,
|
|
rectBar.bottom-rect.bottom);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
}
|
|
|
|
void CShortcutBarDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|
{
|
|
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
|
|
{
|
|
CUTSampleAboutDlg dlgAbout(IDR_MAINFRAME,ID_DESCRIPTION_FILE);
|
|
dlgAbout.DoModal();
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnSysCommand(nID, lParam);
|
|
}
|
|
}
|
|
|
|
// If you add a minimize button to your dialog, you will need the code below
|
|
// to draw the icon. For MFC applications using the document/view model,
|
|
// this is automatically done for you by the framework.
|
|
|
|
void CShortcutBarDlg::OnPaint()
|
|
{
|
|
if (IsIconic())
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
|
|
|
// Center icon in client rectangle
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
// Draw the icon
|
|
dc.DrawIcon(x, y, m_hIcon);
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnPaint();
|
|
}
|
|
}
|
|
|
|
// The system calls this to obtain the cursor to display while the user drags
|
|
// the minimized window.
|
|
HCURSOR CShortcutBarDlg::OnQueryDragIcon()
|
|
{
|
|
return (HCURSOR) m_hIcon;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnAscending()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
m_nSorting=1;
|
|
m_ctlShortcutBar.SortGroups(1);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnAutoscroll()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bAutoScroll)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_AUTOSCROLL);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_AUTOSCROLL);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnBoldexpandedgroup()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bBoldExpandedGroup)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_BOLDEXPANDEDGROUP);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_BOLDEXPANDEDGROUP);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDescending()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
m_nSorting=2;
|
|
m_ctlShortcutBar.SortGroups(-1);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDisableddragdropheader()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bDisableDragDropHeader)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_DISABLEDRAGDROPHEADER);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_DISABLEDRAGDROPHEADER);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDisabledragitem()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bDisableDragItem)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|
|
|
SHBS_DISABLEDRAGITEM);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&
|
|
~SHBS_DISABLEDRAGITEM);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDisabledropitem()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bDisableDropItem)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|
|
|
SHBS_DISABLEDROPITEM);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&
|
|
~SHBS_DISABLEDROPITEM);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnEditheaders()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bEditHeaders)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_EDITHEADERS);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_EDITHEADERS);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnEdititems()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bEditItems)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_EDITITEMS);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_EDITITEMS);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnHandlenotifications()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
UpdateData();
|
|
}
|
|
|
|
void CShortcutBarDlg::OnInfotip()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bInfoTip)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_INFOTIP);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_INFOTIP);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnNoSort()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
m_nSorting=0;
|
|
m_ctlShortcutBar.SortGroups(0);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnNoscroll()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bNoScroll)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_NOSCROLL);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_NOSCROLL);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
}
|
|
|
|
void CShortcutBarDlg::OnShowactivealways()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bShowActiveAlways)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_SHOWACTIVEALWAYS);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_SHOWACTIVEALWAYS);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
}
|
|
|
|
void CShortcutBarDlg::OnUnderlinehotitem()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bUnderlineHotItem)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_UNDERLINEHOTITEM);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_UNDERLINEHOTITEM);
|
|
m_ctlShortcutBar.RedrawBar();
|
|
}
|
|
|
|
void CShortcutBarDlg::InitShortcutBar()
|
|
{
|
|
CWnd *pFrame=GetDlgItem(IDC_SHORTCUT_BAR);
|
|
CRect rcWnd;
|
|
pFrame->GetWindowRect(rcWnd);
|
|
pFrame->DestroyWindow(); //pFrame was just a placeholder anyway.
|
|
ScreenToClient(rcWnd);
|
|
m_ctlShortcutBar.Create(this,rcWnd,SHBS_EDITHEADERS|SHBS_EDITITEMS|
|
|
SHBS_DISABLEDRAGDROPITEM|SHBS_DISABLEDRAGDROPHEADER,IDC_SHORTCUT_BAR);
|
|
|
|
// create tree control
|
|
m_tree.Create(TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_EDITLABELS,
|
|
CRect(0,0,0,0),&m_ctlShortcutBar,IDC_TREE);
|
|
|
|
TV_INSERTSTRUCT tvstruct;
|
|
TCHAR rgszItems[][20]={_T("Mail Box"),_T("Calendar"),_T("Deleted Items"),
|
|
_T("Inbox"),_T("Journal"),_T("Notes"),_T("Outbox"),_T("Sent Items")};
|
|
VERIFY(m_ilTree.Create(IDB_TREE,16,8,RGB(255,0,255)));
|
|
m_tree.SetImageList(&m_ilTree,TVSIL_NORMAL);
|
|
|
|
HTREEITEM hParent=NULL;
|
|
int nIndex=0;
|
|
for(nIndex=0; nIndex<(sizeof(rgszItems)/sizeof(rgszItems[0])); nIndex++)
|
|
{
|
|
tvstruct.hParent=nIndex==0 ? NULL : hParent;
|
|
tvstruct.hInsertAfter=TVI_LAST;
|
|
tvstruct.item.iImage=nIndex;
|
|
tvstruct.item.iSelectedImage=nIndex;
|
|
tvstruct.item.pszText=rgszItems[nIndex];
|
|
tvstruct.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
|
|
HTREEITEM hItem=m_tree.InsertItem(&tvstruct);
|
|
hParent=hParent==NULL ? hItem : hParent;
|
|
}
|
|
|
|
|
|
// populate shortcut bar
|
|
m_ctlShortcutBar.SetImageList(&m_ilTree);
|
|
|
|
|
|
|
|
SHB_GROUPINFO shbGroup;
|
|
CString sText;
|
|
|
|
// create image lists
|
|
VERIFY(m_ilLarge.Create(IDB_LARGE,32,11,RGB(128,128,128)));
|
|
VERIFY(m_ilSmall.Create(IDB_SMALL,16,11,RGB(128,128,128)));
|
|
|
|
// outlook group
|
|
sText=_T("Outlook");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ctlShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// mail group
|
|
sText=_T("Mail");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ctlShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// group with tree control child window
|
|
sText=_T("Other");
|
|
shbGroup.nMask=SHBIF_TEXT|SHBIF_CHILDWND;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
shbGroup.pszText[sText.GetLength()] = 0;
|
|
sText.ReleaseBuffer();
|
|
shbGroup.hwndChild=m_tree.GetSafeHwnd();
|
|
m_ctlShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// fill standard list controls
|
|
TCHAR shbszItems[][20]={_T("Inbox"),_T("Calendar"),_T("Contracts"),
|
|
_T("Tasks"),_T("Journal"),_T("Notes"),_T("Deleted Items"),_T("Inbox"),
|
|
_T("Sent Items"),_T("Outbox"),_T("Deleted Items")};
|
|
|
|
// find outlook group and populate it
|
|
sText=_T("Outlook");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
HSHBGROUP hGroup=m_ctlShortcutBar.FindGroup(&shbGroup);
|
|
ASSERT(hGroup);
|
|
|
|
m_ctlShortcutBar.SetLCImageList(hGroup,&m_ilLarge,LVSIL_NORMAL);
|
|
m_ctlShortcutBar.SetLCImageList(hGroup,&m_ilSmall,LVSIL_SMALL);
|
|
|
|
for(int i=0 ; i<10; i++)
|
|
for(nIndex=0; nIndex<7 ; nIndex++)
|
|
{
|
|
CString sText=shbszItems[nIndex];
|
|
m_ctlShortcutBar.InsertLCItem(hGroup,nIndex+7*i,sText,nIndex);
|
|
}
|
|
m_ctlShortcutBar.ExpandGroup(hGroup);
|
|
|
|
// find mail group and populate it
|
|
sText=_T("Mail");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
hGroup=m_ctlShortcutBar.FindGroup(&shbGroup);
|
|
ASSERT(hGroup);
|
|
|
|
m_ctlShortcutBar.SetLCImageList(hGroup,&m_ilLarge,LVSIL_NORMAL);
|
|
m_ctlShortcutBar.SetLCImageList(hGroup,&m_ilSmall,LVSIL_SMALL);
|
|
|
|
for(nIndex=7; nIndex<(sizeof(shbszItems)/sizeof(shbszItems[0])); nIndex++)
|
|
{
|
|
CString sText=shbszItems[nIndex];
|
|
LV_ITEM lvi;
|
|
lvi.iItem=nIndex-7;
|
|
lvi.iSubItem=0;
|
|
lvi.mask=LVIF_TEXT|LVIF_IMAGE;
|
|
lvi.iImage=nIndex;
|
|
lvi.cchTextMax=sText.GetLength();
|
|
lvi.pszText=sText.GetBuffer(lvi.cchTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ctlShortcutBar.InsertLCItem(hGroup,&lvi);
|
|
}
|
|
|
|
DWORD dwBarStyle=m_ctlShortcutBar.GetBarStyle();
|
|
dwBarStyle&=~(SHBS_DISABLEDRAGDROPHEADER|SHBS_DISABLEDRAGDROPITEM);
|
|
dwBarStyle|=SHBS_DRAWITEMDRAGIMAGE|SHBS_DRAWHEADERDRAGIMAGE|SHBS_INFOTIP|
|
|
SHBS_AUTOEXPAND|SHBS_ANIMATEEXPAND;
|
|
m_ctlShortcutBar.SetBarStyle(dwBarStyle);
|
|
}
|
|
|
|
void CShortcutBarDlg::GetVars()
|
|
{
|
|
m_bAutoScroll=(m_ctlShortcutBar.GetBarStyle()&SHBS_AUTOSCROLL)!=0;
|
|
m_bBoldExpandedGroup=(m_ctlShortcutBar.GetBarStyle()&SHBS_BOLDEXPANDEDGROUP)!=0;
|
|
m_bDisableDragDropHeader=(m_ctlShortcutBar.GetBarStyle()&
|
|
SHBS_DISABLEDRAGDROPHEADER)!=0;
|
|
m_bDisableDragItem=(m_ctlShortcutBar.GetBarStyle()&
|
|
SHBS_DISABLEDRAGITEM)!=0;
|
|
m_bDisableDropItem=(m_ctlShortcutBar.GetBarStyle()&
|
|
SHBS_DISABLEDROPITEM)!=0;
|
|
m_bDrawItemDragImage=(m_ctlShortcutBar.GetBarStyle()&SHBS_DRAWITEMDRAGIMAGE)!=0;
|
|
m_bDrawHeaderDragImage=(m_ctlShortcutBar.GetBarStyle()&SHBS_DRAWHEADERDRAGIMAGE)!=0;
|
|
m_bEditHeaders=(m_ctlShortcutBar.GetBarStyle()&SHBS_EDITHEADERS)!=0;
|
|
m_bEditItems=(m_ctlShortcutBar.GetBarStyle()&SHBS_EDITITEMS)!=0;
|
|
m_bInfoTip=(m_ctlShortcutBar.GetBarStyle()&SHBS_INFOTIP)!=0;
|
|
m_bNoScroll=(m_ctlShortcutBar.GetBarStyle()&SHBS_NOSCROLL)!=0;
|
|
m_bShowActiveAlways=(m_ctlShortcutBar.GetBarStyle()&SHBS_SHOWACTIVEALWAYS)!=0;
|
|
m_bUnderlineHotItem=(m_ctlShortcutBar.GetBarStyle()&SHBS_UNDERLINEHOTITEM)!=0;
|
|
m_bAutoExpand=(m_ctlShortcutBar.GetBarStyle()&SHBS_AUTOEXPAND)!=0;
|
|
m_bAnimateExpand=(m_ctlShortcutBar.GetBarStyle()&SHBS_ANIMATEEXPAND)!=0;
|
|
|
|
HSHBGROUP hGroup=m_ctlShortcutBar.GetExpandedGroup();
|
|
int nCount= PtrToInt(m_ctlShortcutBar.GetGroupCount());
|
|
if(nCount==0)
|
|
m_sDescription=_T("There is no groups in the shortcut bar");
|
|
else
|
|
{
|
|
CString sGroupCount;
|
|
if(nCount>1)
|
|
sGroupCount.Format(_T("There are %d groups in the shortcut bar."),nCount);
|
|
else
|
|
sGroupCount.Format(_T("There is 1 group in the shortcut bar."));
|
|
|
|
if(hGroup==NULL)
|
|
m_sDescription.Format(_T("%s There is no any expanded group."),sGroupCount);
|
|
else
|
|
m_sDescription.Format(_T("%s Group %s is expanded, it's order is %d. Child window is %s and it is in %s view."),
|
|
sGroupCount,m_ctlShortcutBar.GetGroupText(hGroup),
|
|
m_ctlShortcutBar.GetGroupOrder(hGroup),
|
|
((m_ctlShortcutBar.GetGroupChildWnd(hGroup)==NULL) ?
|
|
_T("standard list control") : _T("special defined window")),
|
|
((m_ctlShortcutBar.GetGroupView(hGroup)==SHB_LARGEICON) ?
|
|
_T("Large Icons") : _T("Small Icons")));
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
|
|
ShowControls();
|
|
}
|
|
|
|
void CShortcutBarDlg::ShowControls()
|
|
{
|
|
}
|
|
|
|
void CShortcutBarDlg::OnBeginDragHeader(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnBeginDragHeader - SHBN_BEGINDRAGHEADER\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnBeginHeaderEdit(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnBeginHeaderEdit - SHBN_BEGINHEADEREDIT\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDeleteGroup(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDeleteGroup - SHBN_DELETEGROUP\n"));
|
|
|
|
GetVars();
|
|
UpdateData();
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnEndHeaderEdit(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnEndHeaderEdit - SHBN_ENDHEADEREDIT\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnGetHeaderInfoTip(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnGetHeaderInfoTip - SHBN_GETHEADERINFOTIP\n"));
|
|
|
|
LPNMSHORTCUTBAR pNMSHB=(LPNMSHORTCUTBAR)pNotifyStruct;
|
|
ASSERT(pNMSHB!=NULL);
|
|
|
|
HSHBGROUP hGroup=pNMSHB->hGroup;
|
|
CString sText;
|
|
sText.Format(_T("Tooltip for group '%s' which order is - %d"),
|
|
m_ctlShortcutBar.GetGroupText(hGroup),m_ctlShortcutBar.GetGroupOrder(hGroup));
|
|
|
|
LPSHBINFOTIP pSHBIT=(LPSHBINFOTIP)pNMSHB->lParam;
|
|
UTBStr::tcsncpy(pSHBIT->szText,countof(pSHBIT->szText),sText.GetBuffer(sText.GetLength()),countof(pSHBIT->szText));
|
|
sText.ReleaseBuffer();
|
|
|
|
*result=1;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnGroupExpanded(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnGroupExpanded - SHBN_GROUPEXPANDED\n"));
|
|
|
|
GetVars();
|
|
UpdateData();
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnGroupExpanding(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnGroupExpanding - SHBN_GROUPEXPANDING\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDrawHeader(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDrawHeader - SHBN_DRAWHEADER\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
|
|
void CShortcutBarDlg::OnBeginDragItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnBeginDragItem - SHBN_BEGINDRAGITEM\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDropGroup(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDropGroup - SHBN_DROPGROUP\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnBeginItemEdit(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnBeginItemEdit - SHBN_BEGINITEMEDIT\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDeleteItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDeleteItem - SHBN_DELETEITEM\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDeleteAllItems(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDeleteAllItems - SHBN_DELETEALLITEMS\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnEndItemEdit(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnEndItemEdit - SHBN_ENDITEMEDIT\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnGetItemInfoTip(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnGetItemInfoTip - SHBN_GETITEMINFOTIP\n"));
|
|
|
|
LPNMSHORTCUTBAR pNMSHB=(LPNMSHORTCUTBAR)pNotifyStruct;
|
|
ASSERT(pNMSHB!=NULL);
|
|
|
|
int nItem=pNMSHB->nItem;
|
|
CString sText;
|
|
sText.Format(_T("Tooltip for item '%s'"),
|
|
m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->GetItemText(nItem,0));
|
|
|
|
LPSHBINFOTIP pSHBIT=(LPSHBINFOTIP)pNMSHB->lParam;
|
|
UTBStr::tcsncpy(pSHBIT->szText,countof(pSHBIT->szText),sText.GetBuffer(sText.GetLength()),countof(pSHBIT->szText));
|
|
sText.ReleaseBuffer();
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnInsertItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
LPNMSHORTCUTBAR pNMSHB=(LPNMSHORTCUTBAR)pNotifyStruct;
|
|
ASSERT(pNMSHB!=NULL);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnInsertItem - SHBN_INSERTITEM\n"));
|
|
|
|
static DWORD lParam=0;
|
|
if(m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->
|
|
GetItemData(pNMSHB->nItem)==0)
|
|
{
|
|
lParam++;
|
|
m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->
|
|
SetItemData(pNMSHB->nItem,lParam);
|
|
}
|
|
|
|
GetVars();
|
|
UpdateData();
|
|
|
|
if(m_bItemDroped)
|
|
m_dwDropedItemData=m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->
|
|
GetItemData(pNMSHB->nItem);
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnSelectItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
LPNMSHORTCUTBAR pNMSHB=(LPNMSHORTCUTBAR)pNotifyStruct;
|
|
ASSERT(pNMSHB!=NULL);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnSelectItem - SHBN_SELECTITEM\n"));
|
|
|
|
if(pNMSHB->nItem!=-1)
|
|
m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->
|
|
GetItemData(pNMSHB->nItem);
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnActivateItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnActivateItem - SHBN_ACTIVATEITEM\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnHotItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnHotItem - SHBN_HOTITEM\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDrawItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDrawItem - SHBN_DRAWITEM\n"));
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDropItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
UNREFERENCED_PARAMETER(pNotifyStruct);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnDropItem - SHBN_DROP\n"));
|
|
|
|
m_bItemDroped=TRUE;
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnEndDragDropItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
LPNMSHORTCUTBAR pNMSHB=(LPNMSHORTCUTBAR)pNotifyStruct;
|
|
ASSERT(pNMSHB!=NULL);
|
|
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnEndDragDropItem - SHBN_ENDDRAGDROPITEM\n"));
|
|
|
|
if(m_bItemDroped && (DROPEFFECT)pNMSHB->lParam!=DROPEFFECT_NONE)
|
|
{
|
|
COXSHBListCtrl* pListCtrl=m_ctlShortcutBar.GetGroupListCtrl(pNMSHB->hGroup);
|
|
ASSERT(pListCtrl);
|
|
|
|
LV_FINDINFO lvfi;
|
|
lvfi.flags=LVFI_PARAM;
|
|
lvfi.lParam=m_dwDropedItemData;
|
|
int nItem=pListCtrl->FindItem(&lvfi);
|
|
ASSERT(nItem!=-1);
|
|
|
|
if(pListCtrl->GetItemText(nItem,0).IsEmpty())
|
|
pListCtrl->PostMessage(LVM_EDITLABEL,(WPARAM)nItem);
|
|
}
|
|
m_bItemDroped=FALSE;
|
|
|
|
*result=0;
|
|
}
|
|
|
|
|
|
void CShortcutBarDlg::OnSHBContextMenu(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
if(m_bHandleNotifications)
|
|
TRACE(_T("OnSHBContextMenu - SHBN_CONTEXTMENU\n"));
|
|
|
|
LPSHBCONTEXTMENU pSHBCM=
|
|
(LPSHBCONTEXTMENU)((LPNMSHORTCUTBAR)pNotifyStruct)->lParam;
|
|
if(pSHBCM->pShortcutBar==&m_ctlShortcutBar &&
|
|
m_ctlShortcutBar.GetExpandedGroup()!=NULL)
|
|
{
|
|
CMenu* pMenu=pSHBCM->pMenu;
|
|
if(pMenu->GetMenuItemCount()>0)
|
|
pMenu->AppendMenu(MF_SEPARATOR);
|
|
pMenu->AppendMenu(MF_STRING,SHB_IDMPROPERTIES,_T("Properties..."));
|
|
}
|
|
|
|
*result=0;
|
|
}
|
|
|
|
void CShortcutBarDlg::OnSHBProperties()
|
|
{
|
|
CSHBPropertiesDlg propertiesDlg(&m_ctlShortcutBar);
|
|
propertiesDlg.DoModal();
|
|
}
|
|
|
|
void CShortcutBarDlg::OnAutoexpand()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bAutoExpand)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_AUTOEXPAND);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_AUTOEXPAND);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnAnimateexpand()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bAnimateExpand)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_ANIMATEEXPAND);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_ANIMATEEXPAND);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDrawitemdragimage()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bDrawItemDragImage)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_DRAWITEMDRAGIMAGE);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_DRAWITEMDRAGIMAGE);
|
|
}
|
|
|
|
void CShortcutBarDlg::OnDrawheaderdragimage()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
if(!UpdateData())
|
|
return;
|
|
|
|
if(m_bDrawHeaderDragImage)
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()|SHBS_DRAWHEADERDRAGIMAGE);
|
|
else
|
|
m_ctlShortcutBar.SetBarStyle(m_ctlShortcutBar.GetBarStyle()&~SHBS_DRAWHEADERDRAGIMAGE);
|
|
}
|
|
|