46 int GetItemHeight(
void)
48 if ( m_itemHeight < 0 )
51 GetItemRect(0, &rc, LVIR_BOUNDS);
52 m_itemHeight = rc.Height();
57 int GetHeaderHeight(
void)
59 if ( m_headerHeight < 0 )
63 m_headerHeight = rc.Height();
65 return m_headerHeight;
88 virtual LRESULT
WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
90 if ( message == WM_LBUTTONDOWN )
95 if ( _super::HitTest(po, NULL) >= 0 )
97 CListCtrl::WindowProc(message, wParam, lParam);
102 if ( ! _super::CanDropping() )
106 TDropParam* P =
reinterpret_cast<TDropParam*
>(lParam);
107 if ( P->point.y < GetHeaderHeight() + 2 )
111 int h = GetItemHeight();
113 _super::GetClientRect(&rc);
114 LONG scrollHeight = 0;
115 if ( P->point.y < GetHeaderHeight() + 2 + h )
117 if ( _super::GetTopIndex() > 0 && ++m_scrollCount > 4 )
122 else if ( rc.bottom - h < P->point.y )
124 int i1 = _super::GetItemCount() - _super::GetTopIndex();
125 int i2 = _super::GetCountPerPage();
126 if ( i1 > i2 && ++m_scrollCount > 4 )
131 if ( scrollHeight != 0 )
134 _super::Scroll(CSize(0, scrollHeight));
135 _super::Invalidate(
false);
137 int r = _super::HitTest(P->point, NULL);
141 _super::GetItemRect(r, &rc, LVIR_BOUNDS);
142 _DeleteObject(P->hRgn);
143 P->hRgn = ::CreateRectRgnIndirect(&rc);
144 ASSERT1( m_ctrlId + r < 0x10000,
"CDrawingListCtrlDg",
"仮想コントロールIDが WORD で表現できない値になってしまいました(%u)。", m_ctrlId + r );
145 P->ctrlID =
static_cast<WORD
>(m_ctrlId + r);
150 return _super::WindowProc(message, wParam, lParam);
164 int r = HitTest(p, NULL);
167 if ( ! ::DragDetect(m_hWnd, p) )
173 GetItemRect(r, &_rc, LVIR_BOUNDS);
174 ClientToScreen(&_rc);
186 : _super(), m_ctrlId(0x8000), m_itemHeight(-1), m_headerHeight(-1), m_scrollCount(0)
bool IsNofityMessage(UINT message) const
[確認] 通知メッセージ確認.
WORD GetDragGroupID(void) const
[取得] ドロップグループID取得
@ CANDROP
ドロップ可能かチェック時に通知します。 通知を受けたコントロールは LRESULT で true(ドロップ可能),false(不可能) を返します。 LPARAM は TDropParam のポインタが...
void SetVirtualCtrlID(int base)
[設定] 仮想コントロールIDベース設定.
~CDragDrawingListCtrl(void)
デストラクタ
CDragDrawingListCtrl(void)
コンストラクタ
int GetVirtualCtrlID(void) const
[取得] 仮想コントロールIDベース取得.
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
[通知] for processing Windows messages.
virtual int OnBeginDrag(RECT &_rc, const POINT &po)
[通知] ドラッグ開始.
CDrawingHeaderCtrl * GetHeaderCtrl(void)
[取得] ヘッダコントロール参照.