ドキュメントクラスでWM_TIMERを受け取るには? – プログラミング – Home

ドキュメントクラスでWM_TIMERを...
 
通知
すべてクリア

[解決済] ドキュメントクラスでWM_TIMERを受け取るには?


しげ
 しげ
(@しげ)
ゲスト
結合: 25年前
投稿: 21
Topic starter  

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

Win-NT VC++ 6.0


引用未解決
トピックタグ
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

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

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

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


返信引用
しげ
 しげ
(@しげ)
ゲスト
結合: 25年前
投稿: 21
Topic starter  

不良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
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

コールバック関数は、スタティックまたは、グローバルな関数を使う必要があります。


返信引用
しげ
 しげ
(@しげ)
ゲスト
結合: 25年前
投稿: 21
Topic starter  

不良PG さんありがとうございます。
static void CALLBACK EXPORT TimerProc()
にすることで うまくできました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました