Добавить обработчик таймера (WM_TIMER) в Visual C++ 6.0, когда мастер классов не работает?

У меня есть приложение MFC Visual C++, которое, кажется, не может работать в Class Wizard, тем не менее, у меня есть представление (CServerView), к которому я хотел бы добавить обработчик события WM_TIMER.

Я разобрался как позвонить CWnd::SetTimer а также CWnd::KillTimer но то, что я не делал более десяти лет, это изменить карту сообщений. Я не уверен, является ли карта, которую я должен изменить для своего подкласса 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()

Это, вероятно, тривиальная вещь, но две сложные проблемы, с которыми я сталкиваюсь, заключаются в том, что документация по этому вопросу предназначена только для последних версий Visual Studio, и я застрял, делая это в Visual C++ 6.0.

2 ответа

Решение

В вашем заголовочном файле:

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);
}

Я думаю, что это называется ON_TIMER или ON_WM_TIMER. Проверьте установленные включенные места на место, где определены ON_COMMAND&Co, там вы найдете это. Кроме того, поиск MSDN онлайн на MS'. Название этой вещи, между прочим, не изменилось, поэтому документы последних версий в порядке. И я настоятельно рекомендую обновить VC6, иначе VS98 исполняется 15 лет в этом году, и MS уже давно перестала его поддерживать.

Другие вопросы по тегам