Toon posts:

[VB6] callback van wsock32 doet beetje vaag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een nieuw programma dat ik aan het schrijven ben, heb ik een winsok nodig. Afijn, ik heb wat gerommeld, een form en een module gemaakt en in de module een functie gezet:

Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

je kent het wel, deze hook je dan aan form1 met setwindowlong en de callbacks lopen via die functie. Daaruit de calls pikken die van wsock zijn en het komt allemaal wel goed. Maar... nu wil ik de hele sock in een class module laten lopen, omdat ik met meerdere sockets ga werken en niet de callbacks van XX sockets door 1 function wil krijgen. Dus ik plep die functie in mn class module, en doe WSAAsyncSelect(s, AddressOf WindowProc, ByVal 1025, ByVal Ops). De Form is niet meer gehooked, want dat deed ik alleen maar voor de winsock callbackjes. Maar nu komen de callbacks niet meer door :?

Ook in de ouwe situatie (Form1 en Module1 met de windowproc erin) waarin het nog allemaal werkte wil het niet op deze manier werken (ipv gehookte form de wsaasyncselect direct verwijzen naar de functie)

iemand een idee hoe ik dit op moet lossen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

WSAAsyncSelect verwacht een window handle, niet een window procedure. Je kunt geen eigen proc opgeven (dan zul je een eigen window moeten maken met die unieke windowproc, dan kan het wel)

Hmm, er was geloof ik een manier om een window te maken puur voor het afhandelen van window messages, precies wat jij wilt dus, maar ik kan het zo snel even niet vinden

.edit: ah hier
Message-Only Windows
A message-only window enables you to send and receive messages. It is not visible, has no z-order, cannot be enumerated, and does not receive broadcast messages. The window simply dispatches messages.

To create a message-only window, specify the HWND_MESSAGE constant or a handle to an existing message-only window in the hWndParent parameter of the CreateWindowEx function. You can also change an existing window to a message-only window by specifying HWND_MESSAGE in the hWndNewParent parameter of the SetParent function.

To find message-only windows, specify HWND_MESSAGE in the hwndParent parameter of the FindWindowEx function. In addition, FindWindowEx searches message-only windows as well as top-level windows if both the hwndParent and hwndChildAfter parameters are NULL.

[ Voor 54% gewijzigd door .oisyn op 19-02-2004 18:05 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
hmm, klinkt wel interessant, maar als ik dan zoveel windows moet gaan maken als het aantal sockets, is het misschien toch makkelijker om alles door 1 procedure te laten vloeien. dan maar voor elke sock een unieke uMSG ipv WINSOCKMSG :)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Ik vraag me in deze gevallen meteen af wat nog het voordeel van VB is boven een taal die makkelijker met de win32 API overweg kan.

Wat was jou overweging om hiervoor VB te gaan gebruiken ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
ik ben met BASIC opgegroeid en ik vind het gewoon lekker werken. Als VB geen API calls kon, zou ik het overigens niet gebruiken!
De laatste tijd heb ik veel in java zitten rommelen, dus daarom wou ik het objectgeorienteerd aanpakken. Inmiddels heb ik mijn windowproc zodanig aangepast dat ie zoekt welk object de sock heeft die met de wParam overeenkomt, maartoch... het is geen volledig onafhankelijk object meer door die callback omleiding.

Verwijderd

uhm, je kan ook gewoon de ocx van winsock pakken... werkt een stuk makkelijker

Verwijderd

Topicstarter
doet het niet en heeft het nooit gedaan. zeikt over license ofzoiets. btw, ik vind die ocx 'programmeren voor watjes'. dan kan ik net zo goed gaan scripten

[ Voor 19% gewijzigd door Verwijderd op 19-02-2004 21:49 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Verwijderd schreef op 19 februari 2004 @ 21:48:
doet het niet en heeft het nooit gedaan. zeikt over license ofzoiets. btw, ik vind die ocx 'programmeren voor watjes'. dan kan ik net zo goed gaan scripten
Hahahaha, beetje vreemd wel ; Visual Basic ( iig de later versies ) is eigenlijk gebaseerd op het gebruik van componenten, die veelal in een andere taal zijn geschreven omdat het in VB een crime zou zijn ze te implementeren.

Jij vind het gebruiken van componenten voor watjes, maar VB zonder componenten is als een fiets zonder trappers: Je komt er wel mee vooruit, maar tergend langzaam.

Btw, winsock doet het prima als je ze niet dynamisch aanmaakt. ( met CreateObject dus ) en anders moet je eens naar de Licenses collection kijken

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1