Entering Passive Mode

< 1 2 3 4 5 6 7... >

梅干しとか梅シロップとか

熟したので 漬けた

2 日置くと結構熟しててびっくり。

梅 10kg

青梅 漬けた

今年も梅仕事の季節がやってきた。

今年は恵まれ、10kg の梅が手に入った。
去年の倍近いのだが、どう使うかねぇ。

まず、去年好評だった梅シロップは 3kg に増量するとして、
甘みが要らん時のために、梅サワーも作ることにするか。

Java とオーバーフロー

今日はネタをひとつ。以下のプログラムを実行すると、
標準出力には何が出力されるだろうか。

public class Test {
  static public void main(String[] args) {
    System.out.println((long)(80000 * 90000));
  }
}

これを即答できた人は、今日の日記に用はない。

再開

ちょいとばたばたしてたけど、
あまり間をあけるとダレそうなので、
ぼちぼち書いていこうと思います。

ペースは上がらないだろうがね。

忘年会

酒席に参加する文化が廃れてきているのは寂しいが、
残ったのは、やはり勝手知ったる仲間たち。
いやぁ。久々に楽しい忘年会やった。
次回はもっと人が増えることを願いつつ、
皆の来年の幸福を祈り、よいお年を!

以上。ほろ酔いの kes でした。

プラグイン固有の設定画面の表示

「設定」ボタンも Application::ConfigureProc で処理されるので、
IDC_CONFIGURE 向けの WM_COMMAND メッセージを処理すればよい。

プラグイン用の設定画面の呼び出しも、一覧表示と同じように作る。
ConfigureProc メソッドをマネージにしないように、
ConfigurePlugin という名前のヘルパメソッドに分離する。

msclr::gcroot 構造体テンプレート

ISaver 実装型一覧に表示できるようになったので、
次は「設定」ボタンで設定画面を呼び出せるようにしたい。

設定画面を呼び出すには、設定ボタンを押した際に、
コンボボックスに選択されている名前に対応した
ISaver 実装型のインスタンスを作れば良いのだ。

コンボボックスに CB_GETCURSEL メッセージを送れば、
現在選択されている項目のインデックス(数値)が得られるので、
その数値を元に Manager クラスのインデクサから Type を得れば良い。

タイトルの一覧表示

Manager ができたので、これを使ってダイアログボックスに一覧表示するのだが、
プラグインには ISaver2 を実装していないものも存在する。

ISaver2 を実装している場合は Name プロパティを使えば良いが、
ISaver しか実装していない場合は、クラスの簡易名を使うことにしよう。
簡易名とは、名前空間を含まないクラスの名前部分のみを示す。

例えば、HelloSaver は ISaver2 を実装していないため、
クラス名である「HelloSaver」を名前として表示することになる。

設定ダイアログは Application::ConfigureProc で処理されているので、
WM_INITDIALOG メッセージを拾ってコンボボックスに設定する。

プラグインのロードと列挙

プラグインのロードはManager クラスのコンストラクタで行う。

手順としては、plugin フォルダの内部からアセンブリを探し、順にロードする。
そして、ロードしたアセンブリの中から、ISaver 実装型を検索するという流れだ。

Manager マネージクラス

プラグインとなるアセンブリはできたが、
それをホストが見つけて読み込むためには、
プラグインの登録方法をルール化しなければならない。

今回は、ホストのあるフォルダに「plugins」サブフォルダを作成し、
その中にアセンブリを放り込むというルールにしよう。

早速、HelloSaver.dll と HelloSaver2.dll を放り込む。

+ scrhost.scr
+ plugins\
+ HelloSaver.dll
+ HelloSaver2.dll

< 1 2 3 4 5 6 7... >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS