Files
Work/printman/SCRAPS.TXT
2024-08-07 09:16:27 -04:00

97 lines
3.1 KiB
Plaintext

BOOL PrintManager::printBitmap(PureBitmap &pureBitmap,BOOL advancePage,int width,int height)
{
BitmapInfo bmInfo;
PurePalette systemPalette;
GlobalData<BYTE> bitmapBits;
WORD bmWidth;
WORD bmHeight;
if(!pureBitmap.isOkay())return FALSE;
if(!isInDoc()||!mPrinterDevice.isOkay())return FALSE;
if(!(::GetDeviceCaps(mPrinterDevice,RASTERCAPS)&RC_BITBLT))return FALSE;
if(advancePage&&isInPage())endPage();
if(!isInPage())startPage();
systemPalette.systemPalette();
bmWidth=pureBitmap.width();
bmHeight=pureBitmap.height();
pureBitmap.bitmapBits(bmWidth,bmHeight,bitmapBits);
if(!width)width=bmWidth;
if(!height)height=bmHeight;
bmInfo.width(bmWidth);
bmInfo.height(bmHeight);
bmInfo=systemPalette;
::StretchDIBits(mPrinterDevice,0,0,width,height,0,0,bmInfo.width(),bmInfo.height(),(BYTE*)&bitmapBits[0],(BITMAPINFO*)bmInfo,DIB_RGB_COLORS,SRCCOPY);
if(advancePage)endPage();
return TRUE;
}
/*
BOOL PrintManager::getPrinters(void)
{
String strPrinterKey("System\\CurrentControlSet\\Control\\Print\\Printers");
String strDefaultPrinter;
RegKey cfgKey(RegKey::CurrentConfig);
Printer printer;
String strPrinter;
int enumKey(0);
mPrinters.remove();
if(!cfgKey.openKey(strPrinterKey))return FALSE;
cfgKey.queryValue("Default",strDefaultPrinter);
if(getPrinter(strPrinterKey+String("\\")+strDefaultPrinter,printer))mDefaultPrinter=printer;
while(TRUE)
{
if(!cfgKey.enumKey(enumKey++,strPrinter))break;
if(getPrinter(strPrinterKey+String("\\")+strPrinter,printer))mPrinters.insert(&printer);
}
cfgKey.closeKey();
return TRUE;
}
*/
::OutputDebugString(String(String("Driver:")+printer.printerName()+String("\n")).str());
::OutputDebugString(String(String("Device:")+printer.driverName()+String("\n")).str());
::OutputDebugString(String(String("Output:")+printer.portName()+String("\n")).str());
::OutputDebugString(String(String("DevMode:")+String("")+String("\n")).str());
// printDlg.Flags=PD_RETURNIC;
getDefaultDevNames(devNames);
// printer name (driver offset) "winspool"
// drivername (device offset) "IO//"
// portname (output offset) "LPT1:"
printDlg.hDevNames=devNames.getHandle();
void PrintManager::getDefaultDevNames(GlobalData<BYTE> &devNames)
{
String printerName;
String driverName;
String portName;
DEVNAMES *pDevNames;
char *pChrDevNames;
printerName=mDefaultPrinter.printerName();
driverName=mDefaultPrinter.driverName();
portName=mDefaultPrinter.portName();
devNames.size(sizeof(DEVNAMES)+printerName.length()+1+driverName.length()+1+portName.length()+1,GMEM_MOVEABLE);
devNames.setZero();
pDevNames=(DEVNAMES*)&devNames[0];
pDevNames->wDriverOffset=sizeof(DEVNAMES);
pDevNames->wDeviceOffset=sizeof(DEVNAMES)+printerName.length()+1;
pDevNames->wOutputOffset=sizeof(DEVNAMES)+printerName.length()+1+driverName.length()+1;
pDevNames->wDefault=true;
pChrDevNames=((char*)pDevNames)+pDevNames->wDriverOffset;
::strcpy(pChrDevNames,printerName.str());
pChrDevNames=((char*)pDevNames)+pDevNames->wDeviceOffset;
::strcpy(pChrDevNames,driverName.str());
pChrDevNames=((char*)pDevNames)+pDevNames->wOutputOffset;
::strcpy(pChrDevNames,portName.str());
}