MFC对话框编程中,两个按钮程序能否同时运行 多线程http://www.vckbase.com/document/viewdoc/?id=1704 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.你自己说的很明白,如果不采取多线程是不能同时跑的2.先后运行也未尝不可啊;因为程序运行一个语句非常之快 即便是先后 你也发现不了的啊!3.如果同时进行的话,其实还有一种方法,这种方法就是 A还没有跑完,去跑 B;B跑完了再回到A中;就是 在你的循环中 加一个wait消息 ::peekmsg 处理消息;代码如下 希望对你有用处~~for(;;){ wait(100);// 这种方法可以解决异步变成同步,编程中经常用到}void Wait(){ MSG msg; if( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) { ::GetMessage(&msg, NULL, 0, 0 ); ::TranslateMessage(&msg); ::DispatchMessage(&msg); }}void Wait(LONG ms){ DWORD lT_old = GetTickCount(); DWORD lT = lT_old; do { Wait(); lT = GetTickCount(); } while(lT - lT_old < (DWORD)ms);} 如果 在你 摁了 按钮A, 按钮 A的事件函数 中 加入wait(1000);你如果按 按钮B 这时会处理B中的消息 ;你可以试试 这类问题在台湾侯捷的著作《深入浅出MFC》中已经有所介绍。由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。 这类问题在台湾侯捷的著作《深入浅出MFC》中已经有所介绍。由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。 如果你要用这个方法 最好用一个 循环控制等待消息 在你的循环里加入这个 wait时间不要太长具体代码自己写 我也出现了你的问题,上网搜了下,可以用while (TRUE) { if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break ; TranslateMessage (&msg) ; DispatchMessage (&msg) ; } else { // 完成某些工作的其它行程序 } } 双三次插值的基函数S(w)的一点疑问 如何读取编辑框中的数字到二维数组 找人利用ACE开发软件(大连) 还是关于CtoolbarCtrl类的问题,如何在一个toolbar上实现各个button的宽度不一样, 高手请进,提建议! 怎样把Radio控件为默认选中? 非模态对话框问题再问.(调试时突然发现程序隐患) 初学Dao编程,请问各位在Dao中如何使用COleVariant对象?有没有详细参考? 怎么学习操作系统? 关于用VC编译DLL过程中的错误问题! C#调用VC写的DLL中的函数,开启了多个线程,C#怎么维护操作线程? 各位大虾,正常情况下一个月写2万行代码是偏多还是偏少呢
2.先后运行也未尝不可啊;因为程序运行一个语句非常之快 即便是先后 你也发现不了的啊!
3.如果同时进行的话,其实还有一种方法,这种方法就是 A还没有跑完,去跑 B;B跑完了再回到A中;就是 在你的循环中 加一个wait消息 ::peekmsg 处理消息;
代码如下 希望对你有用处~~
for(;;)
{
wait(100);// 这种方法可以解决异步变成同步,编程中经常用到}
void Wait()
{
MSG msg;
if( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
{
::GetMessage(&msg, NULL, 0, 0 );
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
void Wait(LONG ms)
{
DWORD lT_old = GetTickCount();
DWORD lT = lT_old;
do
{
Wait();
lT = GetTickCount();
} while(lT - lT_old < (DWORD)ms);
}
这类问题在台湾侯捷的著作《深入浅出MFC》中已经有所介绍。
由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。
由于你的第一个按钮按下后运行的是一个循环语句,所以你可以在这循环语句中添加PeekMessage()、TranslateMessage()、DispatchMessage()等消息处理函数。
while (TRUE)
{
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
else
{
// 完成某些工作的其它行程序
}
}