我的数据处理是一个while循环?如何处理一条数据就发一条消息给进度条对话框(新窗口)?循环完了就消毁对话框!

gxning 2006-06-09 11:36:35
这是我的线程函数!
UINT CScoreDlg::ProgressThreadFunc2(LPVOID pParam)
{
for (int i=1; i <= 100; i++)
{

::PostMessage((HWND)pParam, WM_USER_THREAD_SETPOS, i, 0L);

::Sleep(10);
}

return 0;
}
里面已有一个循环,如何将这个循环与我的数据处理循环联系起来?
...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RockHwnd 2006-06-12
  • 打赏
  • 举报
回复
#define DESTROY ???

把???改成-1好了,没什么意思,就是wParam=-1结束窗口,当循环结束时wParam等于-1
gxning 2006-06-12
  • 打赏
  • 举报
回复
我将我的数据处理函数COPY放到线程里,提示出错!
error C2227: left of '->adoEOF' must point to class/struct/union
gxning 2006-06-11
  • 打赏
  • 举报
回复
up
RockHwnd 2006-06-10
  • 打赏
  • 举报
回复
不太明白你意思,你把你数据处理放到这个for里不就行了,但是要保证100步完成,如果不能100步,那先要计算出你数据处理的时间长度并换算到100步
gxning 2006-06-10
  • 打赏
  • 举报
回复
#define DESTROY ???
后面有三个问号是什么意思?
vcPlayer 2006-06-10
  • 打赏
  • 举报
回复
在线程里面处理数据循环,然后向处理进度指示的窗口发送进度消息(你上面已做)!关键是自定义消息的定义:

//ProgressDlg.h

#define DESTROY ???
#define WM_USER_THREAD_SETPOS WM_USER + n

class CProgressDlg
{
.........
afx_msg LRESULT OnUserThreadSetPos(WPALARAM wParam, LPARAM lParam);
}

//ProgressDlg.cpp
BEGIN_MESSAGE
ON_MESSAGE(WM_USER_THREAD_SETPOS, OnUserThreadSetPos)
BEGIN_MESSAGE_END

LRESULT CProgressDlg::OnUserThreadSetPos(WPALARAM wParam, LPARAM lParam)
{
if( wParam == DESTROY )
DestroyWindow();
else
m_ctrlProgress.SetPos(wParam);

return 0l;
}

这是你的线程函数!
UINT CScoreDlg::ProgressThreadFunc2(LPVOID pParam)
{
for (int i=1; i <= 100; i++)
{
DataTreat();//数据处理实体
::PostMessage((HWND)pParam, WM_USER_THREAD_SETPOS, i, 0L);

}
::PostMessage((HWND)pParam, WM_USER_THREAD_SETPOS, DESTROY, 0L);

return 0;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧