Frame にアイコンを表示するのには Graphics.UI.WXCore.Image の topLevelWindowSetIconFromFile を使います。
module Main where {- Graphics.UI.WX ライブラリはWXCoreよりは高級というかレイヤが上位。-} import Graphics.UI.WX (start) import Graphics.UI.WX.Frame (frame) import Graphics.UI.WX.Events (command, on) import Graphics.UI.WX.Layout (layout, widget) import Graphics.UI.WX.Types (sz) import Graphics.UI.WX.Classes (Textual(text), close) import Graphics.UI.WX.Attributes (Prop((:=)), set) import Graphics.UI.WX.Controls (button) {- Graphics.UI.WXCore ライブラリはたぶん、wxWidgetsを呼んでいるだけ。-} import Graphics.UI.WXCore.Image (topLevelWindowSetIconFromFile) import Graphics.UI.WXCore.Layout (minsize) main :: IO () main = start gui gui :: IO () gui = do form <- frame [text := "Icon Test"] topLevelWindowSetIconFromFile form "./sample.ico" quit <- button form [text := "Quit", on command := close form] set form [layout := minsize (sz 320 240) $ widget quit] return()
ライブラリのインポートはGraphics.UI.WXとGraphics.UI.WXCoreの2行で良いんですけれども、ライブラリを把握したいので調べて記述しました。
import Graphics.UI.WX import Graphics.UI.WXCore
Haskell は難しい高度な記事を書く人が多いですけれども、Windows でも Linux でも Mac でも動くVB より楽しいツールとして使えればうれしいです。