diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 3de1b6c..b5782d6 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -224,6 +224,12 @@
       case IDC_FTCLOSE:
         _this->onClose();
         return FALSE;
+      case IDC_FTLOCALBROWSE:
+        _this->onLocalBrowse();
+        return FALSE;
+      case IDC_FTREMOTEBROWSE:
+        _this->onRemoteBrowse();
+        return FALSE;
       case IDC_FTLOCALUP:
         _this->setButtonsState();
         _this->onLocalOneUpFolder();
@@ -355,6 +361,18 @@
 }
 
 void 
+FTDialog::onLocalBrowse()
+{
+
+}
+
+void 
+FTDialog::onRemoteBrowse()
+{
+ 
+}
+
+void 
 FTDialog::onLocalReload()
 {
   strcpy(m_szLocalPathTmp, m_szLocalPath);
@@ -857,6 +875,11 @@
 }
 
 void 
+FTDialog::addBrowseItems(FileInfo *pFI)
+{
+}
+
+void 
 FTDialog::processDlgMsgs()
 {
   MSG msg;
@@ -1026,31 +1049,3 @@
   setItemString(IDC_FTFOLDERNAME, m_szFilename);
   SendDlgItemMessage(handle, IDC_FTFOLDERNAME, EM_SETSEL, (WPARAM) 0, (LPARAM) -1);
 }
-
-FTDialog::BrowseDlg::BrowseDlg(FTDialog *pFTDlg) : Dialog(GetModuleHandle(0))
-{
-
-}
-
-FTDialog::BrowseDlg::~BrowseDlg()
-{
-
-}
-
-bool 
-FTDialog::BrowseDlg::onOk()
-{
-  return false;
-}
-
-bool 
-FTDialog::BrowseDlg::create()
-{
-  return false;
-}
-
-void 
-FTDialog::BrowseDlg::initDialog()
-{
-
-}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index b483794..6cb9d6e 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -58,6 +58,8 @@
       void addRemoteLVItems(FileInfo *pFI);
       void reqFolderUnavailable();
 
+      void addBrowseItems(FileInfo *pFI);
+
       void setStatusText(LPCSTR format,...);
 
       HWND getWndHandle() { return m_hwndFTDialog; }
@@ -71,10 +73,9 @@
       char *getRemotePath() { return m_szRemotePath; }
 
       FTProgress *m_pProgress;
-      
-    private:
       FileTransfer *m_pFileTransfer;
       
+    private:
       HWND m_hwndFTDialog;
       HWND m_hwndLocalPath;
       HWND m_hwndRemotePath;
@@ -88,6 +89,9 @@
       void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
       void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
 
+      void onLocalBrowse();
+      void onRemoteBrowse();
+
       void onLocalReload();
       void onRemoteReload();
 
@@ -223,24 +227,6 @@
 
     private:
         RenameDlg *m_pRenameDlg;
-
-    public:
-      class BrowseDlg : public Dialog
-      {
-      public:
-        BrowseDlg(FTDialog *pFTDlg);
-        ~BrowseDlg();
-
-        bool onOk();
-        bool create();
-        void initDialog();
-
-      private:
-        char m_szFilename[FT_FILENAME_SIZE];
-      };
-
-    private:
-        BrowseDlg *m_pBrowseDlg;
     };
   }
 }
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index b324901..bf7454e 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -529,6 +529,7 @@
 bool 
 FileTransfer::procFLRBrowse(FileInfo *pFI)
 {
+  m_pFTDialog->addBrowseItems(pFI);
   return false;
 }
 
diff --git a/vncviewer/vncviewer.rc b/vncviewer/vncviewer.rc
index 8965abd..94e3f37 100644
--- a/vncviewer/vncviewer.rc
+++ b/vncviewer/vncviewer.rc
@@ -13,57 +13,6 @@
 #undef APSTUDIO_READONLY_SYMBOLS
 
 /////////////////////////////////////////////////////////////////////////////
-// Russian resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
-#ifdef _WIN32
-LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
-#pragma code_page(1251)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_FTBROWSE DIALOG DISCARDABLE  0, 0, 183, 196
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Browse Folders"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,38,175,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,95,175,50,14
-    EDITTEXT        IDC_FTBROWSEPATH,7,7,169,12,ES_AUTOHSCROLL | ES_READONLY | 
-                    NOT WS_TABSTOP
-    CONTROL         "Tree1",IDC_FTBROWSETREE,"SysTreeView32",TVS_HASBUTTONS | 
-                    TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | 
-                    TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,25,169,143
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    IDD_FTBROWSE, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 176
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 189
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // Russian resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
 // English (U.S.) resources
 
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
@@ -423,6 +372,21 @@
     LTEXT           "New Folder Name",IDC_FTTEXT,7,7,179,8
 END
 
+IDD_FTBROWSE DIALOGEX 0, 0, 183, 196
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT
+CAPTION "Browse Folders"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,38,175,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,95,175,50,14
+    EDITTEXT        IDC_FTBROWSEPATH,7,7,169,12,ES_AUTOHSCROLL | ES_READONLY | 
+                    NOT WS_TABSTOP
+    CONTROL         "Tree1",IDC_FTBROWSETREE,"SysTreeView32",TVS_HASBUTTONS | 
+                    TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | 
+                    TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,25,169,143
+END
+
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -600,6 +564,14 @@
         TOPMARGIN, 7
         BOTTOMMARGIN, 56
     END
+
+    IDD_FTBROWSE, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 176
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 189
+    END
 END
 #endif    // APSTUDIO_INVOKED
 
