• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:超初心者の質問です。今、MFCでプログラムを作成しています。問題は、O)

MFCでのプログラム作成において、OnTimer関数が呼ばれない問題について

このQ&Aのポイント
  • 超初心者の質問です。MFCでのプログラム作成中に、OnTimer関数が呼ばれない問題に直面しています。CxxxsocketクラスでSetTimerおよびOnTimerが使用できないため、代わりの方法を模索しています。
  • Cxxxsocketクラスでは、SetTimerとOnTimerを使用することができないため、別の解決策を探しています。アクティブなメインウィンドウを取得するためにafxGetMainWnd()関数を使用し、CFrameWndやCxxxAppのポインタを取得することができますが、SetTimerのイベントは正しく処理されません。
  • 使用しているCMainFrameクラスで定義されているOnTimer関数を使用したいのですが、SetTimerの呼び出し方法に問題があるようです。解決策を見つけるために、より詳細な調査と検討が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Vidocq
  • ベストアンサー率66% (6/9)
回答No.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); } でしょうか。

findbine
質問者

お礼

正直に言うと、SetTimerにセットしていた時間が長すぎて、OnTimerが呼ばれないものだと勘違いしていました。今は呼べてます。大変お手数おかけしました。お手数多謝!

その他の回答 (1)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

メッセージループが回っていないとか。

findbine
質問者

お礼

回答有難うございます。 タイマーが長すぎただけです。初歩的すぎる間違いでした。。。

関連するQ&A