Posted to tcl by patthoyts at Wed Apr 29 22:35:56 GMT 2009view raw
- # 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;
- }