Android の Toast.makeText() が中々気に入っていたので、Windows 用に
モジュールを作ってみた。
ウィンドウサイズは入力文字数に応じて動的に変化。
テキストカラー、背景色、アルファ値それぞれ設定可能。
コマンドプロンプトからも使えるように Looper を実装してみた。
ひとまずツールヘルプメッセージの変わりや、うざくないメッセージを
通知するのに利用するなど、幅が広がりそうです。
コマンドプロンプト用のツールを公開するかもしれません。
利用用途としては「遅延実行コマンド」「cron」などバックグラウンドで
実行するタスク(bat) があった場合、本コマンドをバッチに書いておけば
うざくないメッセージとして、ユーザーに通知する事ができます。
・ダイアログだと OK を押さのがだるい。音も気に入らない。
・いちいち、ログを見るほどではない。
などの時、通知するのに最適です。メッセンジャーやスカイプだと、右下に
通知メッセージが一定時間表示されますが、それに近い感覚です。
使い方としては、本コマンドのみではメッセージが終わるまでプロンプトが
停止してしまうので btsk コマンド等のバックグラウンド実行コマンドと
併用する事でチカラを発揮するかと思います。
プログラムコードはこんな感じ。
main() で 非同期 Looper を作成して、Run() 関数を Delegate に保持した後、
sendMessage() を呼んでます。
Run() では Toast を作成して表示。
3秒後に再度呼び出されるように、戻り値で依頼もしています。
makeToast()->show() をやると「新規ウィンドウ」にメッセージ表示を行う
ので Android の toast と同じ仕様にする場合は、1つのインスタンスに
make() で push を繰り返す事で同じ扱いになります。
Java のような Handler の使い勝手を得たかったのだけど、マクロを駆使しても、
以下のような形が限界でした。
C++ ではローカルクラスを宣言しても、その上の const 定数や、クラス変数を
参照できないので、ほとんど意味無い。
ちなみに Android Java だと以下のような感じ。
private Handler HandlerTask = new Handler(){
public void handleMessage( Message message ){
}
}
HandlerTask.sendMessage( new Message() );
そろそろ C+++ なんてのが出てこないだろうか。 C++ を参考にした Java から
構文を拡張という形で逆輸入できると素晴らしいのだが。
基本構文は C++ のままで Java のような定義も出来れば最高。
0 コメント:
コメントを投稿