MFC中如何获得默认打印机名称

cumtxxl 2007-07-13 04:19:04
只需要获得默认的打印机名称,而不需要弹出打印对话框
...全文
740 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cumtxxl 2007-07-13
  • 打赏
  • 举报
回复
自己解决了
PRINTDLG printDlg;
CWinApp::GetPrinterDeviceDefaults(&printDlg);
CWinApp::SelectPrinter(printDlg.hDevNames,printDlg.hDevMode);
CWinApp::CreatePrinterDC(g_dcPrinterDC);
cumtxxl 2007-07-13
  • 打赏
  • 举报
回复
只需要获得默认的打印机名称(MFC中),谢谢
yasmong 2007-07-13
  • 打赏
  • 举报
回复
下面这段代码能列出当前的系统上的打印机
#include <winspool.h>


DWORD dwSize,dwPrinters;
::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinters);
BYTE *pBuffer=new BYTE[dwSize];
::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,NULL,pBuffer,&dwSize,&dwPrinters);

if(dwPrinters!=0)
{
PRINTER_INFO_5 *pPrnInfo=(PRINTER_INFO_5 *)pBuffer;
for(int i=0;i<dwPrinters,i++)
{
cout<<pPrnInfo->pPrinterName<<endl;
pPrnInfo++;//指针后移
}
}
delete []pBuffer;
真相重于对错 2007-07-13
  • 打赏
  • 举报
回复

声明
[DllImport( "winspool.drv" )]
public static extern int GetDefaultPrinter( System.IntPtr ptr , ref int size );
调用
int size = 0;
int n = GetDefaultPrinter( IntPtr.Zero , ref size );
System.IntPtr ptr = Marshal.AllocHGlobal( size );
n= GetDefaultPrinter( ptr , ref size );
String strprint = Marshal.PtrToStringAnsi( ptr , size );

我是从以前贴子复制的

这是c#的,mfc 直接调用api会更简单,

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧