最近の記事
- 9/1 - 将棋始めました
- 5/16 - サーバー引っ越し
- 4/24 - 優先順位
- 3/17 - vbNullString と 空文字列 ""
- 3/15 - InputBox 関数の戻り値
- 3/13 - 紙と Excel と VBA
- 3/9 - 未だに Visual Basic 6
- 11/14 - ぼて閉鎖
- 11/9 - 関数オブジェクトの呼び出し
- 9/7 - メソッドとしての関数オブジェクト
Entering Passive Mode
今年も梅仕事の季節がやってきた。
今年は恵まれ、10kg の梅が手に入った。
去年の倍近いのだが、どう使うかねぇ。
まず、去年好評だった梅シロップは 3kg に増量するとして、
甘みが要らん時のために、梅サワーも作ることにするか。
今日はネタをひとつ。以下のプログラムを実行すると、
標準出力には何が出力されるだろうか。
public class Test {
static public void main(String[] args) {
System.out.println((long)(80000 * 90000));
}
}
これを即答できた人は、今日の日記に用はない。
ちょいとばたばたしてたけど、
あまり間をあけるとダレそうなので、
ぼちぼち書いていこうと思います。
ペースは上がらないだろうがね。
酒席に参加する文化が廃れてきているのは寂しいが、
残ったのは、やはり勝手知ったる仲間たち。
いやぁ。久々に楽しい忘年会やった。
次回はもっと人が増えることを願いつつ、
皆の来年の幸福を祈り、よいお年を!
以上。ほろ酔いの kes でした。
「設定」ボタンも Application::ConfigureProc で処理されるので、
IDC_CONFIGURE 向けの WM_COMMAND メッセージを処理すればよい。
プラグイン用の設定画面の呼び出しも、一覧表示と同じように作る。
ConfigureProc メソッドをマネージにしないように、
ConfigurePlugin という名前のヘルパメソッドに分離する。
ISaver 実装型一覧に表示できるようになったので、
次は「設定」ボタンで設定画面を呼び出せるようにしたい。
設定画面を呼び出すには、設定ボタンを押した際に、
コンボボックスに選択されている名前に対応した
ISaver 実装型のインスタンスを作れば良いのだ。
コンボボックスに CB_GETCURSEL メッセージを送れば、
現在選択されている項目のインデックス(数値)が得られるので、
その数値を元に Manager クラスのインデクサから Type を得れば良い。
Manager ができたので、これを使ってダイアログボックスに一覧表示するのだが、
プラグインには ISaver2 を実装していないものも存在する。
ISaver2 を実装している場合は Name プロパティを使えば良いが、
ISaver しか実装していない場合は、クラスの簡易名を使うことにしよう。
簡易名とは、名前空間を含まないクラスの名前部分のみを示す。
例えば、HelloSaver は ISaver2 を実装していないため、
クラス名である「HelloSaver」を名前として表示することになる。
設定ダイアログは Application::ConfigureProc で処理されているので、
WM_INITDIALOG メッセージを拾ってコンボボックスに設定する。
プラグインのロードはManager クラスのコンストラクタで行う。
手順としては、plugin フォルダの内部からアセンブリを探し、順にロードする。
そして、ロードしたアセンブリの中から、ISaver 実装型を検索するという流れだ。
プラグインとなるアセンブリはできたが、
それをホストが見つけて読み込むためには、
プラグインの登録方法をルール化しなければならない。
今回は、ホストのあるフォルダに「plugins」サブフォルダを作成し、
その中にアセンブリを放り込むというルールにしよう。
早速、HelloSaver.dll と HelloSaver2.dll を放り込む。
+ scrhost.scr
+ plugins\
+ HelloSaver.dll
+ HelloSaver2.dll