mch_print_begin(prt_settings_T *psettings)
{
int ret;
- static DOCINFO di;
char szBuffer[300];
+#if defined(FEAT_MBYTE)
+ WCHAR *wp = NULL;
+#endif
hDlgPrint = CreateDialog(GetModuleHandle(NULL), TEXT("PrintDlgBox"),
prt_dlg.hwndOwner, PrintDlgProc);
wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname));
vimSetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (char_u *)szBuffer);
- vim_memset(&di, 0, sizeof(DOCINFO));
- di.cbSize = sizeof(DOCINFO);
- di.lpszDocName = (LPCSTR)psettings->jobname;
- ret = StartDoc(prt_dlg.hDC, &di);
+#if defined(FEAT_MBYTE)
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ wp = enc_to_utf16(psettings->jobname, NULL);
+ if (wp != NULL)
+ {
+ DOCINFOW di;
+
+ vim_memset(&di, 0, sizeof(di));
+ di.cbSize = sizeof(di);
+ di.lpszDocName = wp;
+ ret = StartDocW(prt_dlg.hDC, &di);
+ vim_free(wp);
+ }
+ else
+#endif
+ {
+ DOCINFO di;
+
+ vim_memset(&di, 0, sizeof(di));
+ di.cbSize = sizeof(di);
+ di.lpszDocName = (LPCSTR)psettings->jobname;
+ ret = StartDoc(prt_dlg.hDC, &di);
+ }
#ifdef FEAT_GUI
/* Give focus back to main window (when using MDI). */