我想创建一个自定义 SWT PrintDialog。然而,这似乎是不可能的。
在 SWT PrintDialog 中,可以单击“首选项”打开本机打印机驱动程序首选项对话框。是否可以在不使用 org.eclipse.swt.printing.PrintDialog 的情况下打开“本机打印机驱动程序首选项对话框”并读取驱动程序首选项(PrinterData)?
我想创建一个自定义 SWT PrintDialog。然而,这似乎是不可能的。
在 SWT PrintDialog 中,可以单击“首选项”打开本机打印机驱动程序首选项对话框。是否可以在不使用 org.eclipse.swt.printing.PrintDialog 的情况下打开“本机打印机驱动程序首选项对话框”并读取驱动程序首选项(PrinterData)?
PrintDialog
非常特定于平台。例如,Mac 版本没有首选项选项。该类包含许多与特定平台接口的未记录的低级代码。可以在您自己的类中使用低级代码,但这不受支持,您需要一些平台 API 的经验。
open
只是为了说明区别,这里是Windows上该方法的前几行:
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);
}