<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jan 14, 2009, at 7:19 PM, Alexander Repenning wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I can't say that I am huge fan of C++</div><div><br></div><div>Based on all the input so far I would conclude on the Mac side to continue with LUI by building a shallow Cocoa wrapper on Macs (e.g., using generic names: details in diagram below) and building the same class hierarchy  on Win and implementing it on top of the win32 api.  I am not sure that much is to be gained by adding a layer between win api and Lisp. C++ as intermediate layer could be ugly and other tools that based on scripting languages (e.g, Ruby) could be slow. </div><div><br></div><div>Once we have a good FFI for CCL win would it really be that hard to access the win api directly? </div></div></blockquote><br></div><div>Alex and others on the list,</div><div><br></div><div>Have you seen Cocotron (@ <a href="http://www.cocotron.org/">http://www.cocotron.org/</a> )? It is an open source project to provide a MIT-licensed implementation of the Cocoa APIs on Windows (and they are considering supporting other platforms in the future). Perhaps it would be less effort in the long run to rely on a project like this than implementing a new cross-platform API.</div><div><br></div><div>Qt theoretically does this too but like others I am not a huge fan of C++. If your solution is all C or C++ then Qt is probably the easiest way to get a cross-platform GUI. But it can't be bound to very easily.</div><div><br></div><div>Another option might be to use Cocoa on OS X and GTK+ on Linux and Windows. GTK+ applications look very good on Windows, and the API is much cleaner than the native Win32 APIs.</div><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font class="Apple-style-span" face="'Courier New'">--</font></div><div><font class="Apple-style-span" face="'Courier New'">Brian Mastenbrook</font></div><div><font class="Apple-style-span" face="'Courier New'"><a href="mailto:brian@mastenbrook.net">brian@mastenbrook.net</a></font></div><div><font class="Apple-style-span" face="'Courier New'"><a href="http://brian.mastenbrook.net/">http://brian.mastenbrook.net/</a></font></div></div></span></div></span></div></span></div></span></div></span> </div><br></body></html>