ドキュメントクラスでWM_TIMERを受け取るには?

[戻る]
しげ 2002/03/11(月) 17:06:05
ドキュメントクラスではclass wizard のメッセージにWM_TIMERがありませんが、
ドキュメントクラスに直接タイマ関数(OnTimer())を実装できないのでしょうか
 よろしくご教示ください。

  Win-NT VC++ 6.0

不良PG 2002/03/11(月) 17:16:36
>ドキュメントクラスではclass wizard のメッセージにWM_TIMERがありませんが、
>ドキュメントクラスに直接タイマ関数(OnTimer())を実装できないのでしょうか
ドキュメントクラスなので名前の通りWM_TIMERもOnTimerもありません。
ドキュメントクラスは、あくまでもドキュメント用のクラスなので、そこでタイマーを扱うこと
は、通常ありません。

通常は、フレームウインドウかビューで処理します。

どうしてもドキュメントでやりたい場合は、SetTimer APIでウインドウハンドルにNULLを指定
してコールバック関数を使うという方法があります。

しげ 2002/03/12(火) 01:37:46
不良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 2002/03/12(火) 02:20:24
コールバック関数は、スタティックまたは、グローバルな関数を使う必要があります。

しげ 2002/03/13(水) 19:48:56
[[解決]]
 不良PG さんありがとうございます。
static  void CALLBACK EXPORT TimerProc()
にすることで うまくできました。

古いスレッドには追加発言できません。