2012-06-22 16 views
5
main :: IO() 
main = runCurses $ do 
    setEcho False 
    w <- defaultWindow 
    canvas <- newWindow 19 19 0 0 
    panel <- newPanel canvas 
    updateWindow canvas $ do 
    drawString "Hello world!" 
    render 
    waitFor w (\ev -> ev == EventCharacter 'q' || ev == EventCharacter 'Q') 

waitFor :: Window -> (Event -> Bool) -> Curses() 
waitFor w p = loop where 
    loop = do 
     ev <- getEvent w Nothing 
     case ev of 
      Nothing -> loop 
      Just ev' -> unless (p ev') loop 

こんにちは。これはncursesパッケージの少し修正された例です。 問題は何も表示されないということです。私が覚えているように、C APIでは、各ウィンドウを個別にリフレッシュする必要があります。しかし、ハスケルはrenderしか提供していません。どこが間違っていますか?私は動かせるウィジェットをいくつか持っていたい。ハスケルncurses

答えて

4

愚かな質問を申し訳ありません。 updatePanelsに電話するだけです。

+0

その機能はどこから来たのですか?私はUI.NCursesライブラリとGHCiの ':i'オプションでそれについて一言も知りません。 – Sventimir

+0

OPはUI.NCurses.Panelの' refreshPanels'を意味すると思います。 http://hackage.haskell.org/package/ncurses-0.1.0.2/docs/UI-NCurses-Panel.html – joom

+0

@joom答えが間違っていると思われる場合は、何らかの理由で入力ミスなどがあります) - これをdownvoteし、正しいものを投稿してください。 – vaxquis