97 lines
3.1 KiB
Plaintext
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());
|
|
}
|
|
|
|
|