2017-05-12 10 views
0

Ich versuche, das "Hallo Welt" Skript zur Verfügung gestellt von Clozure für die CCL-Cocoa-Brücke zu laufen:CCL Cocoa Bridge "Hallo Welt" funktioniert nicht?

https://trac.clozure.com/ccl/wiki/CocoaBridge

Laden Sie die Datei diese Formulare enthält, (Show-rot-Fenster) bewerten und du wirst ein rotes Fenster sehen.

red-window.ccl
(in-package "CL-USER") 

(require "COCOA") 

(defclass red-view (ns:ns-view) 
() 
    (:metaclass ns:+ns-object)) 

(objc:defmethod (#/drawRect: :void) ((self red-view) (rect :<NSR>ect)) 
    (#/set (#/redColor ns:ns-color)) 
    (#_NSRectFill (#/bounds self))) 

(defun show-red-window() 
    (ccl::with-autorelease-pool 
    (let* ((rect (ns:make-ns-rect 0 0 300 300)) 
     (w (make-instance 'ns:ns-window 
       :with-content-rect rect 
       :style-mask (logior #$NSTitledWindowMask 
          #$NSClosableWindowMask 
          #$NSMiniaturizableWindowMask) 
       :backing #$NSBackingStoreBuffered 
       :defer t))) 
    (#/setTitle: w #@"Red") 
    (#/setContentView: w (#/autorelease (make-instance 'red-view))) 
    (#/center w) 
    (#/orderFront: w nil) 
    (#/contentView w)))) 

Aber wenn ich ccl64 laufen und auf dem Terminal

(load "red-window.ccl") 
(show-red-window) 

bekomme ich nur diese Art der Ausgabe:

#<RED-VIEW <RedView: 0x4cd530> (#x4CD530)> 

und sonst nichts zu passieren scheint.

Fehle ich etwas? Ich bin neu in CL und Cocoa.

Antwort

1

Versuchen

(gui:execute-in-gui #'(lambda() (show-red-window))) 

Die Seite mit dem roten Fenster Beispiel wurde zuletzt vor 10 Jahren aktualisiert. One of the other examples von war last modified vor 13 Tagen, um gui:execute-in-gui einzuschließen.