> > > メッセンジャー

メッセンジャー

  • Posted by:
  • old_blog

プログラムのことを前から書こうと思ってたけど、Blogでやるより、そういうページ作るべき だなんて考えが先行してた、でも実際ネタがない。

調べればどこかですぐ見つかるような事を書いても意味がないし、調べても見つからないようなモノはあまり作ってない。

でも、なんか作り出したので書いていこう。

(C++のWindowプログラムで作りたいソフト開発出来る人対象。そんな人は現状で読んでいない。)



メッセンジャーというソフトがある。

MSNやらYAHOOやらあるけど、あの通知のシステムは結構便利だと思う。

タスクバーに常駐して、通信があればメッセージを表示する。

いずれ、今つくってるネットワークが関わるゲームに、ユーザーのオン・オフだけでも見れる機能をつけたいと思っていたけれど、それの片鱗に触る機械があったので、忘れないうちに書いていこう。

タスクバーに常駐するなんてのは、どこにでも解説されてることなので割愛するとして、メッセージはどうだろう。

タスクバーの各位置から、にゅにゅにゅっと出てくるアレは何で作るべきなのか。

結論から言うと、自分はアレをウィンドウとして作った。

ただウィンドウを作るだけだと、周りの線があったりして邪魔。

ウィンドウを作る時に指定するパラメータをちょちょっといじれは、真っ白で四角いウィンドウが作れる。

そのパラメータが『WS_POPUP』だ。

MSDNの記載では「ポップアップ ウィンドウを作成します。WS_CHILD スタイルと一緒に使うことはできません。」とある。

このポップアップウィンドウってのは、ユーザーに情報をッパっと表示するためのウィンドウで、枠もタイトルバーも×ボタンも無い。

このパラメータを、CreateWindowやCreateWindowEXのスタイルとして指定してやれば、まっしろで四角いウィンドウを表示できる。

どんなウィンドウを表示すればいいのかわかった。ニュニュって出るのもサイズを変更すればいいわけだから、SetWindowPosか何かを使えばいい。

じゃぁ、コレで完成かといえば、重要な作業が残っている。

表示する場所の指定だ。

一般的な人のPCならタスクバーは下にあるけど、みんながみんな下に設定しているわけじゃない。

特にマカー出身だと上にタスクバーを置く人だって居るし、横にだって出せる。

それに、タスクバーはXPとクラシックでは厚みが違うし、2段や3段にしてる人もいる。

何がわかれば、ちゃんとした位置に表示ができるのか?

答えはタスクバーの位置とサイズだ。

それを得るためにはSHAppBarMessage関数を使う。

これにABM_GETTASKBARPOSというタスクバーのポジションを得るためのオフセットと、入手したポジションを記憶するためのAPPBARDATA構造体のポインタをわたす。

すると、APPBARDATA構造体の中にあるRECT構造体に位置がセットされる。

タスクバーの各座標がそのまま構造体の要素になる。

そして重要なのが、タスクバーのサイズは2ドットはみ出ているということ。

見えない部分に2ドットはみ出ているので、例えば

top=924,bottom=1024,left=-2,right=1026 ってな感じ。

この特性を使えば、topが0であればタスクバーが上にあるという単純計算で位置が算出できる。

その関係は以下の通り。

・leftが0よりも少なければ、左右がはみでているので上下のどちらか。

  ・topが0ならば上、そうでなければ下。

・leftが0未満でなければ、左右。

  ・leftが0なら左、そうでなければ右。

方法はこれ以外にもあるので、決定的な関連情報じゃないけど、まぁ十分判定できるのでこれを使う。

上に書いてきたことを使えば、ニュニュっと出てくるWindowが作れる。

気をつけないといけないのは、生成したWindowがメッセージの表示を終えて見えなくなったとき、プログラムからウィンドウを削除してやらねばならない。

タイトルバーについている×ボタンが無いのでユーザーが閉じる作業ができない。

もし、×ボタンをつけたけば、CreateWindowのスタイルを0にすれば、タイトルバーが出るので使うことも出来る(はず。)

あとは、タスクバーのアプリケーションの表示にウィンドウがでないようにすることくらいか。

その辺は、ツールバー化するスタイル使うとか、非表示のウィンドウの子にするとか方法はあるようだけど、まだ試して無いので後日。



しかし、やっぱりBlogだと自由度に限界があるな。

結局、HTMLに書き直すことになりそう。

専用ページを作ったらソースをアップするつもり。

Comments:0

コメントする

Trackbacks:0

  • TrackBack URL for this entry
  • http://txt.tyo.ro/mt/mt-tb.cgi/990
  • Listed below are links to weblogs that reference
  • メッセンジャー from tyoro.txt

Home > BLOG運営 > old_blog > メッセンジャー

Search

Return to page top