打印的有关问题,折磨人呐,跪求指点

打印的问题,折磨人呐,跪求指点~
问题背景:
正常的打印错误提示,如图:打印的有关问题,折磨人呐,跪求指点,出现这样的提示表示需要使用的打印机的人介入解决问题,正常情况下点击“确定”的时候打印机会默认问题已经得到处理,并继续打印。点击“取消打印”的时候就是取消打印咯。

通过调用Windows API SetJob可以实现“取消打印“的效果,下面是代码:

// jobId打印机ID,nJobControl 命令类型(有暂停、继续、取消之类的)
// 当nJobControl 等于 JOB_CONTROL_CANCEL 时表示取消打印
BOOL SetJob(DWORD jobId ,int nJobControl)
{
HANDLE hPrinter;
if(!OpenPrinter(_T("HP Deskjet 1000 J110 series"),&hPrinter,NULL))// 取句柄
{
                ClosePrinter(hPrinter);
return FALSE;
}

if (!::SetJob( hPrinter , jobId , 0 , NULL , nJobControl ))// 调用API
{
DbgPrint("SetJob Fail ! GetLastError() : %ld  \n " , GetLastError());
ClosePrinter(hPrinter);
return FALSE;
}

ClosePrinter(hPrinter);// 关闭打印机
return TRUE;
}


好了,问题来了:怎么样才能实现上面提到的点击“确定”的效果?
我试图通过下面的代码来解决,API调用成功,但是并没有解决问题(代码结构不咋的,不要拍我 ~_~ ):


BOOL SetPrinter()
{
HANDLE hPrinter;
if(!OpenPrinter(_T("HP Deskjet 1000 J110 series"),&hPrinter,NULL))
{
ClosePrinter( hPrinter );
return FALSE;
}

DWORD               cByteNeeded, /*nReturned,*/ cByteUsed;
PRINTER_INFO_2    *pPrinterInfo = NULL;

if (!GetPrinter(hPrinter, 2, NULL, 0, &cByteNeeded))
{
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
ClosePrinter( hPrinter );
return FALSE;
}


pPrinterInfo = (PRINTER_INFO_2 *)malloc(cByteNeeded);
if (!(pPrinterInfo))  /* Failure to allocate memory. */ 
{
ClosePrinter( hPrinter );
return FALSE;
}

/* Get the printer information. */ 
if (!GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,cByteNeeded,&cByteUsed))
{  /* Failure to access the printer.  访问打印机错误*/ 
free(pPrinterInfo);
pPrinterInfo = NULL;
ClosePrinter( hPrinter );
return FALSE;
}

PRINTER_DEFAULTS *pDefault= NULL;
pDefault = new PRINTER_DEFAULTS;
if ( NULL == pDefault ) 
{
free(pPrinterInfo);