我想创建一个自定义SWT PrintDialog。但似乎不可能。
在SWT PrintDialog中,可以单击“首选项”以打开本机打印机驱动程序首选项对话框。是否可以在不使用org.eclipse.swt.printing.PrintDialog的情况下打开“本机打印机驱动程序首选项对话框”并读取驱动程序首选项(PrinterData)?
答案 0 :(得分:1)
PrintDialog
非常特定于平台。例如,Mac版本没有“首选项”选项。该类包含许多与特定平台接口的无证低级代码。可以在您自己的类中使用低级代码,但这不受支持,您需要一些平台API的经验。
为了说明不同之处,以下是Windows上open
方法的前几行:
public PrinterData open() {
/* Get the owner HWND for the dialog */
Control parent = getParent();
int style = getStyle();
long /*int*/ hwndOwner = parent.handle;
long /*int*/ hwndParent = parent.handle;
和Mac OS X代码:
public PrinterData open() {
PrinterData data = null;
NSPrintPanel panel = NSPrintPanel.printPanel();
NSPrintInfo printInfo = new NSPrintInfo(NSPrintInfo.sharedPrintInfo().copy());
if (printerData.duplex != SWT.DEFAULT) {
long /*int*/ settings = printInfo.PMPrintSettings();
和Linux:
public PrinterData open() {
if (OS.GTK_VERSION < OS.VERSION (2, 10, 0)) {
return Printer.getDefaultPrinterData();
} else {
byte [] titleBytes = Converter.wcsToMbcs (null, getText(), true);
long /*int*/ topHandle = getParent().handle;
while (topHandle != 0 && !OS.GTK_IS_WINDOW(topHandle)) {
topHandle = OS.gtk_widget_get_parent(topHandle);
}