Frame にアイコンを表示する。


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 より楽しいツールとして使えればうれしいです。