Gleichzeitiger Rechts- und Linksclick auf Toolbar Button macht Probleme



  • Ich habe ein merkwürdiges Problem mit meiner, mittels der WINAPI programmierten, Toolbar.

    Die Toolbar funktioniert eigentlich sehr gut. Aber wenn ich mit der Maus auf einen Toolbar Button gehe, und dann gleichzzeitig die linke und die rechte Maustaste drücke, bleibt die komplette Toolbar/Gui hängen. Der Button auf dem ich geklickt habe, sieht dann so aus als wäre er dauerhaft gedrückt und wenn ich dann andere Toolbar-Buttons normal mit der linken Maustaste anklicke, kommen diese ebenfalls in diesem Zustand. Die eigentliche Funktion welche ich beim Klicken auf den Button aufrufe, wird nicht abgearbeitet.
    Den Zustand kann ich nur dadurch beenden in dem ich auf den Desktop klicke und dann wieder zu meinem Programm zurückkehre. Klicke ich dann auf einen Button, wird dieser ordnungsgemäß ausgeführt, und der visuelle normale Zustand wiederhergestellt.

    Ich habe mal fast die komplette Ereignisbehandlung bis auf die folgende Funktion (ich benutze HANDLE_MSG) auskommentiert und trotzdem taucht das Problem auf.

    LRESULT MyGui_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)		// Behandelt Nachricht WM_CREATE
    {
    	TBADDBITMAP BitmapID;
    	TBBUTTON tbButton;  
    	unsigned int ButtonCount = 0;
    
    	hToolBar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
    		WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS | CCS_NOPARENTALIGN,
    		0, 0, 0, 0,
    		hWnd, (HMENU) 1, hModuleInstance, NULL);
    	SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);       		
    
    	BitmapID.hInst = NULL;
    	BitmapID.nID = (UINT_PTR) hMyBitmap;
    	tbButton.iBitmap = SendMessage(hToolBar, TB_ADDBITMAP, 1, (LPARAM)(LPTBADDBITMAP) &BitmapID);  
    	tbButton.idCommand = IDC_MYCONTROLID;      
    	tbButton.fsState = TBSTATE_ENABLED;
    	tbButton.fsStyle = 0;
    	tbButton.dwData = 0;
    	tbButton.iString = NULL;
    	SendMessage(hToolBar, TB_ADDBUTTONS, (WPARAM) 1, (LPARAM) (LPTBBUTTON) &tbButton);
    	ButtonCount++;	
    
    	SendMessage(hToolBar, TB_SETROWS, MAKEWPARAM(ButtonCount, TRUE), (LPARAM) &ToolBarRect);
    }
    

    Hat jemand eine Ahnung was da schief geht ? Was für ein Ereignis stellt überhaupt das gleichzeitige klicken der linke und rechten Maustaste dar ?


Anmelden zum Antworten