ドキュメントクラスではclass wizard のメッセージにWM_TIMERがありませんが、
ドキュメントクラスに直接タイマ関数(OnTimer())を実装できないのでしょうか
よろしくご教示ください。
Win-NT VC++ 6.0
>ドキュメントクラスではclass wizard のメッセージにWM_TIMERがありませんが、
>ドキュメントクラスに直接タイマ関数(OnTimer())を実装できないのでしょうか
ドキュメントクラスなので名前の通りWM_TIMERもOnTimerもありません。
ドキュメントクラスは、あくまでもドキュメント用のクラスなので、そこでタイマーを扱うこと
は、通常ありません。
通常は、フレームウインドウかビューで処理します。
どうしてもドキュメントでやりたい場合は、SetTimer APIでウインドウハンドルにNULLを指定
してコールバック関数を使うという方法があります。
不良PG さんありがとうございます。
>どうしてもドキュメントでやりたい場合は、SetTimer APIでウインドウハンドルに
>NULLを指定してコールバック関数を使うという方法があります。
つぎのようにコーディングしたところ
「 error C2664 'SetTimer' 4番目の引数を
'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)'から
'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned
long)'に
変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。」
のビルドエラーが出ました。
どうしてもこのエラーが取れません
何が原因でしょうか?
SetTimer(NULL,1,100,TimerProc);
void CALLBACK EXPORT TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
return;
}
コールバック関数は、スタティックまたは、グローバルな関数を使う必要があります。
不良PG さんありがとうございます。
static void CALLBACK EXPORT TimerProc()
にすることで うまくできました。