UINT8 CProductSaleWin::DeptSaleProc(UINT32 deptNo)
{
	UINT8 ret;
	DBG_PRINT(("进入CProductSaleWin::DeptSaleProc函数"));
	DBG_PRINT(("deptNo == %u", deptNo));
	ret = pSaleData->DeptSale(deptNo, "");
	
	if ((m_IfCancel)&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品
	{
		ErrMsgBox(ret);
		pSaleData->NoCancelGoods();
		m_IfCancel = false;
		m_strSuffix = "";
		DeptSaleShow();
		ChangeTitle();
		ReFresh();
		return SUCCESS;
	}
	if (ret != SUCCEED) 
	{
		m_strSuffix = "";
	   return(ErrMsgBox(ret));
	}
	//添加实现内容调整的函数 
	DeptSaleShow();
	ChangeTitle();
	ReFresh();
	//切换到商品销售界面
	ChangeWin(PRODUCT_SALE_WIN);
	DBG_PRINT(("退出CProductSaleWin::DeptSaleProc函数"));
	return SUCCESS;
}
//"Pen and brush settings" dialog procedure
INT_PTR CALLBACK PBDialogProc(HWND hwndDlg,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
)
{
	try
	{
		//Message switch
		switch(uMsg)
		{
		//Everything is done with the message cracker macros
		case WM_INITDIALOG:
			return HANDLE_WM_INITDIALOG(hwndDlg,wParam,lParam,PBSettings_OnInitDialog);
		case WM_COMMAND:
			HANDLE_WM_COMMAND(hwndDlg,wParam,lParam,PBSettings_OnCommand);
			return FALSE;
		case WM_NOTIFY:
			return HANDLE_WM_NOTIFY(hwndDlg,wParam,lParam,PBSettings_OnNotify);
		case WM_CLOSE:
			EndDialog(hwndDlg,IDCANCEL);
			return TRUE;
		case WM_DRAWITEM:
			return HANDLE_WM_DRAWITEM(hwndDlg,wParam,lParam,PBSettings_OnDrawItem);
		}
	}
	catch(exception &ex) //Handle exceptions
	{
		ErrMsgBox(hMainWindow,ex,_T(__FUNCSIG__),MB_ICONERROR);
		EndDialog(hwndDlg,IDABORT);
	}
	return FALSE;
}
BOOL DisplayDeviceCapsInfo ()
{
	HDC hdc;
	int i, iValue;
	
	if (!strcmp (gszDeviceName, "Display"))
	{
		if (!(hdc = GetDC (ghwndDevCaps)))
		{
			ErrMsgBox (GetStringRes(IDS_GETDCFAIL), ERR_MOD_NAME);
			return FALSE;
		}
	}
	
	else
	{
		if (!(hdc = CreateDC (gszDriverName, gszDeviceName, gszPort, NULL)))
		{
			char buf[BUFSIZE];
			
			if (_snprintf_s (buf, BUFSIZE, _TRUNCATE, GetStringRes(IDS_FMT_CREDCFAIL),	gszDriverName, gszDeviceName, gszPort) > 0)
				ErrMsgBox (buf, ERR_MOD_NAME);

			return FALSE;
		}
	}
	
	for (i = 0; i < MAX_DEVICE_CAPS; i++)
	{
		iValue = GetDeviceCaps (hdc, gaCaps[i].iValue);
		TranslateDeviceCaps (i, gaCaps[i].iValue, iValue);
	}
	
	if (!strcmp (gszDeviceName, "Display"))
		ReleaseDC(ghwndDevCaps, hdc);
	else
		DeleteDC (hdc);
	
	return TRUE;
}
UINT8 CProductSaleWin::PlusProc(void)
{
	UINT8 ret;
	double ii;
	char *content;
	INT32 dotNum = 0;//小数位数
	
	content = (char*)(m_pInput2->m_contentBuf);
	ret=is_Money(content);
	if (ret != SUCCESS)
	{
		return(ErrMsgBox(ret));
	}
	ii = atof(content);
    DBG_PRINT(("ii= %lf",ii));
	if(((UINT64)double2int(ii*GOODS_NUM_EXTENSION)) >= MAX_MONEY)
	{
		return (ErrMsgBox(ILLEGAL_AMOUNT));
	}	
	dotNum = CheckFloatBit(ii);
	DBG_PRINT(("dotNum= %d",dotNum));
	if (dotNum>3) 
	{
		DBG_PRINT(("--------ii = %f--------", ii));
		DBG_PRINT(("--------dotNum = %d--------", dotNum));
		CaMsgBox::ShowMsg("小数位数不超过三位");
		return FAILURE;
	}	
	m_pInput2->Clear();
	ret = pSaleData->Plus(ii);
	if (ret != SUCCESS) 
	{
	   return(ErrMsgBox(ret));
	}
	ReFresh();
	return SUCCESS;
}
UINT8 CProductSaleWin::ClientInputProc(void)
{
	char *content;
	UINT8 ret;
	char *blank = "";
	INT8 chValue[128];
	memset((void*)chValue, 0, sizeof(chValue));

	content = (char*)(m_pInput2->m_contentBuf);
	if ('.' == *content) 
	{
		CClient client;
		sprintf(chValue, "where KH_BH = '%s'", (content+1));
		client.m_filter = chValue;
		client.Requery();
		if(client.LoadOneRecord()!= SQLITE_OK)
		{
			CaMsgBox::ShowMsg("没有对应的付款人");
			return FAILURE;
		}
		ret = pSaleData->ClientNameInput(client.m_khmc.c_str(),client.m_khsh.c_str());		
	}
	else
	{
		ret = pSaleData->ClientNameInput(content);
	}
	
	m_pInput2->Clear();
	if (ret != SUCCESS) 
	{
	   return(ErrMsgBox(ret));
	}
	ClientShow();
	ChangeTitle();
	ReFresh();
	strcpy(title_arr[1], blank);
	strcpy(title_arr[2], blank);
	strcpy(title_arr[3], blank);
	ChangeTitle();
	return SUCCESS;
}
UINT8 CProductSaleWin::TotalCancelProc()
{
	UINT8 ret;
	CaMsgBox msgBox("是否整单取消?",CaMsgBox::MB_YESNO);
	msgBox.ShowBox();
	if ((msgBox.m_iStatus == NO_PRESSED)||(msgBox.m_iStatus == CANCEL_PRESSED))
	{
		return SUCCESS;
	}
	
	if(msgBox.m_iStatus == OK_PRESSED)
	{
		this->ReFresh();
		ret = pSaleData->TotalCancel();
		if (ret != SUCCESS) 
		{
		   return(ErrMsgBox(ret));
		}
		m_strSuffix = "";
		m_pInput2->Clear();
		ChangeWin(PRODUCT_SALE_MAIN_MENU); //返回销售档主界面
	}
	return SUCCESS;
}
UINT8 CProductSaleWin::GoodesReductProc(void)
{
	char *content;
	double reductMoney;
	UINT8 ret;

	if(m_pInput2->IsEmpty())
	{
		CaMsgBox::ShowMsg("未输入折让金额");
		return FAILURE;
	}
	content = (char*)(m_pInput2->m_contentBuf);
	reductMoney = atof(content);
	m_pInput2->Clear();
	ret = pSaleData->GoodsReduct(reductMoney);
	if (ret != SUCCESS) 
	{
	   return(ErrMsgBox(ret));
	}
	DeptSaleShow();
	ChangeTitle();
	ReFresh();
	return SUCCESS;	
}
//---------------------------------------------------------------------------------
//处理事件
//---------------------------------------------------------------------------------
int CProductSaleWin::ProcEvent(int iEvent,unsigned char *pEventData, int iDataLen)
{
	UINT8 ret;
	double ii;
	char *content;
	string code = "";
	UINT32 deptNo;
	UINT8 IfInvSum = 0;
	INT32 dotNum = 0;
	INT32 nWin;
	INT32 nLen  = 0;
	UINT8 nIndex = 0;
	string strErr("");

	switch(iEvent) 
	{
	case ENTER_KEY:
		m_strSuffix = "";

		//判断装入纸质发票	
		if (isPaper() != 0)
		{
			DBG_PRINT(("没有纸质发票"));
			return(ErrMsgBox(NO_PAPER));
		}
		content = (char*)(m_pInput2->m_contentBuf);
		ii = atof(content);
		m_pInput2->Clear();
		ret = CashShow(ii);
		if (ret != SUCCEED) 
		{
			return(ErrMsgBox(ret));
		}	
		ChangeTitle();
		ReFresh();
		
		if (m_IfCancel)		//之前按了商品取消键
		{
			pSaleData->NoCancelGoods();
			m_IfCancel = false;
			m_strSuffix = "";
		}
		DBG_PRINT(("*****工作模式******:%u", g_globalArg->pSaveTemplateInfo->workMode));
 		ret = pSaleData->PayByCash(IfInvSum);
		DBG_PRINT(("IfInvSum == %u", IfInvSum));
		if ((ret == NO_GOODS)||(ret == DB_FULL))
		{
			ErrMsgBox(ret);
			ChangeWin(PRODUCT_SALE_MAIN_MENU); //返回销售档主界面
			return SUCCESS;
		}

		if (ret != SUCCEED) 
		{
			ErrMsgBox(ret);
			switch(ret) 
			{
				case GET_FISCAL_CODE_ERROR://取税控码失败
					break;
				case UPDATE_INV_VOL_ERROR://写数据库失败
					break;
				case DB_SAVE_ERROR://写数据库失败
					break;
				case MALLOC_MEM_ERROR:
					break;
				case INV_SUM_ERROR:
					break;
				case MUST_RE_LOGIN:
					break;
				case HAVE_ROLLED:
					break;
				case NM_EXCEED_MIN:   //发票金额超下限,退回到部类销售显示,等待再次结帐
				case NO_PAPER: //没纸,退回到部类销售显示,等待再次结帐
					DeptSaleShow();
					ChangeTitle();
					ReFresh();
					return FAILURE;
					break;
				case INV_LIB_ERR:
					break;
				case GX_SV_NUM_EXCEED:
					break;
				case GX_SV_TIME_EXCEED:
					break;
				case GX_SV_SUM_EXCEED: 
					break;
				default:
					return FAILURE;//留在商品销售界面
			}
		}
		else
		{
			DBG_PRINT(("启动开钱箱"));
			MoneyBox_Open();
		}

		if (pSaleData->m_returnOther == 1)
		{
			pSaleData->m_returnOther = 0;
//			ScannerRelease();//停止扫描枪扫描
//			g_winNo = 3;//对应INV_MANAGE_MENU界面
			nWin = INV_MANAGE_MENU;
		}
		else
		{
//			g_winNo = 2;//对应INV_MANAGE_MENU界面
			nWin = PRODUCT_SALE_MAIN_MENU;
		}
// 		if (1==IfInvSum) 
// 		{
// 			InvSumShowPrn();//显示卷汇总并打印
// 		}
// 		else
// 		{
			ChangeWin(nWin); //返回销售档主界面
//		}

		return SUCCESS;
		break;

    case DISCOUNT_KEY:

		if ((pSaleData->m_tmpGoodsNum>=(MAX_GOODS_LINE-1))&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		content = (char*)(m_pInput2->m_contentBuf);
		if (strlen(content)==0)
		{
			CaMsgBox::ShowMsg("请先输入折扣率");
			return SUCCESS;
		}
		ret =is_Figure(content);
		if (ret != SUCCESS)
		{
			return(ErrMsgBox(INPUT_FIGURE_ERROR));
	}
		ii = atof(content);
		ii = (INT32)ii;//向零取整
		m_pInput2->Clear();
		ret = pSaleData->Discount(ii);
		if (ret != SUCCESS) 
		{
		   return(ErrMsgBox(ret));
		}
		ReFresh();
// 		CaMsgBox::ShowMsg("暂不支持此功能");
// 		return SUCCESS;
		break;

	case PRICE_INPUT:
		return(PriceInputProc());
		break;

	case SUM_INPUT:
		return(SumInputProc());
		break;

	case CLIENT_NAME_INPUT:
		return(ClientInputProc());
		break;

	case FIND_KEY:
		return(ClientCodeInputProc());
		break;

	case HELP_KEY:
		return(RemarksInputProc());
		break;

	case CANCEL_GOODS:
		
		if (m_IfCancel)//之前按了商品取消键
		{
			pSaleData->NoCancelGoods();
			m_IfCancel = false;
			m_strSuffix = "";
			DeptSaleShow();
		}
		else
		{
			if (pSaleData->m_tmpGoodsNum==0)//无商品可取消
			{
				ErrMsgBox(NO_GOODS_CANCEL);	
				ChangeWin(PRODUCT_SALE_MAIN_MENU);
				return SUCCESS;
			}
			pSaleData->CancelGoods();
			m_IfCancel = true;
			m_strSuffix = "<消>";
			CancelGoodsShow();
		}		
		ChangeTitle();
	    ReFresh();
		return SUCCESS;
		break;

	case PLUS_KEY:
		return(PlusProc());
		break;

	case TOTAL_CANCEL:
		if (m_IfCancel)//之前按了商品取消键
		{
			pSaleData->NoCancelGoods();
			m_IfCancel = false;
			m_strSuffix = "";
		}
		return(TotalCancelProc());
		break;

	case PLU_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		content = (char*)(m_pInput2->m_contentBuf);
		code = "";
        nLen = GOODS_CODE_LEN - strlen(content);
		if (nLen > 0)//不足13位,则前补零到13位
		{
			while(nLen > 0)
			{
				code += "0";
				nLen--;
			}
		}		
		code += content;
		ret = pSaleData->DeptSale(0, code);
		m_pInput2->Clear();
		if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品
		{
			ErrMsgBox(ret);
			pSaleData->NoCancelGoods();
			m_IfCancel = false;
			m_strSuffix = "";
			DeptSaleShow();
			ChangeTitle();
			ReFresh();
			return SUCCESS;
		}
		if (ret != SUCCEED) 
	   {
			m_strSuffix = "";
		   return(ErrMsgBox(ret));
	   }
	   //添加实现内容调整的函数 
	   DeptSaleShow();
	   ChangeTitle();
	   ReFresh();	
	   //切换到商品销售界面
	   ChangeWin(PRODUCT_SALE_WIN);
	   return SUCCESS;
		break;
	
	case SHIFT_PLU_KEY: //临时输入商品名称
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		content = (char*)(m_pInput2->m_contentBuf);
		ret = pSaleData->PLUSale(content, strErr);			
		if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品
		{
			ErrMsgBox(ret);
			pSaleData->NoCancelGoods();
			m_IfCancel = false;
			m_strSuffix = "";
			DeptSaleShow();
			ChangeTitle();
			ReFresh();
			return SUCCESS;
		}
		if (ret != SUCCEED) 
		{
			m_strSuffix = "";
			if (FAILURE == ret) 
			{
				CaMsgBox::ShowMsg(strErr);
				strErr = "";
			}
			else
			{
				ErrMsgBox(ret);
			}		
			return FAILURE;
		}
		m_pInput2->Clear();
	   //添加实现内容调整的函数 
	   DeptSaleShow();
	   ChangeTitle();
	   ReFresh();	
	   //切换到商品销售界面
	   ChangeWin(PRODUCT_SALE_WIN);
	   return SUCCESS;
		break;
	
// 	case SCANNER_EVENT_KEY:
// 		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
// 		{
// 			CaMsgBox::ShowMsg("商品行数超限");
// 			ClearScannerBuf();
// 			return FAILURE;
// 		}
// 		content = (char*)ScannerCode();
// 		DBG_PRINT((" 扫描枪读出的PLU码:%s", content));
// 		code = "";
//         nLen = GOODS_CODE_LEN - strlen(content);
// 		if (nLen > 0)//不足13位,则前补零到13位
// 		{
// 			while(nLen > 0)
// 			{
// 				code += "0";
// 				nLen--;
// 			}
// 		}
// 		code += content;
// 		//ret = pSaleData->PLUSale(code);
// 		ret = pSaleData->DeptSale(0, code);
// 		m_pInput2->Clear();
// 		if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品
// 		{
// 			ErrMsgBox(ret);
// 			ClearScannerBuf();
// 			pSaleData->NoCancelGoods();
// 			m_IfCancel = false;
// 			m_strSuffix = "";
// 			DeptSaleShow();
// 			ChangeTitle();
// 			ReFresh();
// 			return SUCCESS;
// 		}
// 		if (ret != SUCCEED) 
// 	   {
// 			ErrMsgBox(ret);
// 			ClearScannerBuf();
// 			return FAILURE;
// 	   }
// 	   //添加实现内容调整的函数 
// 	   DeptSaleShow();
// 	   ChangeTitle();
// 	   ReFresh();	
// 	   //切换到商品销售界面
// 	   ChangeWin(PRODUCT_SALE_WIN);
// 	   return SUCCESS;
// 		break;

	case CHANGE_DEPT_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		content = (char*)(m_pInput2->m_contentBuf);
		if (is_Figure(content) != SUCCESS)
		{
			CaMsgBox::ShowMsg("请输入1~99区间的整数");
			return FAILURE;
		}
		deptNo = atoi(content);
		m_pInput2->Clear();
		return(DeptSaleProc(deptNo));
		break;	

	case DEPT1_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		if (QuickSaleProc()!=SUCCESS)
		{
			return FAILURE;
		}
		return(DeptSaleProc(1));
	    break;

	case DEPT2_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		if (QuickSaleProc()!=SUCCESS)
		{
			return FAILURE;
		}
		return(DeptSaleProc(2));
	    break;
	   
	case DEPT3_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		if (QuickSaleProc()!=SUCCESS)
		{
			return FAILURE;
		}
		return(DeptSaleProc(3));
	    break;
	   
	case DEPT4_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		if (QuickSaleProc()!=SUCCESS)
		{
			return FAILURE;
		}
		return(DeptSaleProc(4));
	    break;

	case DEPT5_KEY:
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		if (QuickSaleProc()!=SUCCESS)
		{
			return FAILURE;
		}
		return(DeptSaleProc(5));
	    break;
		
	case RETURN_MAIN_MENU:  //return to SYSTEMMENU
		if (pSaleData->m_tmpGoodsNum==0)
		{
			ChangeWin(PRODUCT_SALE_MAIN_MENU);
		}
		else
		{
			CaMsgBox::ShowMsg("商品行数非零,不能返回");
		}
		return SUCCESS;
		break;

	case GOODSREDUCT_KEY:
/*
		if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) 
		{
			CaMsgBox::ShowMsg("商品行数超限");
			return FAILURE;
		}
		GoodesReductProc();*/
		CaMsgBox::ShowMsg("暂不支持此功能");
		return SUCCESS;
		break;
		
	default:
		break;
	}
	
	return CaWindow::ProcEvent(iEvent,pEventData,iDataLen);
}
BOOL DisplayPrinterDriverInfo (HWND hwnd)
{
  HANDLE        hPrinter;
  DWORD         dwBytesNeeded;
  DRIVER_INFO_1 *pDriverInfo1;
  DRIVER_INFO_2 *pDriverInfo2;
  char          buf[BUFSIZE];
  char          pEnvironment[BUFSIZE] = "";
  BOOL          bReturn = TRUE;

  //
  // open selected printer & alloc buffers & get sundry info, close printer
  //

  OpenPrinter (gszDeviceName, &hPrinter, NULL);

  if (!hPrinter)
  {
    char buf[BUFSIZE];

    _snprintf_s (buf, BUFSIZE, _TRUNCATE, GetStringRes(IDS_FMT_OPNPRTFAIL), gszDeviceName);
    ErrMsgBox ((LPCSTR) buf, ERR_MOD_NAME);
    bReturn  = FALSE;
    goto display_prt_drv_info_done1;
  }

  GetPrinterDriver (hPrinter, pEnvironment, 1, NULL, 0, &dwBytesNeeded);

  //
  // simple error checking, if these work assume rest will too
  //

  if (!(pDriverInfo1 = (DRIVER_INFO_1 *) LocalAlloc (LPTR, dwBytesNeeded)))
  {
    ErrMsgBox (GetStringRes(IDS_LALLOCFAIL), ERR_MOD_NAME);
    bReturn = FALSE;
    goto display_prt_drv_info_done1;
  }

  if (!GetPrinterDriver (hPrinter, pEnvironment, 1, (LPBYTE) pDriverInfo1,
                         dwBytesNeeded, &dwBytesNeeded))
  {
    ErrMsgBox (GetStringRes(IDS_GETPRTDRVFAIL), ERR_MOD_NAME);
    bReturn = FALSE;
    goto display_prt_drv_info_done2;
  }

  GetPrinterDriver (hPrinter, pEnvironment, 2, NULL, 0, &dwBytesNeeded);
  pDriverInfo2 = (DRIVER_INFO_2 *) LocalAlloc (LPTR, dwBytesNeeded);
  GetPrinterDriver (hPrinter, pEnvironment, 2, (LPBYTE) pDriverInfo2,
                    dwBytesNeeded, &dwBytesNeeded);

  ClosePrinter (hPrinter);

  //
  // shove info in listbox
  //

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[0]) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[1], pDriverInfo1->pName) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[2]) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[3], pDriverInfo2->cVersion) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[4], pDriverInfo2->pName) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[5], pDriverInfo2->pEnvironment) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[6], pDriverInfo2->pDriverPath) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[7], pDriverInfo2->pDataFile) > 0 )
	outstr();

  if ( _snprintf_s (buf, BUFSIZE, _TRUNCATE, gaDrvInfo[8], pDriverInfo2->pConfigFile) > 0 )
	outstr();

  LocalFree (LocalHandle (pDriverInfo2));

display_prt_drv_info_done2:

  LocalFree (LocalHandle (pDriverInfo1));

display_prt_drv_info_done1:

  return bReturn;
}