C++ Win32 C++;打印机\u信息\u 2属性

C++ Win32 C++;打印机\u信息\u 2属性,c++,printing,C++,Printing,我正在尝试访问结构的友好名称属性。但是我不知道如何在C++中做。 下面的代码以十六进制返回名称 int _tmain(int argc, _TCHAR* argv[]) { DWORD dwNeeded = 0, dwPrintersR = 0, Level = 2; PRINTER_INFO_2* prninfo=NULL; int retValue = 0; //Find required buffer size EnumPrinters( PRIN

我正在尝试访问结构的友好名称属性。但是我不知道如何在C++中做。 下面的代码以十六进制返回名称

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwNeeded = 0, dwPrintersR = 0, Level = 2;
    PRINTER_INFO_2* prninfo=NULL;
    int retValue = 0;

    //Find required buffer size
    EnumPrinters( PRINTER_ENUM_NAME, NULL, Level, NULL, 0, &dwNeeded, &dwPrintersR );


    prninfo = (PRINTER_INFO_2*) GlobalAlloc(GPTR,dwNeeded);
    EnumPrinters( PRINTER_ENUM_NAME, NULL, Level, (LPBYTE) prninfo, dwNeeded, &dwNeeded, &dwPrintersR );
    cout << "# of printers:" << dwPrintersR << "\n";
    for(int i = 0; i<dwPrintersR; i++){
        cout << "Printer Name: " << prninfo[i].pPrinterName << "\n";
    }
    _getch();
    return 0;
}
int-tmain(int-argc,_-TCHAR*argv[]
{
DWORD DWR=0,dwPrintersR=0,级别=2;
打印机信息2*prninfo=NULL;
int-retValue=0;
//查找所需的缓冲区大小
EnumPrinters(打印机名称、NULL、级别、NULL、0、&dwNeeded和&dwPrintersR);
prninfo=(打印机信息2*)全局ALLOC(需要GPTR、DWTR);
EnumPrinters(打印机名称、空值、级别、(LPBYTE)prninfo、DWRequired、DWRequired和dwPrintersR);

cout代码正在工作,除了它实际尝试将名称打印到控制台窗口之外

看起来您是为Unicode编译的,所以打印机名称是一个宽字符串(
whcar\t*
)。std::ostream::operator没有重载,或者只需替换它即可

库特
MessageBox(NULL, prninfo[i].pPrinterName, TEXT("Printer Name"), MB_OK);