xref: /MusicPlayer2/MusicPlayer2/CListBoxEnhanced.cpp (revision 3bbfe61493ac5233d7ce8ca64697d34a45aa45b0)
1 #include "stdafx.h"
2 #include "CListBoxEnhanced.h"
3 #include "MusicPlayer2.h"
4 
5 
6 CListBoxEnhanced::CListBoxEnhanced()
7 	: CListCtrlEx()
8 {
9 }
10 
11 
12 CListBoxEnhanced::~CListBoxEnhanced()
13 {
14 }
15 
16 void CListBoxEnhanced::AddString(LPCTSTR str)
17 {
18 	int cnt = GetItemCount();
19 	InsertItem(cnt, str);
20 }
21 
22 void CListBoxEnhanced::PreSubclassWindow()
23 {
24 	// TODO: �ڴ����ר�ô����/����û���
25     SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_INFOTIP);
26 	ModifyStyle(0, LVS_NOCOLUMNHEADER);
27 
28 	InsertColumn(0, _T("text"), LVCFMT_LEFT, CalculateColumnWidth());
29 
30 	CListCtrlEx::PreSubclassWindow();
31 }
32 
33 int CListBoxEnhanced::CalculateColumnWidth()
34 {
35     CRect rect;
36     GetWindowRect(rect);
37     return rect.Width() - theApp.DPI(20);
38 }
39 
40 BEGIN_MESSAGE_MAP(CListBoxEnhanced, CListCtrlEx)
41 	ON_NOTIFY_REFLECT(NM_CLICK, &CListBoxEnhanced::OnNMClick)
42 	ON_NOTIFY_REFLECT(NM_RCLICK, &CListBoxEnhanced::OnNMRClick)
43     ON_WM_SIZE()
44 END_MESSAGE_MAP()
45 
46 
47 void CListBoxEnhanced::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
48 {
49 	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
50 	// TODO: �ڴ���ӿؼ�֪ͨ����������
51 	CWnd* pParent{ GetParent() };
52 	if (pParent != nullptr)
53 		pParent->SendMessage(WM_LISTBOX_SEL_CHANGED, (WPARAM)this, (LPARAM)pNMItemActivate->iItem);
54 
55 	*pResult = 0;
56 }
57 
58 
59 void CListBoxEnhanced::OnNMRClick(NMHDR *pNMHDR, LRESULT *pResult)
60 {
61 	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
62 	// TODO: �ڴ���ӿؼ�֪ͨ����������
63 	CWnd* pParent{ GetParent() };
64 	if (pParent != nullptr)
65 		pParent->SendMessage(WM_LISTBOX_SEL_CHANGED, (WPARAM)this, (LPARAM)pNMItemActivate->iItem);
66 
67 	*pResult = 0;
68 }
69 
70 
71 void CListBoxEnhanced::OnSize(UINT nType, int cx, int cy)
72 {
73     CListCtrlEx::OnSize(nType, cx, cy);
74 
75     // TODO: �ڴ˴������Ϣ����������
76     SetColumnWidth(0, CalculateColumnWidth());
77     ShowScrollBar(SB_HORZ, FALSE);
78 }
79