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);
}
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
PrintDialog 전체가 특정 플랫폼이며 다른 버전의 Mac 버전은 ** 완전히 ** 다르다. –