Buttonhandle in WndProc



  • Hallo

    Ich bin noch ein ziemlicher noob in Sachen WinAPI aber ich hab da ein Problem für das ich irgendwie keine Lösung finde:

    Ich will, dass sich der Text eines Buttons ändert, nachdem ich ihn angeklickt habe.
    Dazu fange ich in der WndProc vom parentwindow die BN_CLICKED message ab und öffne von dort eine function, wo ich SetWindowText(hWnd, "TEXT"); sende
    ...das Problem das ich nun habe ist aber dass ich den Buttonhandle nicht habe und auch nicht weiß wie ich am besten dran komme...ich habe in der msdn schon gelesen dass der handle bei der BN_CLICKED msg als LPARAM übergene wird aber wie wandle ich den dann in ein HWND um? Oder bin ich da komplett auf dem Holzpfad?

    Ich hoffe ihr könnt mir helfen ^^" falls diese Frage zuvor schonmal gestellt wurde tut es mir Leid...ich wusste nicht wonach ich hätte suchen sollen.



  • Das Handle wird von CreateWindowEx zurückgegeben.

    Wenn Du den Button in einem Dialog erstellst, wird der Button über ein ID angesprochen.



  • Arno Nym schrieb:

    ... aber wie wandle ich den dann in ein HWND um?

    Einfach casten :

    SetWindowText ((HWND)lParam,...);
    


  • Ah der cast hats gebracht ^^ wenn ich gewusst hätte dass es so einfach is xDD
    Vielen Dank!



  • merker schrieb:

    Arno Nym schrieb:

    ... aber wie wandle ich den dann in ein HWND um?

    Einfach casten :

    SetWindowText ((HWND)lParam,...);
    

    is unnötig.



  • @Elektronix: Stimmt, aber wenn er mit Dialogen arbeitet (geht aus seinem Post net hervor), wird das nix 😉 .

    haterskater schrieb:

    merker schrieb:

    Arno Nym schrieb:

    ... aber wie wandle ich den dann in ein HWND um?

    Einfach casten :

    SetWindowText ((HWND)lParam,...);
    

    is unnötig.

    Wenn er es so machen will, ist der Cast nicht unnötig!

    Alternativ kannst Du aber auch mittels GetDlgItem(hParent, ID_DES_BUTTONS) den Handle ermitteln.

    Letzteres ist in Dialogen üblich. Außerdem stehen auch Funktionen wie SetDlgItemText zur Verfügung 😉 .



  • Ja ich arbeite mit Dialogen ^^
    Die Variante mit dem GetDlgItem hatte ich auch versucht allerdings erfolglos weil ich da noch nich wusste dass der Parenthandle ja der WndProc übergeben wird und deswegen konnte ich den Parent auch nich ansprechen xD

    jaja ich muss noch einiges dazu lernen



  • CodeFinder schrieb:

    @Elektronix: Stimmt, aber wenn er mit Dialogen arbeitet (geht aus seinem Post net hervor), wird das nix 😉 .

    haterskater schrieb:

    merker schrieb:

    Arno Nym schrieb:

    ... aber wie wandle ich den dann in ein HWND um?

    Einfach casten :

    SetWindowText ((HWND)lParam,...);
    

    is unnötig.

    Wenn er es so machen will, ist der Cast nicht unnötig!

    Alternativ kannst Du aber auch mittels GetDlgItem(hParent, ID_DES_BUTTONS) den Handle ermitteln.

    Letzteres ist in Dialogen üblich. Außerdem stehen auch Funktionen wie SetDlgItemText zur Verfügung 😉 .

    nö is unnötig.


Anmelden zum Antworten