Пример #1
0
// 设置控件的焦点
BOOL CDuiEdit::SetControlFocus(BOOL bFocus)
{
	__super::SetControlFocus(bFocus);

	enumButtonState buttonState = m_buttonState;
	enumButtonState editState = m_EditState;

	if(!bFocus)
	{
		m_bDown = false;
		m_buttonState = enBSNormal;
		m_EditState = enBSNormal;
		HideEdit();
	}else
	{
		m_bDown = true;
		m_buttonState = enBSDown;
		m_EditState = enBSDown;
		ShowEdit();
	}

	bool bIsDraw = buttonState != m_buttonState || editState != m_EditState;
	if(bIsDraw)
	{
		::InvalidateRect(m_hWnd, &m_rc, true);
	}

	return bIsDraw;
}
Пример #2
0
BOOL CDuiEdit::OnControlLButtonDown(UINT nFlags, CPoint point)
{
	enumButtonState buttonState = m_buttonState;	
	enumButtonState editState = m_EditState;
	if(!m_bIsDisable)
	{
		if(m_rc.PtInRect(point))
		{
			CRect  rc;
			rc.left = m_rc.right - m_sizeSmallImage.cx - 2;
			rc.top = m_rc.top + (m_rc.Height() - m_sizeSmallImage.cy) / 2;
			rc.right = rc.left + m_sizeSmallImage.cx;
			rc.bottom = rc.top + m_sizeSmallImage.cy;

			if(rc.PtInRect(point))	// 点击的是编辑框右部的小按钮图片
			{
				if(m_bIsSmallButton)	// 小图片作为按钮才进行处理
				{
					m_bDown = !m_bDown;
					m_bDownTemp = true;
					if(m_bDown)
					{
						m_buttonState = enBSDown;
					}
					else
					{				
						m_buttonState = enBSHover;
					}				
					SendMessage(m_uID, CONTROL_BUTTON, MSG_BUTTON_DOWN);
					HideEdit();
				}
			}
			else
			{
				if(m_bDown)
				{
					m_bDown = false;
					m_buttonState = enBSHover;
				}
				ShowEdit();
				
				SendMessage(m_uID, CONTROL_EDIT, MSG_BUTTON_DOWN);
			}		
		}
		else
		{
			m_buttonState = enBSNormal;
			m_EditState = enBSNormal;
		}
	}

	if(buttonState != m_buttonState || editState != m_EditState)
	{
		UpdateControl();
	}
	
	return buttonState != m_buttonState || editState != m_EditState;
}
Пример #3
0
void CEditListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	CRect rcCtrl;
	LVHITTESTINFO lvhti;
    lvhti.pt = point;
	int nItem = CListCtrl::SubItemHitTest(&lvhti);
	if(nItem == -1)
	   return;
	int nSubItem = lvhti.iSubItem;
	CListCtrl::GetSubItemRect(nItem,nSubItem,LVIR_LABEL,rcCtrl); 
    ShowEdit(TRUE,nItem,nSubItem,rcCtrl);
	CListCtrl::OnLButtonDblClk(nFlags, point);
}
Пример #4
0
BOOL CListCtrlEditBase::PreTranslateMessageEx(MSG* pMsg) 
{
   CWnd *pWnd;
   if(m_pInEdit == NULL) return false;
   if(!m_pParentList) return false;
   switch (pMsg->message)
   {
   case  WM_USER_SHOW_EDIT:
   	      ShowEdit((int)pMsg->wParam, (int)pMsg->lParam);
	      return true;
   case  WM_KEYDOWN:
		if(( pMsg->wParam == VK_RETURN || pMsg->wParam == VK_TAB)
			 && m_pInEdit->m_hWnd!= NULL && m_pParentList != NULL)
		{
		 	DWORD dwStyle = m_pInEdit->GetStyle();
			if((dwStyle&WS_VISIBLE) == WS_VISIBLE)
			{
			     OnEditEnd();
				 CRect rcCtrl;		 
				 int nItem;
				 int nSub;
				 if(FALSE == Key_Ctrl(nItem,nSub))
                    Key_Shift(nItem,nSub);
                 m_pParentList->GetSubItemRect(nItem,nSub,LVIR_LABEL,rcCtrl); 
				 CPoint pt(rcCtrl.left+1,rcCtrl.top+1);
				 //ShowEdit(nItem, nSub);
				 /*POSITION pos = m_pParentList->GetFirstSelectedItemPosition();
				 if (pos == NULL)
				 {
				 }
				 else
				 {
					 while (pos)
					 {
						 int ntpItem = m_pParentList->GetNextSelectedItem(pos);
						 m_pParentList->SetItemState(ntpItem,0,LVIS_SELECTED);
					 }
				 }
				 //m_pParentList->SetItemState(nItem,  LVIS_SELECTED,  LVIS_SELECTED);
				 */
				 SetSelectPos();
				 return TRUE;
			}
		}
		else if(pMsg->wParam == VK_UP)
		{
		   if (m_nCurrentItem > 0) m_nCurrentItem--;
 	       pWnd = m_CtrlMap.GetSubWnd(m_pParentList, m_nCurrentSubItem);
		   if (pWnd )
		   {
		    pWnd->PostMessage(WM_USER_SHOW_EDIT, m_nCurrentItem, m_nCurrentSubItem);
		    SetSelectPos();
		   }
		   return TRUE;
		}
		else if(pMsg->wParam == VK_DOWN)
		{
		   if (m_nCurrentItem < m_pParentList->GetItemCount() - 1) m_nCurrentItem++;
 	       pWnd = m_CtrlMap.GetSubWnd(m_pParentList, m_nCurrentSubItem);
		   if (pWnd )
		   {
		    pWnd->PostMessage(WM_USER_SHOW_EDIT, m_nCurrentItem, m_nCurrentSubItem);
		    SetSelectPos();
		   }
		   return TRUE;
		}
		else if(pMsg->wParam == VK_RETURN)
		{
			CWnd* pParent = m_pInEdit->GetParent();
			m_bExchange = TRUE;
			//::PostMessage(pParent->GetSafeHwnd(),WM_USER_EDIT_END,m_bExchange,0);
			OnEditEnd();
			m_pInEdit->ShowWindow(SW_HIDE);
			return true;
		}
		else if(pMsg->wParam == VK_ESCAPE)
		{
           CWnd* pParent = m_pInEdit->GetParent();
		   m_bExchange = FALSE;
		   m_pInEdit->ShowWindow(SW_HIDE);
		   return true;
		   //::PostMessage(pParent->GetSafeHwnd(),WM_USER_EDIT_END,m_bExchange,0);
		}
	}//end switch
	
	return false;

}
BOOL CListCtrlComboBox::PreTranslateMessageEx(MSG* pMsg) {
    if(m_pInEdit == NULL) return false;
    if(!m_pParentList) return false;
    if (pMsg->message == WM_USER_SHOW_EDIT) {
        ShowEdit((int)pMsg->wParam, (int)pMsg->lParam);
        return true;
    }

    if(pMsg->message == WM_KEYDOWN) {
        if((pMsg->wParam == VK_RETURN ||pMsg->wParam == VK_TAB)
                && pMsg->hwnd != NULL && m_pParentList != NULL) {
            DWORD dwStyle = GetStyle();
            if((dwStyle&WS_VISIBLE) == WS_VISIBLE) {
                OnEditEnd();
                CRect rcCtrl;
                int nItem;
                int nSub;
                if(FALSE == Key_Ctrl(nItem,nSub))
                    Key_Shift(nItem,nSub);
                m_pParentList->GetSubItemRect(nItem,nSub,LVIR_LABEL,rcCtrl);
                CPoint pt(rcCtrl.left+1,rcCtrl.top+1);
                //ShowEdit(nItem, nSub);
                POSITION pos = m_pParentList->GetFirstSelectedItemPosition();
                if (pos == NULL) {
                } else {
                    while (pos) {
                        int ntpItem = m_pParentList->GetNextSelectedItem(pos);
                        m_pParentList->SetItemState(ntpItem,0,LVIS_SELECTED);
                    }
                }
                // m_pParentList->SetItemState(nItem,  LVIS_SELECTED,  LVIS_SELECTED);
                return TRUE;
            }
        }
        /*		else if(pMsg->wParam == VK_RETURN)
        		{
        			CWnd* pParent = this->GetParent();
        			m_bExchange = TRUE;
        			//::PostMessage(pParent->GetSafeHwnd(),WM_USER_EDIT_END,m_bExchange,0);
        			OnEditEnd();
        			ShowWindow(SW_HIDE);
        		}
        */
        else if(pMsg->wParam == VK_UP) {
            int i = GetCurSel();
            if (i > 0) SetCurSel(i - 1);
            return TRUE;
        } else if(pMsg->wParam == VK_DOWN) {
            int i = GetCurSel();
            if (i < GetCount() - 1) SetCurSel(i + 1);
            return TRUE;
        } else if(pMsg->wParam == VK_ESCAPE) {
            CWnd* pParent = this->GetParent();
            m_bExchange = FALSE;
            ShowWindow(SW_HIDE);
            return TRUE;
            //::PostMessage(pParent->GetSafeHwnd(),WM_USER_EDIT_END,m_bExchange,0);
        }
    }
    return FALSE;

}