ComboBox und die Entertaste?



  • Hi! Eigentlich simpel:

    ich möchte eine MessageBox erscheinen lassen, wenn man in der ComboBox Enter drückt!

    Ich habe der ComboBox eine Prozedur zugewiesen:

    WNDPROC BROWSER_ADDR_CB;
    
    // ...
    
    BROWSER_ADDR_CB = (WNDPROC)(long)SetWindowLong(GetDlgItem(hBrowser, IDC_ADDRESS), GWL_WNDPROC, (long)BROWSERADDR);
    
    // ...
    
    LRESULT CALLBACK BROWSERADDR(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	switch(message)
    	{
    		case WM_KEYDOWN:
    		{
    			switch(wParam)
    			{
    				case VK_RETURN:
    				{
    					MessageBox(hWnd, "ENTER", NULL, MB_OK);
    					break;
    				}
    				break;
    			}
    			break;
    		}
    		case WM_GETDLGCODE:
    		{
    			return (DLGC_WANTALLKEYS);
    		}
    		break;
    	}
        return CallWindowProc(BROWSER_ADDR_CB, hWnd, message, wParam, lParam);
    }
    

    Nachdem es nicht funktionierte, habe ich das WM_GETDLGCODE hinzugefügt! Es geht immer noch nicht! Wie bekomme ich das hin??? Bitte helft. Gruß vom Chris.



  • die combobox besteht aus mehreren einzelnen controls. du musst die wndproc des edits ändern.



  • Klingt sehr, sehr logisch!
    Kannst du mir verraten, wie ich die Prozedur nicht auf das ComboBox Control, sondern auf das Edit Control der ComboBox Control verweise??

    Das wäre sehr hilfreich!
    Chris



  • hier was ganz übles:

    POINT pt;
    pt.x = pt.y = 3;
    HWND Edit = ChildWindowFromPoint(ComboBox, pt);
    

    weiß nicht ob es da ne bessere lösung gibt, um an das edit steuerelement zu kommen. 🙄



  • ich hatte es ja gerade so versucht:

    COMBOBOXINFO comboboxinfo;
    GetComboBoxInfo(GetDlgItem(hBrowser, IDC_ADDRESS), &comboboxinfo);
    BROWSER_ADDR_CB = (WNDPROC)(long)SetWindowLong(comboboxinfo.hwndItem, GWL_WNDPROC, (long)BROWSERADDR);
    

    komischer weise ohne erfolg!
    aber dein beispiel funktioniert auch!! und ist halt der alternative weg, aber wenn funktioniert, gut! *g

    DANKE 1000 MAL!



  • STOP! ⚠

    Ich hoffe du schaust hier nochmal rein. Deine Lösung ist viel viel besser.

    Es funktioniert bei dir nicht, weil du cbSize nicht setzt.

    comboboxinfo.cbSize = sizeof(COMBOBOXINFO);
    


  • JUP! Ich schau nochmal rein! Und tatsächlich, es funktioniert. Wieso komme ich auf so Dinge nie selbst 😉

    Das ist die elegantere Lösung nun!!! 2000 MAL THX!! ;))

    Kewl,
    Gruß,
    Chris


Anmelden zum Antworten