#include #include #include #include "resource.h" #include "defs.h" extern HFONT HfNormal; extern HWND HWnd; WNDPROC LvPrevProc; static LRESULT CALLBACK LvProc(HWND, UINT, WPARAM, LPARAM); HWND LvCreate(HMENU hMenu) { HWND hLv; hLv = CreateWindowEx( WS_EX_CLIENTEDGE, WC_LISTVIEW, TEXT(""), WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP |LVS_REPORT|LVS_NOSORTHEADER, 0, 0, 0, 0, HWnd, hMenu, GetModuleHandle(NULL), NULL ); LvPrevProc = (WNDPROC)SetWindowLongPtr(hLv, GWLP_WNDPROC, (LONG_PTR)LvProc); ListView_SetExtendedListViewStyle(hLv, LVS_EX_FULLROWSELECT); SendMessage(hLv, WM_SETFONT, (WPARAM)HfNormal, MAKELPARAM(FALSE, 0)); return hLv; } LRESULT CALLBACK LvProc(HWND hLv, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case HDN_ENDTRACK: UpdateLayout(); return TRUE; } break; } return CallWindowProc(LvPrevProc, hLv, uMsg, wParam, lParam); } void LvSetTheme(HWND hLv, int bUseTheme) { ListView_SetExtendedListViewStyleEx(hLv, LVS_EX_DOUBLEBUFFER, bUseTheme ? LVS_EX_DOUBLEBUFFER : 0); SendMessage(hLv, WM_CHANGEUISTATE, MAKEWPARAM(bUseTheme ? UIS_SET : UIS_CLEAR, UISF_HIDEFOCUS), 0); SetWindowTheme(hLv, bUseTheme ? TEXT("Explorer") : NULL, NULL); }