SWT PrintDialog驱动程序首选项/自定义printdialog

时间:2014-03-27 00:35:58

标签: swt driver preferences printdialog

我想创建一个自定义SWT PrintDialog。但似乎不可能。

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

1 个答案:

答案 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);
        }