为什么两次取得打印机的分辨率不一样?!

running81 2004-11-09 04:03:53
我在一程序中需要列出连在我打印机上的所有打印机,并能根据需要选择其中的某一台(因在模拟阶段,所以我用了虚拟打印机--finefactory),这已实现,但是我需要自定义纸张的大小,现在问题是如果默认虚拟打印机的分辨率是300dpi,并在这个分辨率下正常打印,但我更换了另一台打印机,再选择finefactory这个虚拟打印机的话,分辨率就变为600dpi了,结果自然就不对了。然则我若重新运行程序就又恢复到300dpi了,很奇怪,打印机的分辨率会自动更改吗,该怎样让分辨率一直保持在300dpi?(我在Delphi6中用的getDeviceCaps()函数)

急盼求解,分不够再加,谢谢!
...全文
71 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
running81 2004-11-09
  • 打赏
  • 举报
回复
通过组合框选择打印机的程序片断如下:
procedure TForm1.ComboBox3Change(Sender: TObject);
var
Device: array[0..255] of Char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
s : array[0..255] of Char;
hDeviceMode: THandle;
begin
Printer.PrinterIndex := ComboBox3.ItemIndex;
Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
StrCopy (s, Device);
StrCat (s, ',');
StrCat (s, Driver);
StrCat (s, ',');
StrCat (s, Port);
WriteProfileString ('windows', 'device', s);
StrCopy (s, 'windows');
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));
form1.Refresh ;

end;
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-11-09 04:03
社区公告
暂无公告