2010-04-01 4 views
0

J'essaie de montrer une barre de progression pendant que mon processus est en cours ... dans mon application, il y aura une situation où je dois lire les fichiers et les manipuler (cela prendra du temps). barre de progression pendant cette opération..la fonction particulière que j'appelle est une victoire 32 ... donc si vous vérifiez mon code ci-dessous ... je suis en mesure d'afficher la barre de progression, mais il ne montre aucune progression .. en fait, il ne fait pas processus supplémentaire ... S'il vous plaît aidez-moi .. merci d'avanceImpossible d'afficher la barre de progression à l'aide du concept de filetage?

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

Répondre

2

Je soupçonne que le problème est que vous créez le fil après vos sorties app - si vous déplacez l'appel à CreateThread dessus de la pompe, il peut fonctionner un message mieux.

+0

seulement si elle montre la barre de progression .. (thread) peut traiter à propos de il ... si ce n'est pas le cas, aucune utilisation de l'affichage dans la barre de progression après avoir terminé la tâche – kiddo

-3

Je préfère utiliser QT sur MFC. Voici comment je l'utiliser pour répondre à votre question:

Utilisez le concepteur de formulaire pour créer une boîte de dialogue, et utilisez AfxBeginThread (someFunc, param) pour créer un fil.

Dans someFunc, utilisez SendMessage pour indiquer la progression de la boîte de dialogue.

exemple ici: http://www.tek-tips.com/faqs.cfm?fid=5162

+0

ma question était à propos de gagner 32 et pas MFC ... et je pense que ce n'est pas la bonne réponse que vous avez donné..toutes les mercis pour votre réponse – kiddo

Questions connexes