HANDLE von HWND



  • Hi@all,

    ich möchte gerne etwas in die Zwischenablage schreiben und hole mir das HWND auf das Feld folgendermaßen:

    HWND hWndPage = GetParent();		
    HWND hWndNummer = ::GetDlgItem(hWndPage, 1006);
    nLength = ::GetWindowTextLength(hWndNummer);//Gibt den richtigen Wert zurück.
    
    //Nun brauche ich mein Handle auf das hWndNummer um es an SetClipboardData zu übergeben.
    

    Wie Bekomme ich nun mein Handle?

    //Ich habe es über GlobalAlloc versucht
    HANDLE hNummer = GlobalAlloc(GMEM_MOVEABLE, nLength);
    
    if(!OpenClipboard())
    {
       AfxMessageBox("Zwischenablage kann nicht geöffnet werden");
       return res;
    }
    // Aktuellen Inhalt der Zwischanablage löschen
    if(!EmptyClipboard())
    {
       AfxMessageBox("Zwischenablage kann nicht geleert werden");
       return res;
    }
    // Daten eintragen
    if(::SetClipboardData(CF_UNICODETEXT, hNummer) == NULL)
    {
       AfxMessageBox("Zwischenablage konnte nicht gesetzt werden");
       CloseClipboard();
       return res;
    }
    //So bekomme ich aber nur binäre Werte in die Zwischenablage
    //möchte aber, das dort der Text reingegeben wird, welcher in dem Feld 
    //hWndNummer steht.
    

    Gruß

    CrazyPlaya


  • Administrator

    Also meiner Meinung nach wird in der Zwischenablage nichts stehen oder irgendwelchen veralteten Kram. Du schreibst nämlich nichts in deinen angelegten Globalen Speicher!

    Wie es geht?
    Ein Beispiel hier:
    http://www.codeguru.com/cpp/w-p/clipboard/article.php/c3011/
    Hier drin hat es auch noch eines:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/clipboard/usingtheclipboard.asp

    Und übrigens, du benutzt die WinAPI und keine MFC. Daher gehört dein Thread eigentlich eher dort hin.

    Grüssli


Anmelden zum Antworten