Hello
I'm using SFML with the Win32 Api.
I followed the tutorial "Integrating to a Win32 interface" but changed it :
HWND View1 = CreateWindow(szClassName, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, 20, 20, 800, 800, hwnd, NULL, hThisInstance, NULL);
sfview1.SetView(View1);
HWND View2 = CreateWindow(szClassName, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, 1320, 20, 400, 800, hwnd, NULL, hThisInstance, NULL);
sfview2.SetView(View2);
Instead of "STATIC" I'm using the same string for the main app and for the two sfml views.
This way I can handle events in SFML and main Winproc.
My main loop looks like this :
while (messages.message != WM_QUIT)
{
if (PeekMessage(&messages, NULL, 0, 0, PM_REMOVE))
{
// If a message was waiting in the message queue, process it
TranslateMessage(&messages);
DispatchMessage(&messages);
}
else
/*if (!pause) */ // Why sfml is freezing with this ???
{
sfview1.act();
sfview2.act();
}
Sleep(1 - (DWORD)Sleeptimer.GetElapsedTime());
Sleeptimer.Reset();
}
As you can see I'm using an global bool to stop drawing both subapps.
It can be changed through WinProc of the main app :
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
switch (umsg)
{
// [...]
case WM_KILLFOCUS :
{
pause = true;
return 0;
}
case WM_SETFOCUS :
{
pause = false;
return 0;
}
// [...]
}
return DefWindowProc(hWnd, umsg, wParam, lParam);
}
So , I click on the menu in order to pop up an dialog and wait 2 secs and the whole thing freezes.
I noticed this also when I build the sfml app without win32-Api.
If you drag the window for a certain time sfml freezes either.
Is there a way while catching the lostfocus event to tell sfml to stop actually ?
I'm using 1.6 : D
Thanks in advance !
EDIT :
Ok I've got it working
The sleeptimer was the problem - I can't use it, when sfview1/2 lost their focus.