내 응용 프로그램에서 나는 간단한 모듈을 가지고 있는데 어떤 프로세스를 위해 파일을 읽을 것인가? 몇 초 ... 파일이 진행되는 동안 진행 막대 (작업자 스레드 사용)를 표시한다고 생각했습니다. 스레드 (코드 아래에 표시) 및 또한 진행률 컨트롤이있는 대화 창을 디자인했습니다. 나는 아래에있는 MyThreadFunction을 사용하여 progressbar 표시하지만 한 번만 보여 사라집니다, 나는 그것을 작동하게하는 방법을 잘 모르겠습니다. 내가 스레딩을 처음 접하는 것이 가장 좋습니다.이 친구들을 도와주세요.win32에서 스레딩 기능을 사용하여 progressbar를 표시하는 방법은 무엇입니까?
reading files
void ReadMyFiles()
{
for(int i = 0; i < fileCount ; fileCount++)
{
CWinThread* myThread = AfxBeginThread((AFX_THREADPROC)MyThreadFunction,NULL);
tempState = *(checkState + index);
if(tempCheckState == NOCHECKBOX)
{
//my operations
}
else//CHECKED or UNCHECKED
{
//myoperation
}
myThread->PostThreadMessage(WM_QUIT,NULL,NULL);
}
}
thread functions
UINT MyThreadFunction(LPARAM lparam)
{
HWND dialogWnd = CreateWindowEx(0,WC_DIALOG,L"Proccessing...",WS_OVERLAPPEDWINDOW|WS_VISIBLE,
600,300,280,120,NULL,NULL,NULL,NULL);
HWND pBarWnd = CreateWindowEx(NULL,PROGRESS_CLASS,NULL,WS_CHILD|WS_VISIBLE|PBS_MARQUEE,40,20,200,20,
dialogWnd,(HMENU)IDD_PROGRESS,NULL,NULL);
MSG msg;
PostMessage(pBarWnd, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
PostMessage(pBarWnd,PBM_SETPOS,0,0);
while(PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE))
{
if(msg.message == WM_QUIT)
{
DestroyWindow(dialogWnd);
return 1;
}
AfxGetThread()->PumpMessage();
Sleep(40);
}
return 1;
}
Chris, 나는 그 점을 이해하지 못했습니다. "행동 차단", 그것이 무엇인지 말해 줄 수 있습니까? 예를 보여 주면 좋을 것입니다! – kiddo
"차단 동작"은 파일 읽기 작업이 정상적인 메시지 처리에서 UI 스레드를 차단한다는 사실을 나타냅니다. –