0

我想创建一个自定义 SWT PrintDialog。然而,这似乎是不可能的。

在 SWT PrintDialog 中,可以单击“首选项”打开本机打印机驱动程序首选项对话框。是否可以在不使用 org.eclipse.swt.printing.PrintDialog 的情况下打开“本机打印机驱动程序首选项对话框”并读取驱动程序首选项(PrinterData)?

4

1 回答 1

1

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);
        }
于 2014-03-27T08:23:46.590 回答