diff --git a/vncviewer/FTListView.cxx b/vncviewer/FTListView.cxx
index 162d7c1..8b43ba5 100644
--- a/vncviewer/FTListView.cxx
+++ b/vncviewer/FTListView.cxx
@@ -26,9 +26,10 @@
 using namespace rfb;
 using namespace rfb::win32;
 
-FTListView::FTListView(HWND hLV)
+FTListView::FTListView(HWND hListView)
 {
-  m_hListView = hLV;
+  m_bInitialized = false;
+  m_hListView = hListView;
   m_fileInfo.free();
 }
 
@@ -39,9 +40,24 @@
 
 
 bool 
-FTListView::initialize()
+FTListView::initialize(HINSTANCE hInst)
 {
-  return false;
+  if (m_bInitialized) return false;
+
+  initImageList(hInst);
+  
+  RECT Rect;
+  GetClientRect(m_hListView, &Rect);
+  Rect.right -= GetSystemMetrics(SM_CXHSCROLL);
+  int xwidth0 = (int) (0.35 * Rect.right);
+  int xwidth1 = (int) (0.22 * Rect.right);
+  int xwidth2 = (int) (0.43 * Rect.right);
+  
+  addColumn("Name", 0, xwidth0, LVCFMT_LEFT);
+  addColumn("Size", 1, xwidth1, LVCFMT_RIGHT);
+  addColumn("Data", 2, xwidth2, LVCFMT_LEFT);
+  
+  return true;
 }
 
 void 
@@ -175,3 +191,17 @@
   
   ListView_SetImageList(m_hListView, m_hImageList, LVSIL_SMALL); 
 }
+
+void 
+FTListView::addColumn(char *iText, int iOrder, int xWidth, int alignFmt)
+{
+	LVCOLUMN lvc; 
+	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM | LVCF_ORDER;
+	lvc.fmt = alignFmt;
+	lvc.iSubItem = iOrder;
+	lvc.pszText = iText;	
+	lvc.cchTextMax = 32;
+	lvc.cx = xWidth;
+	lvc.iOrder = iOrder;
+	ListView_InsertColumn(m_hListView, iOrder, &lvc);
+}
diff --git a/vncviewer/FTListView.h b/vncviewer/FTListView.h
index ec14015..5f4fd64 100644
--- a/vncviewer/FTListView.h
+++ b/vncviewer/FTListView.h
@@ -25,26 +25,25 @@
 #define __RFB_WIN32_FTLISTVIEW_H__
 
 #include <windows.h>
+#include <commctrl.h>
 
 #include <rfb/FileInfo.h>
 #include <rfb_win32/FolderManager.h>
-#include <rfb_win32/ListViewControl.h>
 #include <vncviewer/resource.h>
 
 namespace rfb {
   namespace win32{
-    class FTListView : private ListViewControl
+    class FTListView
     {
     public:
-      FTListView(HWND hLV);
+      FTListView(HWND hListView);
       ~FTListView();
 
-      bool initialize();
+      bool initialize(HINSTANCE hInst);
       
       void onGetDispInfo(NMLVDISPINFO *di);
       void addItems(FileInfo *pFI);
       void deleteAllItems();
-      void initImageList(HINSTANCE hInst);
       
       char *getActivateItemName(LPNMITEMACTIVATE lpnmia);
       int getSelectedItems(FileInfo *pFI);
@@ -55,6 +54,11 @@
       HWND m_hListView;
       FileInfo m_fileInfo;
       HIMAGELIST m_hImageList;
+
+      bool m_bInitialized;
+
+      void addColumn(char *iText, int iOrder, int xWidth, int alignFmt);
+      void initImageList(HINSTANCE hInst);
       
     };
   }
