過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/09/16
Windows で Toast っぽいの作った

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

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。