Exemplo n.º 1
0
void CDuiListBox::NotifySelChange( int nOldSel,int nNewSel ,UINT uMsg)
{
    DUINMLBSELCHANGE nms;
	nms.hdr.code=DUINM_LBSELCHANGING;
    nms.hdr.hDuiWnd=m_hDuiWnd;
    nms.hdr.idFrom=GetCmdID();
	nms.hdr.pszNameFrom=GetName();
    nms.nOldSel=nOldSel;
    nms.nNewSel=nNewSel;
    nms.uMsg=uMsg;
    nms.uHoverID=0;

    if(S_OK!=DuiNotify((LPDUINMHDR)&nms)) return ;

    m_iSelItem=nNewSel;
    if(nOldSel!=-1)
        RedrawItem(nOldSel);

    if(m_iSelItem!=-1)
        RedrawItem(m_iSelItem);

    nms.hdr.idFrom=GetCmdID();
    nms.hdr.code=DUINM_LBSELCHANGED;
    DuiNotify((LPDUINMHDR)&nms);
}
Exemplo n.º 2
0
BOOL CExtThemeSwitcherToolButton::PutToPopupMenu(
	CExtPopupMenuWnd * pPopup
	)
{
	ASSERT_VALID( this );
	ASSERT( pPopup != NULL );
	ASSERT( pPopup->GetSafeHwnd() == NULL );
	ASSERT( CtrlGet() == NULL );
	if( (GetStyle()&TBBS_HIDDEN) != 0 )
		return TRUE;
	if( IsSeparator() )
		return CExtBarButton::PutToPopupMenu( pPopup );
	ASSERT( ! IsAbleToTrackMenu() );
CExtToolControlBar * pBar = GetBar();
	ASSERT_VALID( pBar );
CExtCmdItem * pCmdItem =
		g_CmdManager->CmdGetPtr(
			g_CmdManager->ProfileNameFromWnd( pBar->GetSafeHwnd() ),
			GetCmdID( false )
			);
	ASSERT( pCmdItem != NULL );
HWND hWndCmdReceiver = pBar->GetSafeHwnd();
int nCheck = ( (GetStyle()&TBBS_CHECKED) != 0 ) ? 1 : 0;
// const CExtCmdIcon & _icon = GetIcon();
CExtCmdIcon _icon;
// CExtCmdIcon _cmdIconEmpty, * pCmdIcon = ((CExtThemeSwitcherToolControlBar*)pBar)->ThemeSwitcher_GetMenuIconByToolBarCmdID(GetCmdID(false));
// const CExtCmdIcon & _icon = ( pCmdIcon != NULL ) ? ( * pCmdIcon ) : _cmdIconEmpty;
CExtSafeString strButtonText;
	if( (pPopup->TrackFlagsGet()&TPMX_PALETTE) == 0 )
		strButtonText = pCmdItem->m_sMenuText;
	if( ! pPopup->ItemInsertCommand(
			((CExtThemeSwitcherToolControlBar*)pBar)->ThemeSwitcher_GetMenuCmdIDByToolBarCmdID(GetCmdID( false )), //GetCmdID( false ),
			-1,
			strButtonText.IsEmpty() ? NULL : LPCTSTR(strButtonText),
			NULL,
			_icon,
			nCheck,
			hWndCmdReceiver
			)
		)
	{
		ASSERT( FALSE );
		return FALSE;
	}
CExtPopupMenuWnd::MENUITEMDATA & mi = 
	pPopup->ItemGetInfo( pPopup->ItemGetCount() - 1 );
	mi.Enable( IsEnabled() );
	mi.SetNoCmdUI( true );
	if( ! pCmdItem->m_sTipTool.IsEmpty() )
		mi.SetCustomTip( LPCTSTR(pCmdItem->m_sTipTool) );
	return TRUE;
}
Exemplo n.º 3
0
LRESULT CDuiScrollBar::NotifySbCode(UINT uCode,int nPos)
{
    DUINMSCROLL nms;
    nms.hdr.code=DUINM_SCROLL;
	nms.hdr.hDuiWnd=m_hDuiWnd;
    nms.hdr.idFrom=GetCmdID();
    nms.hdr.pszNameFrom=GetName();
    nms.uSbCode=uCode;
    nms.pScrollBar=this;
    nms.nPos=nPos;
    nms.bVertical=IsVertical();
    return DuiNotify((LPDUINMHDR)&nms);
}
Exemplo n.º 4
0
void CExtThemeSwitcherToolButton::OnDeliverCmd()
{
	ASSERT_VALID( this );
CExtToolControlBar * pBar = GetBar();
	ASSERT_VALID( pBar );
	if( pBar->_OnHookButtonDeliverCmd( this ) )
		return;
	if( pBar->OnDeliverCmd( this ) )
		return;
	if( ! CExtCmdManager::IsCommand( GetCmdID(false) ) )
		return;
	((CExtThemeSwitcherToolControlBar*)pBar) ->
		ThemeSwitcher_OnButtonInvoke( this );
}
Exemplo n.º 5
0
	void CDuiHeaderCtrl::OnMouseMove( UINT nFlags,CPoint pt )
	{
		if(m_bDragging || nFlags&MK_LBUTTON)
		{
			if(!m_bDragging)
			{
				m_bDragging=TRUE;
				if(IsItemHover(m_dwHitTest) && m_bItemSwapEnable)
				{
					m_dwDragTo=m_dwHitTest;
					CRect rcItem=GetItemRect(LOWORD(m_dwHitTest));
					DrawDraggingState(m_dwDragTo);
					m_hDragImg=CreateDragImage(LOWORD(m_dwHitTest));
					CPoint pt=m_ptClick-rcItem.TopLeft();
					CDragWnd::BeginDrag(m_hDragImg,pt,0,128,LWA_ALPHA|LWA_COLORKEY);
				}
			}
			if(IsItemHover(m_dwHitTest))
			{
				if(m_bItemSwapEnable)
				{
					DWORD dwDragTo=HitTest(pt);
					CPoint pt2(pt.x,m_ptClick.y);
					ClientToScreen(GetContainer()->GetHostHwnd(),&pt2);
					if(IsItemHover(dwDragTo) && m_dwDragTo!=dwDragTo)
					{
						m_dwDragTo=dwDragTo;
						DUITRACE(_T("\n!!! dragto %d"),LOWORD(dwDragTo));
						DrawDraggingState(dwDragTo);
					}
					CDragWnd::DragMove(pt2);
				}
			}else if(m_dwHitTest!=-1)
			{//调节宽度
				int cxNew=m_nAdjItemOldWidth+pt.x-m_ptClick.x;
				if(cxNew<0) cxNew=0;
				m_arrItems[LOWORD(m_dwHitTest)].cx=cxNew;
				NotifyInvalidate();
				GetContainer()->DuiUpdateWindow();//立即更新窗口
				//发出调节宽度消息
				DUINMHDSIZECHANGING	nm;
				nm.hdr.hDuiWnd=m_hDuiWnd;
				nm.hdr.code=DUINM_HDSIZECHANGING;
				nm.hdr.idFrom=GetCmdID();
				nm.hdr.pszNameFrom=GetName();
				nm.nWidth=cxNew;
				DuiNotify((LPDUINMHDR)&nm);
			}
		}else
		{
			DWORD dwHitTest=HitTest(pt);
			if(dwHitTest!=m_dwHitTest)
			{
				if(m_bSortHeader)
				{
					if(IsItemHover(m_dwHitTest))
					{
						WORD iHover=LOWORD(m_dwHitTest);
						m_arrItems[iHover].state=0;
						RedrawItem(iHover);
					}
					if(IsItemHover(dwHitTest))
					{
						WORD iHover=LOWORD(dwHitTest);
						m_arrItems[iHover].state=1;//hover
						RedrawItem(iHover);
					}
				}
				m_dwHitTest=dwHitTest;
			}
		}
		
	}
Exemplo n.º 6
0
	void CDuiHeaderCtrl::OnLButtonUp( UINT nFlags,CPoint pt )
	{
		if(IsItemHover(m_dwHitTest))
		{
			if(m_bDragging)
			{//拖动表头项
				if(m_bItemSwapEnable)
				{
					CDragWnd::EndDrag();
					DeleteObject(m_hDragImg);
					m_hDragImg=NULL;

					if(m_dwDragTo!=m_dwHitTest && IsItemHover(m_dwDragTo))
					{
						DUIHDITEM t=m_arrItems[LOWORD(m_dwHitTest)];
						m_arrItems.RemoveAt(LOWORD(m_dwHitTest));
						int nPos=LOWORD(m_dwDragTo);
						if(nPos>LOWORD(m_dwHitTest)) nPos--;//要考虑将自己移除的影响
						m_arrItems.InsertAt(LOWORD(m_dwDragTo),t);
						//发消息通知宿主表项位置发生变化
						DUINMHDSWAP	nm;
						nm.hdr.hDuiWnd=m_hDuiWnd;
						nm.hdr.code=DUINM_HDSWAP;
						nm.hdr.idFrom=GetCmdID();
						nm.hdr.pszNameFrom=GetName();
						nm.iOldIndex=LOWORD(m_dwHitTest);
						nm.iNewIndex=nPos;
						DuiNotify((LPDUINMHDR)&nm);
					}
					m_dwHitTest=HitTest(pt);
					m_dwDragTo=-1;
					NotifyInvalidate();
				}
			}else
			{//点击表头项
				if(m_bSortHeader)
				{
					m_arrItems[LOWORD(m_dwHitTest)].state=1;//hover
					RedrawItem(LOWORD(m_dwHitTest));
					DUINMHDCLICK	nm;
					nm.hdr.hDuiWnd=m_hDuiWnd;
					nm.hdr.code=DUINM_HDCLICK;
					nm.hdr.idFrom=GetCmdID();
					nm.hdr.pszNameFrom=GetName();
					nm.iItem=LOWORD(m_dwHitTest);
					DuiNotify((LPDUINMHDR)&nm);
				}
			}
		}else if(m_dwHitTest!=-1)
		{//调整表头宽度,发送一个调整完成消息
			DUINMHDSIZECHANGED	nm;
			nm.hdr.hDuiWnd=m_hDuiWnd;
			nm.hdr.code=DUINM_HDSIZECHANGED;
			nm.hdr.idFrom=GetCmdID();
			nm.hdr.pszNameFrom=GetName();
			nm.iItem=LOWORD(m_dwHitTest);
			nm.nWidth=m_arrItems[nm.iItem].cx;
			DuiNotify((LPDUINMHDR)&nm);
		}
		m_bDragging=FALSE;
		ReleaseDuiCapture();
	}