MFC OnTimer() 问题
HICONm_hIcon[3];分别加载相应的ico图片;在OnCreat()函数中加入定时器;{SetTimer(1,1000,NULL);}voidCMainFram...
HICON m_hIcon[3];
分别加载相应的ico图片;
在OnCreat()函数中加入定时器;
{
SetTimer(1,1000,NULL);
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
static int index=1;
SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(AfxGetInstanceHandle(),m_hIcon[index]));
index=++index%3;
CFrameWnd::OnTimer(nIDEvent);
}
我想知道,在OnTimer()函数从上到下执行一次以后又调用哪个函数 ?
还有就是,SetTimer()的第三个参数—回调函数,是指OnTimer()执行结束以后要调用的函数吗?
谢谢 ! 展开
分别加载相应的ico图片;
在OnCreat()函数中加入定时器;
{
SetTimer(1,1000,NULL);
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
static int index=1;
SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(AfxGetInstanceHandle(),m_hIcon[index]));
index=++index%3;
CFrameWnd::OnTimer(nIDEvent);
}
我想知道,在OnTimer()函数从上到下执行一次以后又调用哪个函数 ?
还有就是,SetTimer()的第三个参数—回调函数,是指OnTimer()执行结束以后要调用的函数吗?
谢谢 ! 展开
2个回答
展开全部
OnTimer()其实是用来响应WM_TIMER消息的,其实OnTimer()就是一个回调函数,不过是系统默认的,当用户使用SetTimer()函数设定一个定时器的时候,只要是第三个参数为NULL,则系统就会调用默认的回调函数OnTimer()。
SetTimer(1,1000,NULL);
这一句就是设定一个定时器,每1000毫秒发送一次WM_TIMER消息,每次都会执行一个OnTimer()。
下面的代码演示了使用自定义的回调函数:
// 自定义回调函数
void CALLBACK TimerP(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime){
cout<<"定时器执行"<<endl ;
}
int main(){
int iId = SetTimer(NULL,0,500,TimerP) ;
MSG msg ;
// 消息循环,从消息队列中获取消息,响应WM_TIMER消息。
while(GetMessage(&msg,NULL,0,0))
{
if(msg.message = WM_TIMER){
DispatchMessage(&msg) ;
}
}
KillTimer(NULL,iId) ;
return 0 ;
}
追问
还想问个问题。怎么用LoadImage()函数替换LoadIcon()函数;
如SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDC_ERROR));
用LadImage()该怎么写呢? 谢谢 !
追答
不知道你想实现什么功能?如果是装载图标的话,使用如下语句即可:
m_hIcon = (HICON)LoadImage(AfxGetInstanceHandle(),_T("D:/1.ico"),IMAGE_ICON,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE) ; // 读取D盘下的1.ico文件
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询