基本的な(テンプレート)MFCアプリケーションを試していますが、タイマイベントに従ってCDocument
(モデルを表す)インスタンスを更新しようとしています。サークルの経過時間と速度に従って、クライアント領域の1つの点から別の点にサークルします。私は、アプリケーションクラスにタイマーを起動するためのコードを追加しましたタイマを使用してMFCドキュメント/ビューアプリケーションを更新する
:毎秒タイマーメッセージに60回を送信する必要があります
m_timer = m_pMainWnd->SetTimer(16, 1000, NULL);
。 しかし、私はいくつかの問題に遭遇しています:
は派生CDocument
.cppファイルが動作しないためのメッセージマップへON_WM_TIMER()
エントリを追加し、(ポインタを無効にするにはメンバ関数ポインタをキャスト)c2446エラーを引用。
具体的なCView
クラスで同じことを試みてもエラーは発生しませんが、OnTimer
関数は呼び出されません。 OnTimer
が今までに呼び出された唯一の場所は、次のシグネチャを使用して、派生CFrameWndEx
クラスである
:
afx_msg void OnTimer(UINT_PTR nIDEvent);
私の知る限り、CFrameWndEx
はどちらかの変化を起動するための方法はありませんCView
またはCDocument
派生クラス。
これは単にMFCアーキテクチャに関する深刻な知識が不足していることを意味していると思いますので、私はいくつかの指摘を感謝します。
[CWnd :: SetTimer](https://msdn.microsoft.com/en-us/library/49313fdf(v = vs.120).aspx)に独自のコールバックを渡すことができますタイマーメッセージを処理するためのウィンドウクラス。 – IInspectable
@IInspectableはい私はそれを認識していますが、それは私がタイマーメッセージに基づいてドキュメント/ビューを更新するためにどのように使用するのか分からないという中心的な問題に対処していません。私が知る限り、 'CFrameWndEx'オブジェクトはどちらかについての知識がありません。 –
'CMyDocument :: OnTimer()'関数の署名を投稿できますか? – sergiol