求助:MFC中有关WM_CREATE消息的说明.

我只知道在创建完一个窗口后,显示窗口前要调用OnCreate函数,由于Windows应用程序是一种消息处理机制,当创建完一个窗口后,Windows应用程序就处于等待消息的... 我只知道在创建完一个窗口后,显示窗口前要调用OnCreate函数,由于Windows应用程序是一种消息处理
机制,当创建完一个窗口后,Windows应用程序就处于等待消息的状态,如果我在OnCreate函数中定义一个计时器,
SetTimer(1,1,NULL),也就是每一豪秒发送一个OnTimer函数,可这种情况只有在OnCreate函数一直被调用,并
且调用的很频繁,每一毫秒就发送WM_CREATE(这里的一毫秒是SetTimer中的一毫秒,一秒也是一样),然后调用
SetTimer。这就是我不理解WM_CREATE消息的地方,难道是一个应用程序在创建后就一直以很快的速度发送
WM_CREATE消息?请帮我解说下怎么才发送WM_CREATE消息,谢谢!
当我在一个按钮控件上调用SetTimer(1,1000,NULL),然后在OnTimer函数中调用取得当前时间的函数为什么就没用呢?
展开
 我来答
lfm13720
2008-08-05 · TA获得超过1102个赞
知道小有建树答主
回答量:896
采纳率:0%
帮助的人:0
展开全部
你理解错啦,WM_CREATE 顾名思意就是创建窗口,你一毫秒创建一个窗口怎么了得。
Timer被设置后会一直存在,直到用 KillTimer 删除。
Timer被创建后,每隔一定时间会发送 WM_TIMER 消息,只要加个WM_TIMER 消息处理函数就可以了,当收到WM_TIMER 消息后,程序就会调用函数。
当然,你也可以在创建Timer时指定回调函数。
SetTimer 原形如下,注意 CWnd 类的 SetTimer 方法没有第一个参数:
UINT_PTR SetTimer(
HWND hWnd, // handle to window
UINT_PTR nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // timer procedure
);
四个参数分别是:
hWnd 所属的窗口句柄,如果 lpTimerFunc 为空,这个窗口将接收 WM_TIMER 消息。
nIDEvent Timer的ID值,发送 WM_TIMER消息时会附带发送这个值。
uElapse 超时时间。
lpTimerFunc 回函数,如果为空,将发送 WM_TIMER 消息给 hWnd 指定的窗口的消息队列。lpTimerFunc 的函数原型如下:
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT_PTR idEvent, // timer identifier
DWORD dwTime // current system time
);
spotatoes
2008-08-07 · TA获得超过3910个赞
知道小有建树答主
回答量:2363
采纳率:0%
帮助的人:741万
展开全部
WM_CREATE 是当窗口在创建的时候才发送的

只有一次

SetTimer这个函数,使用过后发送的是WM_TIMER消息给窗口;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式