|
/*========================================================*/ <<<あゆしゃの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 |