Source code
Revision control
Copy as Markdown
Other Tools
// Windows/Control/ListView.cpp↩
↩
#include "StdAfx.h"↩
↩
#include "ListView.h"↩
↩
#ifndef _UNICODE↩
extern bool g_IsNT;↩
#endif↩
↩
namespace NWindows {↩
namespace NControl {↩
↩
bool CListView::CreateEx(DWORD exStyle, DWORD style,↩
int x, int y, int width, int height,↩
HWND parentWindow, HMENU idOrHMenu,↩
HINSTANCE instance, LPVOID createParam)↩
{↩
return CWindow::CreateEx(exStyle, WC_LISTVIEW, TEXT(""), style, x, y, width,↩
height, parentWindow, idOrHMenu, instance, createParam);↩
}↩
↩
bool CListView::GetItemParam(int index, LPARAM ¶m) const↩
{↩
LVITEM item;↩
item.iItem = index;↩
item.iSubItem = 0;↩
item.mask = LVIF_PARAM;↩
bool aResult = GetItem(&item);↩
param = item.lParam;↩
return aResult;↩
}↩
↩
int CListView::InsertColumn(int columnIndex, LPCTSTR text, int width)↩
{↩
LVCOLUMN ci;↩
ci.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;↩
ci.pszText = (LPTSTR)text;↩
ci.iSubItem = columnIndex;↩
ci.cx = width;↩
return InsertColumn(columnIndex, &ci);↩
}↩
↩
int CListView::InsertItem(int index, LPCTSTR text)↩
{↩
LVITEM item;↩
item.mask = LVIF_TEXT | LVIF_PARAM;↩
item.iItem = index;↩
item.lParam = index;↩
item.pszText = (LPTSTR)text;↩
item.iSubItem = 0;↩
return InsertItem(&item);↩
}↩
↩
int CListView::SetSubItem(int index, int subIndex, LPCTSTR text)↩
{↩
LVITEM item;↩
item.mask = LVIF_TEXT;↩
item.iItem = index;↩
item.pszText = (LPTSTR)text;↩
item.iSubItem = subIndex;↩
return SetItem(&item);↩
}↩
↩
#ifndef _UNICODE↩
↩
int CListView::InsertColumn(int columnIndex, LPCWSTR text, int width)↩
{↩
LVCOLUMNW ci;↩
ci.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;↩
ci.pszText = (LPWSTR)text;↩
ci.iSubItem = columnIndex;↩
ci.cx = width;↩
return InsertColumn(columnIndex, &ci);↩
}↩
↩
int CListView::InsertItem(int index, LPCWSTR text)↩
{↩
LVITEMW item;↩
item.mask = LVIF_TEXT | LVIF_PARAM;↩
item.iItem = index;↩
item.lParam = index;↩
item.pszText = (LPWSTR)text;↩
item.iSubItem = 0;↩
return InsertItem(&item);↩
}↩
↩
int CListView::SetSubItem(int index, int subIndex, LPCWSTR text)↩
{↩
LVITEMW item;↩
item.mask = LVIF_TEXT;↩
item.iItem = index;↩
item.pszText = (LPWSTR)text;↩
item.iSubItem = subIndex;↩
return SetItem(&item);↩
}↩
↩
#endif↩
↩
static LRESULT APIENTRY ListViewSubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)↩
{↩
CWindow window(hwnd);↩
CListView2 *w = (CListView2 *)(window.GetUserDataLongPtr());↩
if (w == NULL)↩
return 0;↩
return w->OnMessage(message, wParam, lParam);↩
}↩
↩
LRESULT CListView2::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)↩
{↩
#ifndef _UNICODE↩
if (g_IsNT)↩
return CallWindowProcW(_origWindowProc, *this, message, wParam, lParam);↩
else↩
#endif↩
return CallWindowProc(_origWindowProc, *this, message, wParam, lParam);↩
}↩
↩
void CListView2::SetWindowProc()↩
{↩
SetUserDataLongPtr((LONG_PTR)this);↩
#ifndef _UNICODE↩
if (g_IsNT)↩
_origWindowProc = (WNDPROC)SetLongPtrW(GWLP_WNDPROC, (LONG_PTR)ListViewSubclassProc);↩
else↩
#endif↩
_origWindowProc = (WNDPROC)SetLongPtr(GWLP_WNDPROC, (LONG_PTR)ListViewSubclassProc);↩
}↩
↩
/*↩
LRESULT CListView3::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)↩
{↩
LRESULT res = CListView2::OnMessage(message, wParam, lParam);↩
if (message == WM_GETDLGCODE)↩
{↩
// when user presses RETURN, windows sends default (first) button command to parent dialog.↩
// we disable this:↩
MSG *msg = (MSG *)lParam;↩
WPARAM key = wParam;↩
bool change = false;↩
if (msg)↩
{↩
if (msg->message == WM_KEYDOWN && msg->wParam == VK_RETURN)↩
change = true;↩
}↩
else if (wParam == VK_RETURN)↩
change = true;↩
if (change)↩
res |= DLGC_WANTALLKEYS;↩
}↩
return res;↩
}↩
*/↩
↩
}}↩