PeekMessage



  • Hallo zusammen!
    kann mir jemand sagen, was die Fkt. PeekMessage genau macht, wer Translate und Dispatch auswertet?

    volatile int nTemp;
    
    	for (m_nCount = 0; m_nCount < nMaxCount; m_nCount++)
    	{
    		for (nTemp = 0; nTemp <1000; nTemp++){
    
    			//verbraucht CPU-Zyklen
    		}
    
    		if(::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)){
    			::TranslateMessage(&message);
    			::DispatchMessage(&message);
    		}
    	}
    

    Danke!



  • Eine Message aus der Queue holen, bzw. FALSE zurückgeben wenn keine mehr da ist.

    TranslateMessage übersetzt Keycodes (WM_KEYDOWN) in WM_CHAR messages.

    DispatchMessage schickt die (evtl. modifizierte) Message weiter an die WNDPROC des HWND's das in der MSG als empänger angegeben ist.

    Die Schleife bearbeitet also alle messages die in der Queue des entsprechenden threads zur Zeit anstehen.
    Das wird üblicherweise gemacht um bei längeren Rechenoperationen etc. Fenster neu malen zu lassen, ohne daß man eine 2. Thread braucht.
    ist aber nicht ganz ungefährlich.


Anmelden zum Antworten