#include #include #include #include "resource.h" #include "main.h" extern HFONT g_GUIFont; WNDPROC g_PrevLvProc; static LRESULT CALLBACK LvProc(HWND, UINT, WPARAM, LPARAM); HWND LvCreate(HWND hWnd, HMENU hMenu) { HMODULE hModule; HWND hListView; hListView = CreateWindowEx( 0, WC_LISTVIEW, TEXT(""), WS_CHILD|WS_VISIBLE|WS_VSCROLL|LVS_REPORT, 0, 0, 0, 0, hWnd, hMenu, GetModuleHandle(NULL), NULL ); g_PrevLvProc = (WNDPROC)SetWindowLongPtr(hListView, GWLP_WNDPROC, (LONG_PTR)LvProc); ListView_SetExtendedListViewStyle(hListView, LVS_EX_DOUBLEBUFFER); SendMessage(hListView, WM_SETFONT, (WPARAM)g_GUIFont, MAKELPARAM(FALSE, 0)); hModule = LoadLibrary(TEXT("uxtheme.dll")); if (hModule && GetProcAddress(hModule, "SetWindowTheme")) { ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER); SendMessage(hListView, WM_CHANGEUISTATE, MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS), 0); SetWindowTheme(hListView, TEXT("Explorer"), NULL); } return hListView; } LRESULT CALLBACK LvProc(HWND hListView, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_NOTIFY: switch (((NMHDR *)lParam)->code) { case HDN_ENDTRACK: UpdateLayout(GetParent(hListView)); return TRUE; } break; } return CallWindowProc(g_PrevLvProc, hListView, uMsg, wParam, lParam); }