下面是一个启动 wxHaskell 笔记本的 Haskell 程序。
它可以工作,除了我无法处理页面更改事件以获取新选择页面的索引。我得到了前一个(请参阅下面代码中的注释“问题”)。
在C wxNotebook 类参考文档(请参阅 getSelection 部分)以及 wxBookCtrlEvent 类参考文档的“详细说明”部分中 对此行为有警告,但我完全不明白如何使用它。
谁能告诉我一些笔记本的工作代码,当用户选择新页面时(通过单击其标题),可以获得新页面索引?
第二个问题:我不明白 0 旁边的论点是什么--???。
先感谢您!
module Main where
import Graphics.UI.WX
import Graphics.UI.WXCore
main :: IO ()
main =
start $
do
f <- frame []
nbk <- notebook f []
pages <- sequence [ do
p <- panel nbk []
return $ tab ("Page "++show i) (container p $ label ("Page " ++ show i))
| i <- [0..3]]
set f [layout := fill $ tabs nbk pages,clientSize := sz 300 100]
let h event = case event of
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED ->
do
i <- notebookGetSelection nbk -- PROBLEM: gives the OLD index
infoDialog f "Event otification" $ "Notebook selected page: " ++ show i
propagateEvent
windowOnEvent nbk
[wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED]
0 -- ???
h