SetTimer(1,5000,NULL);设置定时器
提示的错误
error C2501: 'SetTimer' : missing storage-class or type specifiers
error C2373: 'SetTimer' : redefinition; different type modifiers这是我写的函数
void CXmDlg::OnTimer(UINT_PTR nIDEvent)之后我在按钮中直接调用该函数并传参 为什么会出错呢?
void CXmDlg::OnButton2()
{
OnTimer(1);
}
错误提示:
error C2668: 'OnTimer' : ambiguous call to overloaded function请问各位高手如何解决 万分感谢!
提示的错误
error C2501: 'SetTimer' : missing storage-class or type specifiers
error C2373: 'SetTimer' : redefinition; different type modifiers这是我写的函数
void CXmDlg::OnTimer(UINT_PTR nIDEvent)之后我在按钮中直接调用该函数并传参 为什么会出错呢?
void CXmDlg::OnButton2()
{
OnTimer(1);
}
错误提示:
error C2668: 'OnTimer' : ambiguous call to overloaded function请问各位高手如何解决 万分感谢!
void OnTimer(UINT nIDEvent);.cpp
BEGIN_MESSAGE_MAP(CXXXXXXDlg, CDialog)
ON_WM_TIMER()
END_MESSAGE_MAP()void CXmDlg::OnButton2()
{
SetTimer(1,5000,NULL);
}
//KillTimer(1);在要停止的地方执行
afx_msg void OnTimer( UINT nIDEvent );//默认的定时器处理函数,此时需要添加ON_WM_TIMER()宏,并且此时OnTimer不用你自己调用;
另外,全局的SetTimer函数有4个参数,第一个参数是窗口句柄,第二个是唯一的定时器id。
就解释这么多吧
void CXmDlg::OnButton2()
{
SetTimer(1,5000,NULL);
}
使用类向导的方法添加了消息响应函数了 怎么没还是不执行呢?
void OnTimer(UINT nIDEvent)
{
"处理你的事情!";
}
BEGIN_MESSAGE_MAP(CTimertest2Dlg, CDialog)
//{{AFX_MSG_MAP(CTimertest2Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_WM_TIMER() //}}AFX_MSG_MAP
END_MESSAGE_MAP() //{{AFX_MSG(CTimertest2Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
afx_msg void OnTimer(UINT nIDEvent); //}}
AFX_MSGvoid CTimertest2Dlg::OnButton1()
{
OnTimer(1);
}void CTimertest2Dlg::OnTimer(UINT nIDEvent)
{
MessageBox(_T("sdfsdf"));
CDialog::OnTimer(nIDEvent);
}
你是意思是弹出messagebox对话框了但是上面没输出,还是连messagebox对话框都没单出来?
{
switch(nIDEvent)
{
case 1: //定时器1
{
//做你的事
}
break;
}void CXmDlg::OnButton2()
{
SetTimer(1,1000,NULL);
}
把5000改为1000,,设置成1秒,也许是你5秒时间太长了,你没等到5秒就关了。
ON_WM_TIMER()
这是.cpp文件
BEGIN_MESSAGE_MAP(CXmDlg, CDialog)
//{{AFX_MSG_MAP(CXmDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_COMMAND(ID_KS, OnKs)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_WM_TIMER()
ON_MESSAGE(WM_SHOWTASK,onShowTask)
ON_WM_CANCELMODE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()这是.h文件
// Generated message map functions
//{{AFX_MSG(CXmDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
virtual void OnOK();
afx_msg void OnButton1();
afx_msg void OnKs();
afx_msg void OnButton2();
afx_msg void OnButton4();
afx_msg void OnButton3();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnCancelMode();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
这两个地方有什么不对的地面吗? 纠结了好长时间了!谢谢了!
断点调试下,看看能否进入到OnTimer(UINT_PTR nIDEvent){.......}里面就行了,没碰到过不行的时候。