J'ai un programme simple MFC qui affiche le progressbar..I utilisé le code ci-dessous pour afficher la barre de progression ..Problème afficher la boîte de message dans MFC
HWND dialogHandle = CreateWindowEx(0,WC_DIALOG,L"Proccessing...",WS_OVERLAPPEDWINDOW|WS_VISIBLE,
600,300,280,120,NULL,NULL,NULL,NULL);
HWND progressBarHandle = CreateWindowEx(NULL,PROGRESS_CLASS,NULL,WS_CHILD|WS_VISIBLE|PBS_MARQUEE,40,20,200,20,
dialogHandle,(HMENU)IDD_PROGRESS,NULL,NULL);
while(FALSE == testResult)
{
MSG msg;
SendMessage(progressBarHandle, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
SendMessage(progressBarHandle,PBM_SETPOS,0,0);
ShowWindow(progressBarHandle,SW_SHOW);
Sleep(50);
if(TRUE == myCondition)//myCondition is a bool variable which is decalred globally
{
DestroyWindow(dialogHandle);
AfxMessageBox(L"Test Success");
}
}
quand je l'execute code..the ci-dessus La boîte de message s'affiche uniquement après un événement de survol de la souris. Si je déplace la souris, la boîte de message s'affichera si elle ne s'affiche pas tant que je n'ai pas déplacé la souris. Et aussi pendant que la barre de progression est en cours d'exécution si j'essaie de déplacer la fenêtre de la barre de progression .. Elle affiche un fond de fenêtre sur le lieu de déplacement et aussi dans la nouvelle région ou parfois coincée.
EDIT2: pompage de messages.
while(PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE) && (FALSE == testResult))
{
if(msg.message == WM_QUIT)
{
DestroyWindow(dialogHandle);
return TRUE;
}
SendMessage(progressBarHandle, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
SendMessage(progressBarHandle,PBM_SETPOS,0,0);
ShowWindow(progressBarHandle,SW_SHOW);
TranslateMessage(&msg);
DispatchMessage(&msg);
//return 1;
}
Vous êtes sûr de gérer les messages Windows pendant ces événements? Ce que vous avez décrit ressemble à la pompe pour le flux d'événements a cessé d'être traitée. – AlG
de cette façon le corps ne fonctionnera pas à moins qu'il y ait des messages dans la file d'attente, c'est-à-dire des messages de la souris. –