aboutsummaryrefslogtreecommitdiff
path: root/c/listview.h
blob: b0e49ee65bf98d1e2a44e2c290f0f5b392696851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef LISTVIEW_H
#define LISTVIEW_H

#include <windows.h>
#include <commctrl.h>

struct ListView
{
	HWND hWnd;

	ListView(HWND hWndParent, HMENU hMenu, DWORD dwStyle);
	/* Retrieve next matching list view item. */
	bool FindNextItem(LVITEM* lvi, LPARAM lParam);
	/* Naively calculate height appropriate for number of items. */
	virtual int Height();
	/* Update column widths on window size change (unimplemented
	 * by default). */
	virtual void ResizeColumns(int w);
	/* Enable/disable "modern" theme. */
	virtual void UpdateTheme(bool bThemeActive);
	virtual LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
protected:
	WNDPROC m_proc0;
	HWND m_hWndParent;
};

inline bool ListView::FindNextItem(LVITEM* const lvi, const LPARAM lParam)
{
	if ((lvi->iItem = ListView_GetNextItem(hWnd, lvi->iItem, lParam)) == -1)
		return false;
	return ListView_GetItem(hWnd, lvi);
}

#endif