In SpinBox Buttonklick simulieren



  • also ComboBoxen per SendMessage äneren hat alles gefruchtet
    auch Texteinfuegen in die SpinBoxen hat gefruchtet

    ich habe mehrer SpinBoxen die Anwendung die ich fersteuerer ist so gestrickt
    das sie Ihre Berechnung durchfuehrt sobald der User Daten in der SpinBox haendisch einträgt. Genau das will ich simulieren aber ich kriege die
    das TEXT_VALUE_CHANGE-CallbackMethode einfach nicht in gang!!!

    Hier der Code

    hwndDlgItem = FindWindowEx(hwndDlg,0,"TSpinEdit",0);
        if(hwndDlgItem != NULL)
        {
           cout << endl << "Ein TSpinEdit gefunden" << endl;             
           hwndDlgItem = FindWindowEx(hwndDlgItem,0,"TSpinButton",0);
           if(hwndDlgItem != NULL)  
           {   // Ich komme genau bis hier durch was auch Sinn und zweck macht und so sein soll, "hwndDlgItem" habe ich überprüft per WinSpector stimmt auch       
              cout << "Versuche Klicksimulation auf einen TSpinButton" << endl;            
    
    // Es kann eigentlich nur hieranliegen das ich den Klick auf die SpinBox nicht richtig ansteuere, hwndDlgItem ist wie gesagt ein HWND auf eine TSpinButton einer SPinBox Handle sind korrekt und mit WinSpector überprüft
    
              SendMessage (hwndDlgItem, WM_KEYUP, (WPARAM) WM_USER,0); // muss fuer TSpinButton KEY_UP anders aussehen
              SendMessage (hwndDlgItem, WM_KEYDOWN, (WPARAM) WM_USER,0);    //muss fuer KEY_DOWN anders aussehen
           }
        }
    

    hmm an den zwei SendMessage tappe ich im Dunkel momentan 😕
    hmm und fuer google ist mir noch kein gelungener Suchquery eingefallen 😞

    Im Petzold sowi der API-Refernez habe ich mom auch noch nix gefunden!



  • hwndDlgItem = FindWindowEx(hwndDlg,0,"TSpinEdit",0);
        if(hwndDlgItem != NULL)
        {
    
           cout << endl << "Ein TSpinEdit gefunden" << endl;             
           hwndDlgItem = FindWindowEx(hwndDlgItem,0,"TSpinButton",0);
           if(hwndDlgItem != NULL)  
           {          
              cout << "Versuche Klicksimulation auf einen TSpinButton" << endl;            
              SendMessage (hwndDlgItem, WM_KEYDOWN, VK_UP, 0);
              SendMessage (hwndDlgItem, WM_KEYDOWN, VK_DOWN, 0);  
           }
        }
    

    goil jup jetzt duds 🙂


  • Mod

    Ist es nicht einfach WM_HSCROLL bzw. WM_VSCROLL direkt an das Parent zu senden. Diese nachrichten sind verantwortlich für die Änderungen und werden von einem Up/Down Control auch erzeugt.



  • hmm werde das auch mal ausprobieren. aber obiges hat schon gefruchtet und funzt!

    Bei meinem Teil ist das so Du hast Instanzen von TSpinEdit auf nem GUI
    Wenn man sich die laufende Anwendung mit WinSpector anguckt im WinSpector
    hat eben jedes TSpinEdit als Child einen TSpinButton.

    Da ich diese/deren HWND ueber des HWND der TSinEdit mit FindWindowEx

    verifizieren konnte habe ich SendMessage kurzerhand eben das direkte HWND
    des jeweiligen TSpinButton zugeschoben. Und das sorgt fuer den Effekt den ich mir vorgestellt habe.



  • Martin Richter schrieb:

    Ist es nicht einfach WM_HSCROLL bzw. WM_VSCROLL direkt an das Parent zu senden. Diese nachrichten sind verantwortlich für die Änderungen und werden von einem Up/Down Control auch erzeugt.

    Hmm *gruebel* wie gesagt ich bin kein Hardcorefreak in Sachen WinAPI
    aber WM_HSCROLL undWM_VSCROLL....

    WM_HSCROLL horizontal scrolling

    WM_VSCROLL vertical scrolling

    ist das nicht eher fuer Scrollbars gedacht. Wenn man es fuer den Fall des SpinButton bedrachtet müsste dieser nur WM_VSCROLL verstehen.

    mfg sclearscreen



  • Martin Richter schrieb:

    Ist es nicht einfach WM_HSCROLL bzw. WM_VSCROLL direkt an das Parent zu senden. Diese nachrichten sind verantwortlich für die Änderungen und werden von einem Up/Down Control auch erzeugt.

    Aber diese beiden Messages scheinen wohl eher nur anwendbar auf ScrollBars oder?

    Ich bin kein HardcoreGuru in WinAPI! Aber die beiden Messages tragen das doch schon in Ihrer Syntax deshalb meine Vermutung. Ein TSpinButton koennte so denke ich bestenfalls was mit WM_VSCROLL anfangen. Aber da muesste man diesem dann auch noch eine Nachricht über LPARAM oder WPARM schicken damit der weiss
    wohin er drehen soll nach unten oder nach oben? 😕

    Also eine funktionierende Lösung habe ich bereits mit der man vollkommen leben kann.

    Aber wäre nett wenn sich Eine/Einer mal villeicht darauf Antwort hätte.

    Gruss sclearscreen 🙂


  • Mod

    Wenn wir über Up/Down Controls von Windows reden, versenden die eindeutig WM_VSCROLL/WM_HSCROLL Nachichten, nachzulesen hier:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceui40/html/cerefudn_deltapos.asp

    Zitat:
    The UDN_DELTAPOS message is sent before the WM_HSCROLL message, which actually changes the control's position. This enables you to examine, accept, modify, or reject the change.



  • man lernt nie aus 🙂

    ich sagte ja bereits bin kein WinAPI-Guru!

    Gruss sclearscreen 👍


Anmelden zum Antworten