window proc maus abfangen?



  • Hallo,

    ich bastle schon seit ein paar Tagen an einem Programm dass Tastendrücke blockieren dieses funktioniert demnach sehr gut.

    Ist es möglich über den window proc auch maustasten zu blockieren, damit sie nicht mehr an ein Fenster gesendet werden?

    probiert habe ich es so:

    static LRESULT CALLBACK wnd_proc(HWND wnd, UINT umsg, WPARAM wparam, LPARAM lparam)
    {       // taste muss erneut gedrückt werden, spam verhindern
    	if ((lparam & 1073741824) != 1073741824) {
    	switch (umsg)
    	{
    			case WM_LBUTTONDOWN:
    			case WM_LBUTTONUP:
    			{
                                // alles was ich hier ausführen möchte 
                                //funktioniert, jedoch kann ich sie nicht 
                                //returnen
    
    				return 0;
    			}
    
    			case WM_SYSKEYDOWN:
    			case WM_SYSKEYUP:
    			case WM_KEYDOWN:
    			case WM_KEYUP:
    			{
    
    				int	vkey = (int)wparam;
    
    				if (vkey == VK_UP)
    				{
    				     return 0;
    				}
    
    				// nächster versuch so, erfolglos
    				if (vkey == VK_LBUTTON)
    				{
    				     return 0;
    				}
    
    				break;
    			}
    		}
    	}
            // tasten weiterleiten
    	return CallWindowProc(orig_wndproc, wnd, umsg, wparam, lparam);  
    }
    

    Mit dem Code wird LBUTTON immernoch gesendet.
    Ist das so überhaupt möglich?

    Lg Markus
    freue mich über jegliche Hilfestellung 😉



  • du willst erreichen, dass die winproc nicht mehr aufgerufen wird, wenn eine maustaste gedrückt wird? setz doch einfach eine variable.

    und was ist das?

    if ((lparam & 1073741824) != 1073741824) {
    


  • // taste muss erneut gedrückt werden, spam verhindern
        if ((lparam & 1073741824) != 1073741824) {
    

    verhindert, dass wenn ich beispielsweise die leertaste gedrückt halte, dass die aktion in den klammern mehrfach ausgeführt wird bzw. gespammt, demnach muss man die taste wieder erneut drücken..

    Lg



  • und dir ist nicht in den sinn gekommen, dass es auch andere cases geben könnte die dieses bit verwenden? von der zusätzlichen übersichtlichkeit bei der verwendung von hexadezimalzahlen einmal abgesehen.

    also ein if(!mouseclick_blocked) sollte das problem lösen.


Anmelden zum Antworten