diff --git a/win/vncviewer/CConn.cxx b/win/vncviewer/CConn.cxx
index f289d38..6a6561d 100644
--- a/win/vncviewer/CConn.cxx
+++ b/win/vncviewer/CConn.cxx
@@ -16,6 +16,10 @@
  * USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <winsock2.h>
 #include <vncviewer/UserPasswdDialog.h>
 #include <vncviewer/CConn.h>
@@ -25,6 +29,9 @@
 #include <rfb/Security.h>
 #include <rfb/CMsgWriter.h>
 #include <rfb/Configuration.h>
+#ifdef HAVE_GNUTLS
+#include <rfb/CSecurityTLS.h>
+#endif
 #include <rfb/LogWriter.h>
 #include <rfb_win32/AboutDialog.h>
 
@@ -97,6 +104,9 @@
   applyOptions(options);
 
   CSecurity::upg = this;
+#ifdef HAVE_GNUTLS
+  CSecurityTLS::msg = this;
+#endif
 
   // Start the RFB protocol
   sock = s;
@@ -473,6 +483,34 @@
   sock->shutdown();
 }
 
+bool CConn::showMsgBox(int flags, const char* title, const char* text)
+{
+  UINT winflags = 0;
+  int ret;
+
+  /* Translate flags */
+  if ((flags & M_OK) != 0)
+    winflags |= MB_OK;
+  if ((flags & M_OKCANCEL) != 0)
+    winflags |= MB_OKCANCEL;
+  if ((flags & M_YESNO) != 0)
+    winflags |= MB_YESNO;
+  if ((flags & M_ICONERROR) != 0)
+    winflags |= MB_ICONERROR;
+  if ((flags & M_ICONQUESTION) != 0)
+    winflags |= MB_ICONQUESTION;
+  if ((flags & M_ICONWARNING) != 0)
+    winflags |= MB_ICONWARNING;
+  if ((flags & M_ICONINFORMATION) != 0)
+    winflags |= MB_ICONINFORMATION;
+  if ((flags & M_DEFBUTTON1) != 0)
+    winflags |= MB_DEFBUTTON1;
+  if ((flags & M_DEFBUTTON2) != 0)
+    winflags |= MB_DEFBUTTON2;
+
+  ret = MessageBox(NULL, text, title, flags);
+  return (ret == IDOK || ret == IDYES) ? true : false;
+}
 
 void
 CConn::showOptionsDialog() {
