Въпрос за MSVC++

3 отговора 103 прегледа
#1

Въпрос за 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();
}

Отговор
в отговор на VSQ #2

Re: Въпрос за MSVC++

Sloji izchislenieto v druga niska i taka otzivcivostta kum suobsteniq (vklucitelno i kum WM_PAINT) ste se zapazi

Отговор
в отговор на VSQ #3

Re: Въпрос за MSVC++

RTFMSDN :)

1. UpdateData
2. UpdateWindow

Отговор
в отговор на VSQ #4

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 [линк]
Отговор