declare integer CreateDC in Win32API string, string, string, string declare integer PrintDlg in comdlg32.dll string @ cPD = "" cPD = cPD + chr(66) + chr(0) + chr(0) + chr(0) && lStructSize cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && hwndOwner cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && hDevMode cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && hDevNames cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && hDC cPD = cPD + chr(4 + 8) + chr(1) + chr(0) + chr(0) && Flags (see commdlg.h) cPD = cPD + chr(1) + chr(0) && nFromPage cPD = cPD + chr(1) + chr(0) && nToPage cPD = cPD + chr(0) + chr(0) && nMinPage cPD = cPD + chr(0) + chr(0) && nMaxPage cPD = cPD + chr(1) + chr(0) && nCopies cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && hInstance cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && lCustData cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && lpfnPrintHook cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && lpfnSetupHook cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && lpPrintTemplateName cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && lpSetupTemplateName cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && PrintTemplate cPD = cPD + chr(0) + chr(0) + chr(0) + chr(0) && SetupTemplate if PrintDlg(@cPD) = 0 return .F. endif this.HDC = BITOR(this.HexToBin(substr(cPD, 17, 4)), 0) FUNCTION HextoBin parameter cHex * Converts a 4 character string into an integer return ; asc(substr(cHex, 1, 1)) * 0x00000001 + ; asc(substr(cHex, 2, 1)) * 0x00000100 + ; asc(substr(cHex, 3, 1)) * 0x00010000 + ; asc(substr(cHex, 4, 1)) * 0x01000000Thanks in advance