Avatar billede angelod Novice
26. august 2003 - 07:24 Der er 2 kommentarer og
1 løsning

Subclassing af komponent i mIRC dialog

Okay, nu giver jeg altså op! Jeg kan simpelthen ikke finde den information jeg leder efter, så jeg håber på at en Ekspert herinde kan finde ud af det.

Mit spørgsmål er egentligt 2-delt, så der er en point-fordeling imellem dem. Alt dette arbejder ud fra DragonZap's MDX (mIRC Dialog eXtensions), som kan findes her: http://www.dim-bulb.net/~dragonzap/dlls/ (nær bunden)

For at kunne forstå hvad jeg mener ordentligt, skal man nok have et kendskab til hvad MDX egentlig gør.


Spørgsmål 1: 130 point
Hvordan finder jeg hWND på en kontrol/komponent i en mIRC dialog? På en eller anden måde kan det lade sig gøre at finde dette ud fra det ID man giver kontrollen. DragonZap's DLL kræver at man kalder en funktion først og fremmest (MarkDialog), som så forbereder denne dialog til at kunne subclasses af MDX.

Jeg formoder denne forberedelse har noget med sagen at gøre, men jeg kan bare ikke se hvad. Jeg har prøvet at kigge lidt på mIRC dialoger med MS Spy++, og kan ikke finde noget sted hvor ID'et umiddelbart kan findes. Jeg håber folk forstår hvad jeg mener med dette, og at en eller anden kan svare mig på det, da det er ret væsentligt for overhovedet at kunne komme videre med dette.


Spørgsmål 2: 70 point
Hvordan foretager jeg "overskrivelse" af den oprindelige komponent? Jeg er med på at man i subclassing skal bruge SetWindowLong for at ændre på den WndProc der håndterer beskederne, men hvis man kigger på MDX dialogerne, så er der tale om helt andet udseende i mange tilfælde. Hvordan gøres dette?
Avatar billede mjohansen Nybegynder
26. august 2003 - 09:37 #1
Sp1:
Uden at kende dit control library, så kan jeg kun sige at prøv at lege lidt med WinSight32 (det hedder den vist i Delphi 5). Her kan du se alle vinduer og deres children og dermed controls, og deres Window Class Names og IDer!
Herefter kan du så selv skrive lidt kode der traverserer træet med bl.a. FindWindow funktionen.
Avatar billede angelod Novice
26. august 2003 - 09:54 #2
WinSight32 viser ikke mere information end Spy++, den viser det blot lidt mere overskueligt. Jeg kan dog stadig ikke se sammenhængen mellem mIRC ID'et, og de tal der står i WinSight32.
Avatar billede angelod Novice
26. august 2003 - 20:00 #3
Jeg fik svaret på et af spørgsmålene af en fyr på et andet forum, derfor lukker jeg, og opretter et nyt der er mindre specifikt for denne sag.

Løsningen jeg fik, var på Spørgsmål 1, og noget jeg havde overset helt og aldeles, nemlig at der var et såkaldt "Control ID" som mIRC selv sætter. Ved at tage ID'et, og lægge 6000 til, kan man finde hWND ved hjælp af funktionen GetDlgItem().
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester