#include #include #include #include "resource.h" #include "defs.h" extern HFONT g_GUIFont; WNDPROC Lv_PrevProc; static LRESULT CALLBACK LvProc(HWND, UINT, WPARAM, LPARAM); HWND LvCreate(HWND hWnd, HMENU hMenu) { HMODULE hModule; HWND hLv; hLv = CreateWindowEx( WS_EX_CLIENTEDGE, WC_LISTVIEW, TEXT(""), WS_CHILD|WS_VISIBLE|WS_VSCROLL|LVS_REPORT|LVS_NOSORTHEADER, 0, 0, 0, 0, hWnd, hMenu, GetModuleHandle(NULL), NULL ); Lv_PrevProc = (WNDPROC)SetWindowLongPtr(hLv, GWLP_WNDPROC, (LONG_PTR)LvProc); ListView_SetExtendedListViewStyle(hLv, LVS_EX_DOUBLEBUFFER); SendMessage(hLv, WM_SETFONT, (WPARAM)g_GUIFont, MAKELPARAM(FALSE, 0)); hModule = LoadLibrary(TEXT("uxtheme.dll")); if (hModule && GetProcAddress(hModule, "SetWindowTheme")) { ListView_SetExtendedListViewStyle(hLv, LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER); SendMessage(hLv, WM_CHANGEUISTATE, MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS), 0); SetWindowTheme(hLv, TEXT("Explorer"), NULL); } 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(GetParent(hLv)); return TRUE; } break; } return CallWindowProc(Lv_PrevProc, hLv, uMsg, wParam, lParam); }