[Haskell-cafe] Doing Windows Programming
Brian McQueen
mcqueenorama at gmail.com
Thu Sep 15 13:06:21 EDT 2005
Thanks for this! That is helpful and eye-opening. I do want to use
ghc, though I don't really have a good reason for that choice. It
seems that if I were to go with hugs, it would be easier going.
On 9/15/05, Juan Carlos Arevalo Baeza <jcab.lists at jcabs-rumblings.com> wrote:
> GHC 6.4's support for Win32 is definitely broken. However, I've been
> experimenting with implementing a wrapper using FFI, and that has proven to
> be reasonably easy. The only gotchas:
>
> 1- You have to run ghc --make with the extra -lGdi32, -lUser32, etc...
> switches.
> 2- You can't use something like ghc -e:Main.main Main.hs to run Win32
> programs. As soon as you are passing function pointers around (WindowProcs
> and the like) it just won't work because of the stub.c files.
> 3- Safely managing function pointers can be tricky, because FuncPtr has to
> be explicitly deallocated or else it will leak.
> 4- If you don't want to have the console window, you have to add the
> -optl-mwindows switch to the command line (hopefully, it'll be documented at
> some point) and refrain from ever writing anything out to stdout or stderr.
> If you want to be able to write stuff out (so that you can see it by
> ommitting the switch) then do something like this:
>
> ---8<---------------------------
> initGUI = catch (putStr " \b" >> hFlush stdout) $ \_ -> do
> fd <- open "nul" 2 0
> dup2 fd 0
> dup2 fd 1
> dup2 fd 2
> return ()
>
> open fname oflag pmode = withCString fname $ \c_fname -> c_open c_fname
> oflag pmode
>
> foreign import ccall unsafe "HsBase.h __hscore_open" c_open :: CString ->
> CInt -> CInt -> IO CInt
> foreign import ccall unsafe "HsBase.h dup2" dup2 :: CInt -> CInt
> -> IO CInt
> ---8<---------------------------
>
> and then call initGUI from your main.
>
> All very platform/compiler dependent, of course, so use with good
> judgement.
>
> JCAB
>
>
> Neil Mitchell wrote:
> Hi,
>
> The CVS version of Hugs for Windows has a module
> System.Win32.Registry, along with quite a few other windows modules.
>
> I'm not sure if the last stable releases have these features in or not.
>
> Thanks
>
> Neil
>
> On 9/11/05, Brian McQueen <mcqueenorama at gmail.com> wrote:
>
>
> How can I use Haskell to do general Windows programming, like you
> would be able to do if you were using one of those Windows IDEs:
>
> *moving data between windows apps
> *gaining access to windows registry
> *in general, access to the available Windows APIs
>
> I'm sure folks must be writing Windows apps in Haskell somewhere. How
> do I get started?
>
> Brian McQueen
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
>
More information about the Haskell-Cafe
mailing list