1

クラスウィザード内で動作できないように見えるMFCVisualC ++アプリケーションがありますが、WM_TIMERイベントハンドラーを追加するビュー(CServerView)があります。

CWnd::SetTimer電話をかける方法はわかりましたCWnd::KillTimerが、10年以上行っていないのは、メッセージマップを変更することです。CViewサブクラス用に変更する必要のあるマップがServerView.cppファイルのこの部分なのか、ServerView.h内の何かなのかわかりません。

BEGIN_MESSAGE_MAP(CServerView, CListView)
    //{{AFX_MSG_MAP(CServerView)
    ON_COMMAND(ID_DRIVER_START, OnDriverStart)
    ON_UPDATE_COMMAND_UI(ID_DRIVER_START, OnUpdateDriverStart)
        ...
    // Standard printing commands
END_MESSAGE_MAP()

これはおそらく些細なことですが、私が直面している2つの複雑な問題は、これに関するオンラインのドキュメントがすべて最近のVisual Studioバージョンのものであり、Visual C++6.0でこれを実行し続けていることです。

4

2 に答える 2

7

ヘッダー ファイルで:

afx_msg void OnTimer(UINT_PTR nIDEvent);

あなたのcppファイルで:

BEGIN_MESSAGE_MAP(CMyView, CView)
    ON_WM_TIMER()
END_MESSAGE_MAP()

void CMyView::StartTimer
{
    m_nTimerID = SetTimer(2348,100,0);
}

void CMyView::OnTimer(UINT_PTR nIDEvent)
{
    if(nIDEvent==m_nTimerID)
    {
    }
    CView::OnTimer(nIDEvent);
}
于 2013-01-20T19:45:13.673 に答える
1

ON_TIMERまたはON_WM_TIMERと呼ばれていると思います。インストールされたインクルードで ON_COMMAND&Co が定義されている場所を確認してください。または、MS' で MSDN オンラインを検索します。このものの名前は変更されていないため、最近のバージョンのドキュメントは問題ありません。VC6、別名 VS98 は今年で 15 周年を迎えますが、MS は長い間サポートを停止しています。

于 2013-01-20T19:41:58.613 に答える