Въпрос за MSVC++
3 отговора
103 прегледа
Въпрос за MSVC++
Създавам (в MyApp) modaless диалогов прозорец върху текущия активен ( главен) прозорец .
След това в продължение на няколко минути се обработват данни.
Когато през тези минути се отвори прозорец на друго приложение (например Windows Explorer) и след това се затвори данните в контролите на главния прозорец на MyApp се губят(не се изобразяват), и се получава грозна картина.
Oпитвам се да превключа прозорците със SetActiveWindow на 500 милисекунди и да правя update но без резултат. Надявам се да ме ориентирате как да реша този проблем.
Ето и въпросната част от кода:
//class WaitBox : public CDialog
WaitBox m_dWaitBox;
HWND hMWin=m_hWnd; //ActiveWindow (МainWindow)
//HWND hMWin =::GetActiveWindow();
m_dWaitBox.Create(IDD_WAITBOX); //DoModaless();
m_dWaitBox.m_wndProgress.SetRange(0,MaxProg);
m_dWaitBox.ShowWindow(SW_SHOWNORMAL);
.
.
{
//do something ~ 3 minuti
.
m_dWaitBox.m_wndProgress.SetPos(i);
m_dWaitBox.UpdateWindow(); //image O'K
//every 500ms .
HWND SetActiveWindow( hMWin);
UpdateData(FALSE); //// no effect not view image
.
}
if(m_dWaitBox )
{ m_dWaitBox.DestroyWindow();
}
След това в продължение на няколко минути се обработват данни.
Когато през тези минути се отвори прозорец на друго приложение (например Windows Explorer) и след това се затвори данните в контролите на главния прозорец на MyApp се губят(не се изобразяват), и се получава грозна картина.
Oпитвам се да превключа прозорците със SetActiveWindow на 500 милисекунди и да правя update но без резултат. Надявам се да ме ориентирате как да реша този проблем.
Ето и въпросната част от кода:
//class WaitBox : public CDialog
WaitBox m_dWaitBox;
HWND hMWin=m_hWnd; //ActiveWindow (МainWindow)
//HWND hMWin =::GetActiveWindow();
m_dWaitBox.Create(IDD_WAITBOX); //DoModaless();
m_dWaitBox.m_wndProgress.SetRange(0,MaxProg);
m_dWaitBox.ShowWindow(SW_SHOWNORMAL);
.
.
{
//do something ~ 3 minuti
.
m_dWaitBox.m_wndProgress.SetPos(i);
m_dWaitBox.UpdateWindow(); //image O'K
//every 500ms .
HWND SetActiveWindow( hMWin);
UpdateData(FALSE); //// no effect not view image
.
}
if(m_dWaitBox )
{ m_dWaitBox.DestroyWindow();
}
Re: Въпрос за MSVC++
Sloji izchislenieto v druga niska i taka otzivcivostta kum suobsteniq (vklucitelno i kum WM_PAINT) ste se zapazi
Re: Въпрос за MSVC++
hmm da, tva s prekysvaneto na smetkite za ui update mi se vizhda umriala rabota
pogledni msdn-a i razberi kakvo e worker thread i si pravi smetkite tam
nai-golemia raver [линк]
pogledni msdn-a i razberi kakvo e worker thread i si pravi smetkite tam
nai-golemia raver [линк]