2007 年 10 月 28 日 18 時 58 分

HelloSaver2


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


HelloSaver を修正して ISaver2 を実装させても良いのだが、
以前作った HelloSaver(HelloSaver.dll)はそのまま残しておき、
新たに ISaver2 を実装した HelloSaver2 を作る。

これを HelloSaver2.dll という名前でビルドすれば、
旧コードベースの HelloSaver.dll と、新しい HelloSaver2.dll を
混在させた状態でテストすることができるだろうし。

========== HelloSaver2.cs ==========

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Loafer.ScreenSaver.Plugins {

    public class HelloSaver : ISaver2 {

        public virtual string Name {
            get { return "Hello Screen Saver 2"; }
        }

        public virtual void Configure(IWin32Window owner) {
            MessageBox.Show(owner,
                    "設定できるオプションがありません。",
                    "HelloSaver2 設定",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        public virtual void Create(IWin32Window window,
                int width, int height) {
            this.window = window;
            this.width = width;
            this.height = height;
        }

        public virtual void Destroy() {
        }

        public virtual void Paint(Graphics g, Rectangle bounds) {

            // 背景を黒で塗りつぶす
            g.FillRectangle(Brushes.Black, bounds);

            // 中央寄せの書式を用意し
            StringFormat format = new StringFormat(StringFormat.GenericDefault);
            format.Alignment = StringAlignment.Center;
            format.LineAlignment = StringAlignment.Center;

            // 描画する
            g.DrawString("Hello World 2!", SystemFonts.MessageBoxFont,
                    Brushes.White, new Rectangle(0, 0, width, height), format);

        }

        protected IWin32Window window;
        protected int width;
        protected int height;

    }

}

========== end of HelloSaver2.cs ==========

HelloSaver.cs とほぼ同じだが、HelloSaver2 と分かるように、
何箇所かメッセージを変えていることと、
ISaver2 を実装して Name プロパティを持つことが違いだ。

では、これもアセンブリにビルドしておこう。

$ csc /w:4 /t:library /out:HelloSaver2.dll ^
        /r:System.dll /r:System.Drawing.dll ^
        /r:System.Windows.Forms.dll ^
        /r:Loafer.ScreenSaver.dll ^
        HelloSaver2.cs

これで、アセンブリ「HelloSaver2.dll」ができた。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.