2014-03-27 8 views
0

사용자 정의 SWT PrintDialog를 만들고 싶습니다. 그러나 그것은 불가능한 것처럼 보입니다.SWT PrintDialog 드라이버 환경 설정/printdialog 사용자 정의

SWT PrintDialog에서 "기본 설정"을 클릭하여 기본 프린터 드라이버 환경 설정 대화 상자를 열 수 있습니다. org.eclipse.swt.printing.PrintDialog를 사용하지 않고 "네이티브 프린터 드라이버 환경 설정 대화 상자"를 열고 드라이버 환경 설정 (PrinterData)을 읽을 수 있습니까?

답변

1

PrintDialog은 매우 구체적인 플랫폼입니다. 예를 들어 Mac 버전에는 기본 설정 옵션이 없습니다. 이 클래스에는 문서화되지 않은 많은 수준의 코드가 특정 플랫폼에 인터페이싱되어 있습니다. 자신의 클래스에서 저수준 코드를 사용할 수는 있지만 지원되지 않으며 플랫폼 API에 대한 경험이 필요합니다.

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; 

와 맥 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 :

그냥 차이를 설명하기 위해, 여기에 처음 몇 Windows에서 open 방법의 라인입니다

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); 
     } 
+0

http://www.docjar.com/html/ap OS/390/Eclipse/Swt/printing/PrintDialog.java.html 394-408 행은 실제 드라이버 설정에서 검색된 OS.DM_ORIENTATION (가로, 세로) 그러나 이것은 수동으로 설정할 수 있습니다. 내가 올바르게 이해하면 "PRINTDLG pd = new PRINTDLG();" 265 행은 PrintDialog의 특정 플랫폼 부분입니다. 그렇다면 각 플랫폼에서 코드를 교차 플랫폼으로 유지하기 위해 무엇을 찾아야 할지를 알아야합니다. 답변 해 주셔서 감사합니다. 나는 다른 것을 시도 할 것이다 :) – user3417686

+0

PrintDialog 전체가 특정 플랫폼이며 다른 버전의 Mac 버전은 ** 완전히 ** 다르다. –