• ベストアンサー

マルチメディアタイマーのプログラミングを教えて下さい

1msec単位でのタイマー割込処理は マルチメディアタイマーを使えば良い。 らしいのですが、 具体的に、どうプログラミングするのか 教えて!goo

質問者が選んだベストアンサー

  • ベストアンサー
  • utatane
  • ベストアンサー率33% (86/254)
回答No.1

MSDNライブラリに書いてあります。

関連するQ&A

  • マルチメディアタイマーコントロールの入手方法

    マルチメディアタイマーコントロール (MMTimer.ocs)の入手方法を教えて下さい。 又、マルチメディアタイマーはXPでも動作可能でしょうか?

  • マルチメディアタイマーの使用方法

    お世話になります、fujitomoです。 今回お聞きしたいのはマルチメディアタイマーのプログラムの使用方法についてです。現在下記のようなコードを作成して、マルチメディアタイマーを動作させたいと思っていますが、なぜか処理が固まってしまいます。 プログラムはVisual Studio2005のVisual C++のダイアログベースのプログラムで、CStatic派生クラスをメインダイアログクラスにてサブクラス化した際の動作を示しています。 //CStatic派生のクラスCSampleクラスのヘッダーファイル //CSample.h class CSample : public CStatic { static void CALLBACK TimerProc(UINT uTimerID,UINT uMsg,DWORD dwUser,DWORD dw1,DWORD dw2); static UINT TimerID; } //CSample.cpp void CSample::PreSubclassWindow() { TIMECAPS timercaps; MMRESULT mmresult; //分解能を取得 mmresult = timeGetDevCaps(&timercaps,sizeof(TIMECAPS)); if(mmresult != TIMERR_NOERROR){ AfxMessageBox(_T("分解能取得失敗")); return; } else period = timercaps.wPeriodMin; //最小タイマー分解能の設定 mmresult = timeBeginPeriod(period); if(mmresult != TIMERR_NOERROR){ AfxMessageBox(_T("分解能設定失敗")); return; } //タイマー処理の呼び出しの設定と開始 mmresult = ::timeSetEvent(500,period,TimerProc,0,TIME_PERIODIC|TIME_CALLBACK_FUNCTION); if(mmresult == NULL){ AfxMessageBox(_T("タイマー処理失敗")); return; } else TimerID = (UINT)mmresult; } void CALLBACK CSample::TimeProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) { if(uTimerID == TimerID){ ; } } というコードです。自分の予想ではTimerProcにブレークポイントを置いて、デバックを開始すると500msecでTimerProcにとぶと思っているのですが、実際はtimeSetEvent()を呼び出した後にプログラムの動作が止まってしまいます。 これは何が原因なのかわかりますでしょうか? timesetEvent()を使用するのが初めてで、なかなか使い方が分からず初歩的な質問なのかもしれませんが、どうかご意見を宜しくお願い致します。 尚、開発環境は Visual Studio 2005 Windows CE 6.0 です。宜しくお願い致します。

  • 定周期での割り込み

    c言語での10msecの割込プログラムを作成しようとしています。 ですが、なかなか割込というものが理解できていません。 シングルタスクでの割込プログラムはどうすればよいのでしょうか?  for(;;) {   func(); //10msecごとに実行したい関数   usleep(100000);  } では割込み処理にはならないんですよね? きちんと理解できていないため、質問もあいまいになってしまっていますが、よろしくお願いいたします。 また、シングルタスク等が説明されているサイトがありましたら、教えていただきたく思います。

  • C++プログラミングについて。

    C++プログラミングについて。 VC++6.0にてプログラミングを行っています。 他の関数から(msec単位で)常時変化している変数(1か0)を受け取り、 その変化に対してリアルタイムで図形の処理をしたいと考えています。 とりあえず試験的に変数が1なら黒丸を描き、変数が0に変化したら白丸に切り替えるといった処理を考えています。 もちろん変数が0から1に変化したときも同様に白丸から黒丸に切り替わるといった具合に。 このような動作をさせるにはどのような操作を行えばよいのでしょうか? すでに変数が常時変化してるのもチェック済みで白丸、黒丸も描写できています。 あとはこの変数の変化をリアルタイムに近い形で渡すだけなのですが・・・ わかりにくいアバウトな質問ですいません。 よろしくお願いします。

  • タイマー関数について

    こんばんは。 この掲示板には大変お世話になっています。ありがとうございます。 [質問内容] およそ1ミリ秒単位で、待機することができる関数はあるのでしょうか? 私は、C言語を使用しているのですが、タイマー関数としてはSleep関数しか知りません。しかし、最近になってSleep関数は10ミリ秒待機することが限界ということをこの掲示板で知りました。 Windowsプログラミングに用意してある関数で1ミリ秒待機できる関数はありますでしょうか? 私は今、対処方法としてダミー処理をほどこすことでだいたい1ミリ秒のタイマーを作っています。 C言語もまだまだ初心者ですがよろしくお願いします。

  • マルチメディアタイマー

    初めて質問させていただきます。 Visual C++ 6.0でMFCのダイアログベースでマルチメディアタイマーを使おうとしてるのですが、 class CTimeCounter { public: LPTIMECALLBACK lpTimeCallback; UINT TimerID; UINT uPeriod; UINT uDelay; void GetPeriod(); void AttachAD(LPTIMECALLBACK lpProc); CTimeCounter(); virtual ~CTimeCounter(); }; void CTimeCounter::AttachAD(LPTIMECALLBACK lpProc) { TimerID = uPeriod = NULL; GetPeriod(); //最小分解能を取得し、uPeriodに代入 this->uDelay = uPeriod; this->lpTimeCallback = lpProc; } としてCTimeCounter ctcを宣言したのですが、OnInitDialogのTODOの箇所でコールバック関数のアドレスを取得しようとして ctc.AttachAD(this->TimerProc); とすると error C2664: 'AttachAD' : 1 番目の引数を 'void (unsigned int,unsigned int,unsigned long,unsigned long,unsigned long)' から 'void (__stdcall *)(unsigned int,unsigned int,unsign ed long,unsigned long,unsigned long)' に変換できません。 というエラーを返されます。これはどう対処すればいいのでしょうか? よろしくお願いします。

  • タイマー機能について

    初めての投稿です.よろしくお願いいたします. .NET 2003のMFCを使用しています. インターフェース上にボタンを設置し,1つのボタンで, 左シングルクリックと左ダブルクリックの両方でメッセージボックスを出したいと考えています. 以前に出ていた質問に同じようなものがあり,(http://oshiete1.goo.ne.jp/qa647244.htmlを参照) タイマー機能を使えばよいということはわかったのですが,実際どうプログラミングを組んだらいいのかわかりません. OnLButtonDown内で, if(数秒以内にもう一度クリックされたら){ ダブルクリックの処理 }else{ シングルクリックの処理 } というのしか思いつかないのですが,これは無理ですよね(^_^;) ダブルクリックの処理はOnLButtonDblClk内で行なっていて… 頭がこんがらがってしまいました. ぜひアドバイスいただければと思います. よろしくお願いいたします.

  • Windows2003Severでのタイマーソフト

    よろしくお願いします。 Windows2003Serverにて、毎日決まった時間に音楽を流し、決まった時間に音楽を止めたいのです。タイマーソフトを検索してもなかなかWindows2003Server対応のものがなく困っている次第です。 自分が考えていたのは、 1 タイマー機能付マルチメディア 2 タイマーでアプリ(マルチメディア)を起動→音楽再生 という具合です。 何か良い方法&ソフトがありましたら教えてく下さい。

  • タイマーオブジェクトを利用した時間の取得

    今、卒研でVBを使ってよるのですが、そのプログラミングで悩んでいます。 タイマーを使って時間を取得しようと思い、パソコン画面右下の時間表示から取っているのですが、そうすると時間、分は表示できるのですが秒までは表示できません。 このやり方で秒まで表示できませんか? 違った方法でもVBを使って秒まで表示できるプログラミングがあったら教えてください。 VBを使って10分の1秒単位での時間の取得はできませんか? できたら2つのフォームにまたがって同じタイマーを使用したいのですが、何か方法はありませんか? すみません。 お願いします。

  • プレゼン用タイマー

    プログラミング初心者です。 知識も経験もほとんどありません。 課題でVisual C♯を使い、プレゼンに使えるようなタイマーを作るように言われたのですが、どうすれば良いでしょうか?

専門家に質問してみよう