- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:超初心者の質問です。今、MFCでプログラムを作成しています。問題は、O)
MFCでのプログラム作成において、OnTimer関数が呼ばれない問題について
このQ&Aのポイント
- 超初心者の質問です。MFCでのプログラム作成中に、OnTimer関数が呼ばれない問題に直面しています。CxxxsocketクラスでSetTimerおよびOnTimerが使用できないため、代わりの方法を模索しています。
- Cxxxsocketクラスでは、SetTimerとOnTimerを使用することができないため、別の解決策を探しています。アクティブなメインウィンドウを取得するためにafxGetMainWnd()関数を使用し、CFrameWndやCxxxAppのポインタを取得することができますが、SetTimerのイベントは正しく処理されません。
- 使用しているCMainFrameクラスで定義されているOnTimer関数を使用したいのですが、SetTimerの呼び出し方法に問題があるようです。解決策を見つけるために、より詳細な調査と検討が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CMainFrameに外部からSetTimerをして、CMainFrame内部のOnTimerをコールする、 ということならばSetTimerには問題がないように思います。 確認するポイントとしては、 CMainFrameのヘッダーでafx_msg修飾子付で宣言されていること class CMainFrame : public CMDIFrameWnd { afx_msg void OnTimer(UINT nIDEvent); }; メッセージマップにON_WM_TIMERが記述されていること BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP() OnTimerは下記のように定義されていること void CMainFrame::OnTimer(UINT nIDEvent) { //ここに任意の処理を書く CMDIFrameWnd::OnTimer(nIDEvent); } でしょうか。
その他の回答 (1)
- titokani
- ベストアンサー率19% (341/1726)
回答No.1
メッセージループが回っていないとか。
質問者
お礼
回答有難うございます。 タイマーが長すぎただけです。初歩的すぎる間違いでした。。。
お礼
正直に言うと、SetTimerにセットしていた時間が長すぎて、OnTimerが呼ばれないものだと勘違いしていました。今は呼べてます。大変お手数おかけしました。お手数多謝!