Posted to tcl by patthoyts at Wed Apr 29 22:35:56 GMT 2009view pretty
# Show the standard print dialog critcl::cproc PrintDlg {Tcl_Interp* interp Tcl_Obj* parent} ok { PRINTDLG pd; int oldMode = 0; ZeroMemory(&pd, sizeof(PRINTDLG)); pd.lStructSize = sizeof(PRINTDLG); pd.hwndOwner = GetHWNDFromObj(interp, parent); pd.Flags = PD_ALLPAGES | PD_NOSELECTION; oldMode = Tcl_SetServiceMode(TCL_SERVICE_ALL); if (PrintDlg(&pd)) { Tcl_Obj *resObj = NULL; LPDEVNAMES lpDev = NULL; lpDev = (LPDEVNAMES)GlobalLock(pd.hDevNames); if (lpDev != NULL) { LPCTSTR szName = ((LPCTSTR)lpDev) + lpDev->wDeviceOffset; if (szName && *szName) { resObj = Tcl_NewStringObj(szName, -1); } } if (resObj != NULL) { Tcl_SetObjResult(interp, resObj); } } Tcl_SetServiceMode(oldMode); return TCL_OK; }