我的示例工程如下:
窗体上放两个按钮和一个标签:cmdStart , cmdStop 和 lblNumber。按下 cmdStart 后开始计数直至全局变量 m_bIsRunning = false 或超过一定次数,通过按另一个按钮来改变全局变量。在网上搜到用PeekMessage的方法,但是还是不太会用,请问谁能给我点提示?我知道在VB里只需要 DoEvents 就可以了。我又复习了一遍SDK编写一个最简单的窗口程序的过程(在回调函数里处理消息,注册窗口类,其中窗口结构的一项是回调函数的地址,创建窗口,消息循环),还是没想到方法。
void CVCDoEventsDlg::OncmdStart()
{
CString sCount;
static MSG msg;
m_Count = 0;
m_bIsRunning = true;
/*
while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if (!AfxGetApp()->PumpMessage())
{
PostQuitMessage(0);
}
}
*/
while(m_bIsRunning && m_Count <= 1000)
{
m_Count++;
PeekMessage(&msg,NULL,0,0,PM_NOREMOVE); // 运行结果表明,这一句并不等价于VB的DoEvents
sCount.Format(_T(“%d”), m_Count);
m_lblNumber.SetWindowText(sCount);
m_lblNumber.UpdateWindow();
}
}
void CVCDoEventsDlg::OncmdStop()
{
m_bIsRunning = false;
}
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能