LPARAM und WPARAM



  • Hallo,
    Ich bin dabei, ein Programm zu coden, welches auf selbstdefinierte Messages was bestimmtes macht. Hab aber ein Problem : Ich will nicht für jeden Befehl ein andere Message hinschicken, sondern eine einzige Message, und dann sollen in wParam möglichst zwei weitere Parameter übergeben werden.
    Jetzt meine Frage :
    WPARAM ist ein unsigned int, einen Parameter kann ich auch mit MAKEWPARAM erstellen, aber wie teilt dieses Makro den High- und den Low-Bereich ein(50%, 50%, also 16 bit, 16 bit?)? Darf ich auch die Adresse eines char-Arrays übergeben? Oder gar die einer Struktur?
    Die gleichen Frage auch natürlich für LPARAM, ist ja ein long (auch 32 Bit), und da kann man ja auch char* übergeben (LB_ADDSTRING z.b.).

    Und überhaupt, wozu die Einteilung in unsigned int und long?
    Danke!!!



  • Ja, übergib einen Zeiger auf eine Struktur.



  • WPARAM ist ein unsigned int, einen Parameter kann ich auch mit MAKEWPARAM erstellen, aber wie teilt dieses Makro den High- und den Low-Bereich ein(50%, 50%, also 16 bit, 16 bit?)?

    jo, siehe:

    #define MAKELONG(a, b)      ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))
    

    Darf ich auch die Adresse eines char-Arrays übergeben?

    jo

    Oder gar die einer Struktur?

    jo

    und da kann man ja auch char* übergeben (LB_ADDSTRING z.b.).

    jo

    ein Zeiger ist ein Zeiger egal ob auf ein char-array, ein struct oder ein object..



  • Dank euch!!!


Anmelden zum Antworten