2010-04-01 26 views
0

我試圖在我的進程正在進行時顯示進度條...在我的應用程序中會出現一種情況,即我必須讀取文件並操作它們(需要一些時間才能完成)..要顯示在這個操作過程中的進度條..我打電話的特定功能是贏32 ...所以,如果你檢查我的代碼在下面...我能夠顯示進度條,但它不顯示任何progress..actually其沒有做任何進一步的處理...請幫助me..thanks提前無法使用線程概念顯示進度條?

//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); 
} 
} 

回答

2

我懷疑問題是,你以後您的應用程序退出創建線程- 如果您將調用CreateThread的上述消息泵可以更好地工作。

+0

只有當它顯示進度條..它(線程)可以處理它......如果它在完成任務後沒有顯示出在進度條上沒有使用顯示 – kiddo 2010-04-01 05:11:55

-3

我更喜歡使用QT了MFC。以下是我將如何使用它來回答您的問題:

使用表單設計器創建一個對話框,並使用AfxBeginThread(someFunc,param)創建一個線程。

在someFunc中,使用SendMessage來告訴對話框關於進度。

樣品在這裏: http://www.tek-tips.com/faqs.cfm?fid=5162

+0

我的問題是關於贏32,而不是MFC ...我認爲它不是正確的答案,你給..通常感謝你的回覆 – kiddo 2010-04-01 05:14:58