Probleme mit Threads und DDE plz hlp ;=)



  • Hallo!

    Ich probiere einen DDEServer zu programmieren um mit Excel zu kommunizieren. Bisher lief alles gut und hat auch funktioniert, aber jetzt möchte ich probieren die Prozesse zum ermitteln der Daten für Excel in Threads auszulagern und von dort direkt Ergebnisse an den DDEServer zu senden. Genau dort liegt das Problem, wenn ich versuche aus dem Thread heraus Daten an den DDEServer zu schicken dann erscheinen diese in Excel nicht. Normalerweise (ohne Threads) steht sofort in Excel der aktuelle Wert der Daten, die dem Server zur Verfügung gestellt wurden. Nur wenn ich es aus dem Thread heraus probiere aktualisieren sich die Daten in Excel nicht. Ich habe mir dann die letzte Fehlermeldung des Servers ausgeben lassen und in der msdn nach einer Erläuterung gesucht. Es tritt dieser Fehler auf: "DMLERR_INVALIDPARAMETER".

    [url]http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/DataExchange/DynamicDataExchangeManagementLibrary/DynamicDataExchangeManagementReference/DynamicDataEx changeManagementFunctions/DdeGetLastError.asp?frame=true[/url]

    hier mein code:

    /////////////////////////////////////////////////
    /////////////////////////////////////////////////
    // Mein Code
    /////////////////////////////////////////////////
    /////////////////////////////////////////////////

    UINT CMeinThread(LPVOID pParam)
    {
    CMainFrame* mFrame = reinterpret_cast<CMainFrame*> (pParam);

    // Text an den DDEServer übergeben
    mFrame->m_Server.m_StringItem1.SetData("Mein Text mit Thread");
    //Fehlercode anfordern
    BOOL err = mFrame->m_Server.GetLastError();

    return 0;
    }

    void CMainFrame::OnOhnethread()
    {
    // Text an den DDEServer übergeben
    m_Server.m_StringItem1.SetData("Mein Text ohne Thread");
    //Fehlercode anfordern
    BOOL err = m_Server.GetLastError();
    }

    void CMainFrame::OnMitthread()
    {
    AfxBeginThread(CMeinThread, this);
    }

    //////////////////////////////////////////////////
    //////////////////////////////////////////////////
    //Ende meines Codes ;=)
    //////////////////////////////////////////////////
    //////////////////////////////////////////////////

    Ich freue mich über jede Hilfe! 🙂

    mfg ExElNeT


Anmelden zum Antworten