我自己生成一个类,是派生自CWnd的,我在这个类里建立了WM_TIMER消息。我在dlg类下生成了之前定义的这个类的对象,然后调用此对象的OnTimer(),结果编译都通过,但是运行就出错。// CMyTimerTest.h
class CMyTimerTest : public CWnd
{
//{{AFX_MSG(CMyTimerTest)
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSGDECLARE_MESSAGE_MAP()
}
// CMyTimerTest.cpp
void CMyTimerTest::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1){ // do sth....}
}
// CDlgTestDlg.h
class CDlgTestDlg : public CDialog
{
CMyTimerTest mtt;
}
// CDlgTestDlg.cpp
void CDlgTestDlg::OnTimer(UINT nIDEvent)
{
// do sth...CDialog::OnTimer(nIDEvent);
}void CDlgTestDlg::OnButtonSet()
{
mtt.SetTimer(1,1000,NULL);
}
而且,我设置了断点,结果在AFXASERT.CPP中,
BOOL bResult = _CrtDbgReport(_CRT_ASSERT, lpszFileName, nLine, NULL, NULL);
这句过不去.....
请问,我该如何设置?
class CMyTimerTest : public CWnd
{
//{{AFX_MSG(CMyTimerTest)
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSGDECLARE_MESSAGE_MAP()
}
// CMyTimerTest.cpp
void CMyTimerTest::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1){ // do sth....}
}
// CDlgTestDlg.h
class CDlgTestDlg : public CDialog
{
CMyTimerTest mtt;
}
// CDlgTestDlg.cpp
void CDlgTestDlg::OnTimer(UINT nIDEvent)
{
// do sth...CDialog::OnTimer(nIDEvent);
}void CDlgTestDlg::OnButtonSet()
{
mtt.SetTimer(1,1000,NULL);
}
而且,我设置了断点,结果在AFXASERT.CPP中,
BOOL bResult = _CrtDbgReport(_CRT_ASSERT, lpszFileName, nLine, NULL, NULL);
这句过不去.....
请问,我该如何设置?
尝试用两个Timer来做,结果就出这样的问题。
-_-!另外,我看有人也层出现我这问题,但是他那问题是发生在SDI的情况下,我于是照猫画虎,又在此基础上,把Create()加了来,结果发现还是不行。void CDlgTestDlg::OnButtonSet()
{
mtt.Create(this);
mtt.SetTimer(1,1000,NULL); }BOOL CMyTimerTest::Create(CWnd *pParentWnd)
{
BOOL bSuccess;
// Must have a parent
ASSERT(pParentWnd != NULL);
bSuccess = CreateEx(NULL, m_szClass, NULL, WS_POPUP, 0, 0, 0, 0, pParentWnd->GetSafeHwnd(), NULL, NULL);
m_pParentWnd = (CMainFrame*)pParentWnd; // 这里不知道该怎么改
return bSuccess;
}其中:
LPCTSTR m_szClass;
CMainFrame* m_pParentWnd;
上面的Create()是我找到的那段代码,麻烦哪位能给解释下。。
这个不错。