_beginthread



  • @King

    zu 1) project-settings auf multithreading stellen /MT

    habe ich gemacht.. danach ging es auch.. er stürzte nur in Laufzeit ab nicht beim erstellen des threads.. sondern irgendwo danach (auch nicht in der ThreadFunktion) mit den beiden Libs geht es aufeinmal...

    @mad-smiley

    m_hserverconThread = (HANDLE)_beginthreadex(0, NULL,  WnSckConnect, (void*)0, 0, 0);
    

    www.kinderkanal.de

    @RockNix
    Habe am Anfang auf /MT gestellt.. die Compilerfehler waren dann auch weg.
    Trotzdem Danke, ohne deine guten Ratschläge wäre ich nicht drauf gekommen 🙂

    aber nochmal zu was anderem.. wenn der thread nun Init() aufruft.. die dadrin entstehenden Buttons .. exisitieren zwar (HWND scheint ok zusein) sie sind aber nicht sichtbar.. das passiert nur wenn man diese funktion im Thread aufruft.

    Auch SetWindowPos(), EnableWindow(), ShowWindow() etc bringt nix.. sogar GetWindowRect bringt nur x=0,y=0 usw.

    da bin ich auf das Stichwort volatile gestoßen.. hat dies damit etwas zutun?



  • personenkult schrieb:

    mit den beiden Libs geht es aufeinmal...

    Du linkst mit /NODEFAULTLIB?

    (Beim VC6: Projekt->Einstellungen->Linker->Allgemein die CheckBox 'Alle Standardbibl. ignorieren')



  • Nein die Checkbox ist aus, wenn ich sie anmachen hagelt es compilerfehler



  • personenkult schrieb:

    , wenn ich sie anmachen hagelt es compilerfehler

    Garantiert nicht. Aber lassen wir das ...



  • personenkult schrieb:

    Nein die Checkbox ist aus, wenn ich sie anmachen hagelt es compilerfehler

    höchstens Linkerfehler.



  • doch.. Nichtaufgelöste externe Symbole

    z.B.

    chat.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp

    chat ist eine Klasse von mir

    @du noob.. ja Linkerfehler
    anonymität is was feines oder?

    achja.. hat diese behinderte Sprache nicht ein neues Hightlight bekommen "nap" ?

    "wie uncool"



  • chat.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp
    

    die funktion wird NUR in der debug version von vc++ miteingebaut, sie dient dazu den stack zur laufzeit zu checken und vor überläufen durch zu grosse datenmengen zu schützen, daher auch der name chk=check und esp=stackpointer ...

    aber nochmal zu was anderem.. wenn der thread nun Init() aufruft.. die dadrin entstehenden Buttons .. exisitieren zwar (HWND scheint ok zusein) sie sind aber nicht sichtbar.. das passiert nur wenn man diese funktion im Thread aufruft.

    habe ich das richtig verstanden, wenn du init() auskommentierst läuft das dingen ? dann ist der nächste schritt doch klar. die init() durchsteppen mit dem debugger und schauen, bei welcher zeile/funktion das dingen abschwirrt. und vielleicht wirfst du auch mal einen blick auf den call-stack, da kann man mitunter auch noch ein paar dinge in erfahrung bringen. und welche callback benutzt du für deine "fenster", die du im thread erzeugst ? die aus dem haupt-thread zu nutzen ist nicht, da muss dann eine eigene her.



  • nee nee.. es funktioniert nun weil ich die beiden LIB's von Hand eingebunden habe.

    Init() wird auch aufgerufen und alles funktioniert. Das Problem:

    In Init() werden Buttons erstellt .. die dann im Fenster angezeigt werden. Init() wird auch ohne Probleme durchlaufen und alles wird erstellt (Rückgabewerte stimmen)

    Wenn ich diese Init() Funktion außerhalb des Threads aufrufe, dann sieht man die buttons. Wenn ich die Init() Funktion im thread aufrufe, dann läuft er auch ohne Probleme überall durch, nur sieht man die buttons nicht. als ob die Ihren Gültigkeitsbereich verloren haben.

    Wenn man sich dann ein HWND vom button nimmt.. ist der auch != 0x000000 sondern es steht ein Wert drin. Aber bei SetEnableWindow() oder ShowWindow() passiert nix.. auch SetWindowPos funktioniert nicht. Und bei GetWindowPos() gibt er im RECT 0 0 0 0 ...
    Wenn ich Init nun aber nicht im Thread aufrufe, sondern bevor ich den Thread kreire, dann sieht man die buttons und man kann sie auch positionieren...

    verzweiflung macht sich breit..



  • jo, mach für die gui EINEN thread. sonst funzt es nicht.



  • den aufruf vom hauptprog in ein Thread packen?!?!?


Anmelden zum Antworten