c - 无法使用线程概念显示进度条?

标签 c winapi multithreading progress-bar

我试图在我的进程正在进行时显示进度条...在我的应用程序中,会出现一种情况,我必须读取文件并操作它们(需要一些时间才能完成)..想要显示在此操作期间有一个进度条..我调用的特定函数是 win 32 ...所以如果您检查下面的代码...我能够显示进度条,但它没有显示任何进度..实际上它没有做任何进一步的过程...请帮助我..提前致谢

//my  function
int Myfunction(....)
{
 MSG msg;
 HWND dialog = CreateWindowEx(0,WC_DIALOG,L"Proccessing...",WS_OVERLAPPEDWINDOW|WS_VISIBLE,
     600,300,280,120,NULL,NULL,NULL,NULL);
 HWND pBar =  CreateWindowEx(NULL,PROGRESS_CLASS,NULL,WS_CHILD|WS_VISIBLE,40,20,200, 20,
       dialog,(HMENU)IDD_PROGRESS,NULL,NULL);
 SendMessage(pBar,PBM_SETRANGE,0,MAKELPARAM(0,noOfFile));


  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    Dispatch(&message);
  }

 HANDLE getHandle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)SetFilesForOperation(...),
    NULL,NULL,0);

}


LPARAM SetFilesForOperation(...)       
{

 for(int index = 0;index < noOfFiles; index++)
 {


  *checkstate = *(checkState + index);
  if(*checkstate == -1)
  {
   *(getFiles+i) = new TCHAR[MAX_PATH];
   wcscpy(*(getFiles+i),*(dataFiles +index));
   i++;

  }
  else
  {
   (*tempDataFiles)->Add(*(dataFiles+index));
   *(checkState + localIndex) = *(checkState + index);
   localIndex++;
  }

  PostMessage(pBar,PBM_SETPOS,(WPARAM)index,0);
 }
}

最佳答案

我怀疑问题在于您在应用程序退出后创建了线程 - 如果您将对 CreateThread 的调用移至消息泵上方,它可能会工作得更好。

关于c - 无法使用线程概念显示进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558053/

相关文章:

Python多线程使用有限线程的for循环

javascript - 证明 Javascript 中不可能有 sleep 功能?

java - 通过 Swing 按钮停止线程

c - 在 C 中的 execv 调用中传递指向整数的指针

使用内联 ASM 调用函数

c++ - 在 Visual C++ 中测量操作速度的最佳方法

c++ - win32 WM_SETTEXT 不工作

c - Windows API 是面向对象的框架吗?

c - 使用可用端口号绑定(bind)套接字

c - 为什么 windows api 滚动条没有响应?