メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.420) ミニクロック  2004/02/02


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第420回 ミニクロック
 発行    2004年2月2日(月曜日)
 発行数   約3200

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンはまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・このメールマガジンは、横60文字で作成しています。
 また、インデントはすべて半角スペース4つで構成しています。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、まぐまぐさんのホームページでお願いします。
・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。
・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した
 内容になっています。最新の技術があれば、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 先日、ファントムブレイブというゲームを買いました。

 私は基本的にこの手のゲームはやらないのですが、

★メルヘンに心変わりしたい気分だったのです。

 ストーリーは平凡で、どーでも良い感じですが、シミュレー
ションゲームとしては少しがんばりたい気分になります。

/*========================================================*/

 前回のトヨタのお話で、間違いのご指摘をいただきました。

 私の掲示板にいただきまして、連絡先がないので、勝手に転載
します。

--------------------------------------------------------
TIME : 2004年01月30日 (金) 05時33分
NAME : メルマガ読者
EMAIL: 
TITLE: 419号

この号は事実誤認が多すぎません?
プログラムから離れたこと書いてるだけじゃなく、大間違いまで
書いちゃダメでしょ。

トヨタグループの会社はトヨタ自動車の子会社じゃないですよ?
豊田自動織機はトヨタの親会社でしょ。
他の会社だって資本は入ってたって子会社じゃないはず。

--------------------------------------------------------

 プログラムから離れすぎていました。はい、反省します。

 少し広告に踊らされてしまった感じです。はい、反省します。

 大間違いまで書いちゃ駄目ですよね。はい、反省します。

 キャベツが100万個だったら1人1日1個計算になります
から、いくらなんでも、多すぎますよね?

 1万個ぐらいが妥当、え、そういうことではない?

あゆしゃのお返事
--------------------------------------------------------
TIME : 2004年01月31日 (土) 20時42分
NAME : あゆしゃ
EMAIL: ayusya@flamenco.plala.or.jp
URL  : http://ayusya.hp.infoseek.co.jp/
TITLE: Re[147]: 419号

 ご忠告感謝いたします。こういうご指摘はありがたく思います。

・豊田自動織機について
 →トヨタ自動車の子会社です。昔は知りませんが。

・子会社の意味について
 資本が入っていれば子会社です。
 厳格に言えば過半数以上ですが、まぁ、あいまいに。。

 では。

--------------------------------------------------------

 私にしてはかなり、内容に気を使っていたということです。

 親会社子会社は資本の問題です。

 有名なのが、セガが親会社の資本を買って子会社にした、
というニュースが昔ありました・・・様な気がする・・・あれ?

 まぁ、親子が反転するのは、一般的なことです。
 資本主義は怖いということですね。

 しかし、計算を間違えたのは痛恨のミスですが・・・

{magclick}
/*========================================================*/
 今回のお題  << ミニクロック >>
/*========================================================*/

 先日、お仕事でExcelを使っていたとき、

 とても表が大きいので、少しでも見やすくしようと、

 Excelを全画面表示にして、タスクバー(スタートボタンの
ある棒)もたたんで、

 画面いっぱいでお仕事していました。

 そのとき、あゆしゃにとんでもないことが起きたのです。

/*========================================================*/

 「と、時計が見えない・・・」

 タスクトレイの時計を非常に頼りにしているあゆしゃにとって、

 これはまさに、拷問でした。

 しかし、タスクバーを出すと、邪魔なんですね。

 タスクバーは狭いので、2行固定にして使っているのですが、

 だからよりいっそう邪魔なんですね。

 そこで、ふと、気がつきました。

 「常に手前に表示される、とてもちっちゃいウィンドウで、
  常駐タイプの、テキストのみの時計を作ろう」

/*========================================================*/
 おっと、鋼が売れたか、4回補充っと。SOMは便利だな
/*========================================================*/

 フリーウェアを探せばあるでしょうが、やっぱり、自分で作り
ましょうね?

 これに必要なのは、以下の機能でしょうか。

・ダイアログアプリケーションを作成する

・常に手前に表示する

・タスクバーからアイコンを消す

・タスクトレイにアイコンを表示する

・タスクトレイのアイコンがクリックされたことを知る

・タイトルバーを非表示にする

・タイトルバーを非表示にするとウィンドウが移動できないので
 邪魔になるから、マウスでドラッグして移動できるようにする

・時間の情報を取得する

・タイマーで1行ごとに時間の表示を更新する

・初期位置を画面中央最上位にする

 まぁ、どうでもいいものもありますが。

/*========================================================*/

・ダイアログアプリケーションを作成する
→作りましょう、作りましょう、何何々が、できるかな?

・常に手前に表示する
→ウィンドウ移動時、SetWindowPosで第1引き数に
 &wndTopMostを指定します。&が必要です。

・タスクバーからアイコンを消す
→OnInitDialogにてスタイル変更
 ModifyStyleEx( WS_EX_APPWINDOW, 0 );

・タスクトレイにアイコンを表示する
→これは難関です。

・タスクトレイのアイコンがクリックされたことを知る
→これは難関です。

・タイトルバーを非表示にする
→ダイアログのオプションの、スタイルで変更しましょう。

・タイトルバーを非表示にするとウィンドウが移動できないので
 邪魔になるから、マウスでドラッグして移動できるようにする
→1.OnLButtonDownでマウスキャプチャーを開始
 2.OnMouseMoveでキャプチャー中ならばドラッグ分だけ
   ウィンドウを移動する(ただし8ドット以上)
 3.OnLButtonUpでキャプチャーを終了する
→ちょっとマウスが触れただけで動いてしまっては、不届き千万
 ですので、8ドット以上動いたときのみにします。

 8ピクセル、という表現のほうが正しいのでしょうか。どうでも
いいのでしょうか。

・時間の情報を取得する
→CTime t( time( NULL ) );

・タイマーで1行ごとに時間の表示を更新する
→SetTimer( 1, 1000, NULL );

・初期位置を画面中央最上位にする
→画面サイズを取得するには、これが簡単?
 CRect rc;
 CWnd::GetDesktopWindow()->GetWindowRect( &rc );
 メトリクスがどーのこーのという標準関数は、覚えるのが面倒
です。

/*========================================================*/

 タスクトレイの関連については、タスクトレイという言葉でイン
ターネットを検索すると、いろいろと見つけることができます。

 キーとなるのは、NOTIFYICONDATA構造体です。
 この構造体の名称で検索しても、いろいろ見つけることが
できます。

 アイコンの出し入れについては、関数を作るのが一般的のよう
ですね。

/*========================================================*/

 というわけで、完成品を見てください。

実行イメージ
http://ayusya.hp.infoseek.co.jp/Image/MiniClock.jpg

実行ファイル
http://ayusya.hp.infoseek.co.jp/Download/MiniClockExe.zip

VC6.0プロジェクト
http://ayusya.hp.infoseek.co.jp/Download/MiniClock.zip

 アイコンの表示には、SetTrayIcon関数で行っています。

 どこかのホームページのパクリですが。

 クリックの通知は、WindowProc関数で行っています。

 どこかのホームページのパクリに少し修正したものですが。

 ポップアップメニューについては、ツール集で公開している
CPopupMenuMasterクラスで楽をしました。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 私はもう、Excelを全画面表示していなくても、いつもこれを
使っています。

 秒が表示されるので、非常に便利です。

 お昼のベルと同時に売店に走るとか。 <学生かあんたは

 ドラッグは次回にしましょう。長くなってしまいました。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は2月4日(水曜日)に、第421回を送ります。
 お題は「ミニクロック2」

 ドラッグできるようにしましょう。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
鋼を11回、チタンを丸いで16回 なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

まぐまぐアイディー
0000020674

まぐまぐバックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

登録と解除
http://www.mag2.com/m/0000020674.htm

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

めーらっくす <<過去ログがタイトル別になっています>>
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。