迷いの国のxxx HYPER

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告
|

駄目駄目プログラマの独り言‥2

今日はマルチメディアタイマについて。

一応免責しておきます。
このブログの記述を利用したことによって何らかの損害が生じても、当方は一切の責任を負いません。御了解の上、自らの責任に於いてお使い戴きますようお願いいたします‥

現在、Windows Vista HP SP1で動かすアプリ作成に関わっています。
開発環境はVisual C++ 2005がメイン。
マルチメディアタイマを使っているのですが、
その中で見つけたことなどを簡単に記述します。

・タイマーのセット
 timeSetEventを使います。
 次のような型になっています。

MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD_PTR dwUser,
UINT fuEvent
);


 第1引数:uDelay
  イベント遅延させる値をミリ秒で設定します。
  ここに指定できる値の範囲が限られています。
  範囲の最大値・最小値は、timeGetDevCapsで取得できるようです。
  ちなみに現在の開発環境・動作環境では、
  uDelay = 1000*1000(1000秒)
  までは指定できましたが、
  1001*1000を指定すると、エラーが返却されました。

 第2引数:uResolution
  タイマイベントの分解能を指定します。

 第3引数:lpTimeProc
  指定した時間が経過した後に呼び出すコールバック関数のポインタを
  設定します。
  ※第5引数のオプションで、コールバックではなくイベントセットに
   することが出来るようです。
   その場合、第3引数は、セットするイベントのハンドラへのポインタと
   解釈されるそうです。

 第4引数:dwUser
  コールバック関数に渡したいパラメータのポインタ

 第5引数:fuEvent
  タイプを指定します。
  ?TIME_ONESHOT/TIME_PERIODIC
   →TIME_ONESHOTを指定すると、コールバックは経過時間後1回呼ばれます
    TIME_PERIODICを指定すると、コールバックは経過時間ごとに呼ばれます
  ?TIME_CALLBACK_FUNCTION/
   TIME_CALLBACK_EVENT_SET/
   TIME_CALLBACK_EVENT_PULSE
   →TIME_CALLBACK_EVENT_SETまたはTIME_CALLBACK_EVENT_PULSEを指定すると
    コールバック関数ではなく、setEvent関数が呼ばれます。
  ?TIME_KILL_SYNCHRONOUS
   →「timeKillEvnetが呼ばれた後にコールバック関数が呼ばれることを
    防ぐ」そうです。

  それぞれの定義値はmmsystem.hに宣言されています。
  fuEventには?、?、?の論理和を設定することが出来ます。
  定義値は次の通りです。

#define TIME_ONESHOT			0x0000
#define TIME_PERIODIC 0x0001

#define TIME_CALLBACK_FUNCTION 0x0000
#define TIME_CALLBACK_EVENT_SET 0x0010
#define TIME_CALLBACK_EVENT_PULSE 0x0020

#define TIME_KILL_SYNCHRONOUS 0x0100



ソースの例やTIME_KILL_SYNCHRONOUSを使用した際に
起こったこと度を追々紹介していければと思います。

まだまだ新米プログラマです。
みなさまの暖かいご助言やご指摘を戴けると嬉しいです。
スポンサーサイト

プログラム
| コメント:0 | トラックバック:0 |
<<駄目駄目プログラマの独り言‥3 SQL Server Compact Edition 3.5 | ホーム | 駄目駄目プログラマの独り言‥1>>

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。