Warum funktioniert das nicht.



  • LRESULT CALLBACK 
    WinProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
    {
    	switch(message)
    	{
        case WM_KEYDOWN: 
    		switch (wparam) 
    		{
    		case VK_ESCAPE: 
    			DestroyWindow(hwnd); 
    			break;
    		}
    	case WM_CLOSE:
    	case WM_DESTROY: 
    	{	
    		bRunning = false;
    		PostQuitMessage(0);
    		return 1;
    	}break;
    	default:break;
    	}//switch
    	return (DefWindowProc(hwnd, message, wparam, lparam));
    } // WindowProc
    

    Das Programm soll bei ESC beendet werden. Doch das Programm wird bei jedem Tastendruck beendet. Ich blick nicht mehr durch. 😕



  • LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
    {
       switch(message)
       {
          case WM_KEYUP: 
             switch(wparam) 
             {
                case VK_ESCAPE: 
                   DestroyWindow(hwnd); 
                   break;
             }
             return 0;
    
             case WM_DESTROY:
             {	
                bRunning = false;
                PostQuitMessage(0);	   
             }
             return 1;
       }
    
       return( DefWindowProc(hwnd, message, wparam, lparam) );
    }
    


  • ...
    case WM_KEYDOWN:
    switch (wparam)
    {
    case VK_ESCAPE:
    DestroyWindow(hwnd);
    break;
    }
    break;
    ...

    jetzt gehts. Vorher ist er bei jeden Tastendruck nach WM_DESTROY gehüpft, weil du das break vergessen hast.



  • Absolut überflüssig, Herr Illuminator!



  • Wenn eine Anwendung WM_DESTROY empfängt, sollte sie 0 und nicht 1 zurückgeben.


Anmelden zum Antworten