diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
new file mode 100644
index 0000000..08bb771
--- /dev/null
+++ b/vncviewer/FTDialog.cxx
@@ -0,0 +1,107 @@
+/* Copyright (C) 2005 TightVNC Team.  All Rights Reserved.
+ *    
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ *
+ * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
+ *
+ */
+
+// -=- FTDialog.cxx
+
+#include <vncviewer/FTDialog.h>
+
+using namespace rfb;
+using namespace rfb::win32;
+
+FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT) : Dialog(hInst)
+{
+  m_pFileTransfer = pFT;
+  m_hInstance = hInst;
+  m_bDlgShown = false;
+  m_szLocalPath[0] = '\0';
+  m_szRemotePath[0] = '\0';
+  m_szLocalPathTmp[0] = '\0';
+  m_szRemotePathTmp[0] = '\0';
+}
+
+FTDialog::~FTDialog()
+{
+  closeFTDialog();
+}
+
+bool
+FTDialog::createFTDialog()
+{
+	return false;
+}
+
+bool
+FTDialog::initFTDialog()
+{
+  return false;
+}
+
+void
+FTDialog::closeFTDialog()
+{
+}
+
+BOOL CALLBACK 
+FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	FTDialog *_this = (FTDialog *) GetWindowLong(hwnd, GWL_USERDATA);
+	return FALSE;
+}
+
+void
+FTDialog::reloadLocalFileList()
+{
+}
+
+void
+FTDialog::reloadRemoteFileList()
+{
+}
+
+void 
+FTDialog::onLocalItemActivate(LPNMITEMACTIVATE lpnmia)
+{
+}
+
+void 
+FTDialog::onRemoteItemActivate(LPNMITEMACTIVATE lpnmia)
+{
+}
+
+void
+FTDialog::addLocalLVItems(FileInfo *pFI)
+{
+}
+
+void 
+FTDialog::addRemoteLVItems(FileInfo *pFI)
+{
+}
+
+void 
+FTDialog::onLocalOneUpFolder(char *pPath)
+{
+}
+
+void 
+FTDialog::onRemoteOneUpFolder(char *pPath)
+{
+}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
new file mode 100644
index 0000000..2748d9c
--- /dev/null
+++ b/vncviewer/FTDialog.h
@@ -0,0 +1,81 @@
+/* Copyright (C) 2005 TightVNC Team.  All Rights Reserved.
+ *    
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ *
+ * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
+ *
+ */
+
+// -=- FTDialog.h
+
+#ifndef __RFB_WIN32_FTDIALOG_H__
+#define __RFB_WIN32_FTDIALOG_H__
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include <rfb/FileInfo.h>
+#include <rfb_win32/Dialog.h>
+#include <vncviewer/FileTransfer.h>
+#include <vncviewer/resource.h>
+
+namespace rfb {
+  namespace win32 {
+    class FTDialog : public Dialog
+    {
+    public:
+      FTDialog(HINSTANCE hInst, FileTransfer *pFT);
+      ~FTDialog();
+      
+      bool createFTDialog();
+      void closeFTDialog();
+      
+      static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+      
+      void addLocalLVItems(FileInfo *pFI);
+      void addRemoteLVItems(FileInfo *pFI);
+      
+      void reloadLocalFileList();
+      void reloadRemoteFileList();
+      
+      char *getLocalPath() { return m_szLocalPath; };
+      char *getRemotePath() { return m_szRemotePath; };
+      
+    private:
+      FileTransfer *m_pFileTransfer;
+      
+      HWND m_hwndFTDialog;
+      HINSTANCE m_hInstance;
+      
+      void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
+      void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
+
+      bool initFTDialog();
+      
+      void onLocalOneUpFolder(char *pPath);
+      void onRemoteOneUpFolder(char *pPath);
+      
+      char m_szLocalPath[MAX_PATH];
+      char m_szRemotePath[MAX_PATH];
+      char m_szLocalPathTmp[MAX_PATH];
+      char m_szRemotePathTmp[MAX_PATH];
+      
+      bool m_bDlgShown;
+    };
+  }
+}
+
+#endif // __RFB_WIN32_FTDIALOG_H__
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
new file mode 100644
index 0000000..b439aa9
--- /dev/null
+++ b/vncviewer/FileTransfer.cxx
@@ -0,0 +1,37 @@
+/* Copyright (C) 2005 TightVNC Team.  All Rights Reserved.
+ *    
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ *
+ * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
+ *
+ */
+
+// -=- FileTransfer.cxx
+
+#include <vncviewer/FileTransfer.h>
+
+using namespace rfb;
+using namespace rfb::win32;
+
+FileTransfer::FileTransfer()
+{
+
+}
+
+FileTransfer::~FileTransfer()
+{
+
+}
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
new file mode 100644
index 0000000..4a4e725
--- /dev/null
+++ b/vncviewer/FileTransfer.h
@@ -0,0 +1,39 @@
+/* Copyright (C) 2005 TightVNC Team.  All Rights Reserved.
+ *    
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ *
+ * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
+ *
+ */
+
+// -=- FileTransfer.h
+
+#ifndef __RFB_WIN32_FILETRANSFER_H__
+#define __RFB_WIN32_FILETRANSFER_H__
+
+namespace rfb {
+  namespace win32 {
+    class FileTransfer
+    {
+    public:
+      FileTransfer();
+      ~FileTransfer();
+      
+    };
+  }
+}
+
+#endif // __RFB_WIN32_FILETRANSFER_H__
diff --git a/vncviewer/vncviewer.dsp b/vncviewer/vncviewer.dsp
index a918698..47937de 100644
--- a/vncviewer/vncviewer.dsp
+++ b/vncviewer/vncviewer.dsp
@@ -150,6 +150,14 @@
 # End Source File
 # Begin Source File
 
+SOURCE=.\FileTransfer.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=.\FTDialog.cxx
+# End Source File
+# Begin Source File
+
 SOURCE=.\FTListView.cxx
 # End Source File
 # Begin Source File
@@ -198,6 +206,14 @@
 # End Source File
 # Begin Source File
 
+SOURCE=.\FileTransfer.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FTDialog.h
+# End Source File
+# Begin Source File
+
 SOURCE=.\FTListView.h
 # End Source File
 # Begin Source File
