| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #pragma once
- inline double CalculateDelay(double state)
- {
- return pow(state, 2);
- }
- class OrderListUI : public CTileLayoutUI
- {
- public:
- enum { SCROLL_TIMERID = 10 };
- OrderListUI() : m_uButtonState(0), m_dwDelayDeltaY(0), m_dwDelayNum(0), m_dwDelayLeft(0)
- {
- SetItemSize(CSize(1000, 200));
- }
- //刷新
- void Refresh();
- void DoEvent(TEventUI& event)
- {
- if(!IsMouseEnabled() && event.Type > UIEVENT__MOUSEBEGIN && event.Type < UIEVENT__MOUSEEND)
- {
- if(m_pParent != NULL)
- {
- m_pParent->DoEvent(event);
- }
- else
- {
- CTileLayoutUI::DoEvent(event);
- }
- return;
- }
- if(event.Type == UIEVENT_TIMER && event.wParam == SCROLL_TIMERID)
- {
- if((m_uButtonState & UISTATE_CAPTURED) != 0)
- {
- POINT pt = m_pManager->GetMousePos();
- LONG cy = (pt.y - m_ptLastMouse.y);
- m_ptLastMouse = pt;
- SIZE sz = GetScrollPos();
- sz.cy -= cy;
- SetScrollPos(sz);
- return;
- }
- else if(m_dwDelayLeft > 0)
- {
- --m_dwDelayLeft;
- SIZE sz = GetScrollPos();
- LONG lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
- if((lDeltaY > 0 && sz.cy != 0) || (lDeltaY < 0 && sz.cy != GetScrollRange().cy))
- {
- sz.cy -= lDeltaY;
- SetScrollPos(sz);
- return;
- }
- }
- m_dwDelayDeltaY = 0;
- m_dwDelayNum = 0;
- m_dwDelayLeft = 0;
- m_pManager->KillTimer(this, SCROLL_TIMERID);
- return;
- }
- if(event.Type == UIEVENT_BUTTONDOWN && IsEnabled())
- {
- m_uButtonState |= UISTATE_CAPTURED;
- m_ptLastMouse = event.ptMouse;
- m_dwDelayDeltaY = 0;
- m_dwDelayNum = 0;
- m_dwDelayLeft = 0;
- ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND)));
- m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
- return;
- }
- if(event.Type == UIEVENT_BUTTONUP)
- {
- if((m_uButtonState & UISTATE_CAPTURED) != 0)
- {
- m_uButtonState &= ~UISTATE_CAPTURED;
- ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
- if(m_ptLastMouse.y != event.ptMouse.y)
- {
- m_dwDelayDeltaY = (event.ptMouse.y - m_ptLastMouse.y);
- if(m_dwDelayDeltaY > 120)
- {
- m_dwDelayDeltaY = 120;
- }
- else if(m_dwDelayDeltaY < -120)
- {
- m_dwDelayDeltaY = -120;
- }
- m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
- m_dwDelayLeft = m_dwDelayNum;
- }
- else
- {
- m_pManager->KillTimer(this, SCROLL_TIMERID);
- }
- }
- return;
- }
- if(event.Type == UIEVENT_SCROLLWHEEL)
- {
- LONG lDeltaY = 0;
- if(m_dwDelayNum > 0)
- {
- lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
- }
- switch(LOWORD(event.wParam))
- {
- case SB_LINEUP:
- if(m_dwDelayDeltaY >= 0)
- {
- m_dwDelayDeltaY = lDeltaY + 8;
- }
- else
- {
- m_dwDelayDeltaY = lDeltaY + 12;
- }
- break;
- case SB_LINEDOWN:
- if(m_dwDelayDeltaY <= 0)
- {
- m_dwDelayDeltaY = lDeltaY - 8;
- }
- else
- {
- m_dwDelayDeltaY = lDeltaY - 12;
- }
- break;
- }
- if(m_dwDelayDeltaY > 100)
- {
- m_dwDelayDeltaY = 100;
- }
- else if(m_dwDelayDeltaY < -100)
- {
- m_dwDelayDeltaY = -100;
- }
- m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
- m_dwDelayLeft = m_dwDelayNum;
- m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
- return;
- }
- CTileLayoutUI::DoEvent(event);
- }
- private:
- UINT m_uButtonState;
- POINT m_ptLastMouse;
- LONG m_dwDelayDeltaY;
- DWORD m_dwDelayNum;
- DWORD m_dwDelayLeft;
- int m_status = 1; //1:未处理 2:已确认 3:配送中 4:成功 5:失败 6:退款中
- };
|