メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.483) ホールド時のタイマー処理  2004/08/04


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第483回 ホールド時のタイマー処理
 発行    2004年8月4日(水曜日)
 発行数   約2700

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンは、主にまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・横60文字で作成し、インデントは大抵半角スペース4つです。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、メルマガのホームページでお願いします。
・過去ログはバックナンバー(下欄参照)を活用して下さい。
・内容は私が感じたもので、最新の技術も、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。
・セキュリティ突破のため、暗号化された単語があります。

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

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

 先日、ここで述べていた戯言を、形にしました。

すばやさアルゴリズム(アルゴリズム集)
http://ayusya.hp.infoseek.co.jp/ProgramAlgorithm.html

 これと行動可能範囲計算アルゴリズムがあれば、
シミュレーションゲーム製作もばっちりですね。

 そーいえば、昔あった行動可能範囲計算アルゴリズム(長い)
のページは、どこにいってしまったのでしょうか?

 けしっちゃったかなぁ、もったいないなぁ。

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

 先日公開したミニクロックのダウンロード数報告です。

 7月13日公開、7月27日時点で、

★43件!

 ありがとうございます。

{magclick}
/*========================================================*/
 今回のお題  << ホールド時のタイマー処理 >>
/*========================================================*/

・ダブルクリック時に一瞬「移動中です」と表示されないように

 この難題に、前回は躓(つまづ)きました。

 OnLButtonDown の後、ボタンをホールドしていると、タイマー
イベントが停止してしまうのです。

 よって、100ミリ秒待つにしろ、200ミリ秒待つにしろ、
タイマー命令は使えません。

 どうしましょう?

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

 じつは、タイマーは動いています。

 が、OnTimer が実行されないだけなのです。

 実際、Pre〜 を見張っていると、ボタンホールド時でも
WM_TIMER は飛んできています。

 つまり、Pre の WM_TIMER を捕まえつつ、ボタンがホールドされ
ている場合(キャプチャーフラグがTRUEの場合)のみ、OnTimer の
真似事をしてしまえばいいのです。

 ・・・こんな簡単なはずのアプリケーションに Pre〜 を使う
破目(事態)になるとは、思ってもいませんでした。


BOOL CMiniClockDlg::PreTranslateMessage(MSG* pMsg) 
{
    // 左ボタンホールド時、無視されるので、
    // メッセージ更新処理をここに記述
    if( pMsg->message == WM_TIMER && m_bCapture ) {
        if( m_stMsg != "" ) {
            SetDlgItemText( IDC_STATUS, m_stMsg );
            m_stMsg = "";
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

 こんな感じで。
 メッセージ表示に変数を介しているのは、最低1秒以上、表示
させ続けるためです。

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

 というわけで、ベクターさんにアップデート実験です。

アップデート報告内容記入例
http://www.vector.co.jp/for_authors/upload/form_s_ver.txt

宛先
mailto:vector@vector.co.jp

報告内容


[作者名 および ライブラリ作者番号(PA??????)] ←必須
あゆしゃ PA039171

[新規ですか? バージョンアップ等の差し替えですか?]
2:差し替え

[差し替え/追加/変更の場合、元のライブラリ作品番号(PS??????)]
PS335096

[ソフト名称] ←必須
ミニクロック

[内容説明(1キロバイト程度)]
テキストのみのコンパクトな時計を表示します。
起動後はタスクトレイにアイコンを表示しますが、表示を消すこと
もできます。
ウィンドウは常に手前に表示されますが、コンパクトなので邪魔に
なりません。
マウスでドラッグすることにより、好きな場所に配置することがで
きます。
配置した場所は記憶し、再び表示したときに同じ場所に配置されま
す。
ダブルクリックにより表示されている時刻をクリップボードにコピ
ーできます。

[アーカイブファイルの名前] ←必須
MiniClock1040.zip

[バージョン]
1.0.4.0

[ファイルの所在(メールに添付 or ベクターFTPサイト or BBSなど
)]←必須 
メールに添付



 まだ2回目ですが、なれたものです。

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

 タイマーはメニューを開いても止まります、たしか。

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

 次回は8月6日(金曜日)に、第483回をお送りします。
 お題は「すばやさアルゴリズム」

 このアルゴリズムの説明をして、お盆休みに入りましょう。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
13時間26分、失敗だぁ <ファントム なんて大歓迎です。

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

発行者 あゆしゃ

ホームページ::あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

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

まぐまぐ::アイディー
0000020674

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

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

めーらっくす::アイディー
MM3E1AEE285AB4F

めーらっくす::登録と解除
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F 

めーらっくす::バックナンバー★最近のものならこちらが便利★
http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F

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