Zum Inhalt springen

Noob Frage - Komische Wörter vor der Variable


Empfohlene Beiträge

Hallo zusammen,

ich bin totaler C++ Noob. Habe eine Verstädnisfrage:

z.B.:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{
oder:
HWND hWnd = CreateWindow(

Was bedeuten diese großgeschriebene Wörter HWMD, UINT, WPARAM, etc. genau? Ich weiß das es Datentypen sein müssten. Ist das ein spezieller der irgendwas mit Klassen zutun hat? Kann mir jemand das vielleicht näher erläutern?

MFG

FISI

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort. und was bringt mir das dass wen ich z.B. bei

HWND hWnd = CreateWindow(

nu das HWND davor gesetzt habe?

Also ich habe eine Funktion "CreateWindow" mit einigen Paramter. Diese Funktion gibt etwas zurück. Diese wird dann in die Variabel z.B. hWnd gespeichert. So, und nu setzt der Programmierer ein HWND davor. Aber warum?

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

ah ok... das muss so sein weil CreateWindow diesen Typ zurückgibt
Nein, das hat damit nichts zu tun, und ist auch nicht spezifisch für die WinAPI-Datentypen, sondern ganz allgemein.

Was ist der Unterschied zwischen

a = foo();
und
int a = foo();

Im ersten Fall muss die Variable a vorher bereits deklariert worden sein, im zweiten Fall wird sie an dieser Stelle definiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, das hat damit nichts zu tun, und ist auch nicht spezifisch für die WinAPI-Datentypen, sondern ganz allgemein.

Könnte ich jetzt auch statt HWND auch zB Char benutzen?

Was ist der Unterschied zwischen

a = foo();
und
int a = foo();

Im ersten Fall muss die Variable a vorher bereits deklariert worden sein, im zweiten Fall wird sie an dieser Stelle definiert.

Mir gehts nicht darum ob es deklariert ist oder nicht. Mir gehts nur darum was dieses HWND bedeutet. Char, Int, Float, BOOL usw. sind mir geläufig. Dein Link sagte mir das es ein "handler" ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte ich jetzt auch statt HWND auch zB Char benutzen?
Der Typ muss schon auf den Rückgabetyp der Funktion passen.

Mir gehts nicht darum ob es deklariert ist oder nicht.
Das ist aber der Unterschied zwischen Davorschreiben und nicht Davorschreiben.

Mir gehts nur darum was dieses HWND bedeutet.
HWND ist ein Handle auf ein WiNDow.

Ein Handle ist ganz allgemein ein Verweis auf eine Ressource, um deren Verwaltung du dich nicht kümmern sollst. In diesem Fall kümmert sich Windows darum. Und immer, wenn Windows mit dem Fenster, zu dem dieses Handle gehört, etwas tun soll, musst du dieses Handle angeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, habe eine weitere Frage betreffend:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    PAINTSTRUCT ps;

    HDC hdc;

    TCHAR greeting[] = _T("Hello, World!");


    switch (message)

    {

    case WM_PAINT:

        hdc = BeginPaint(hWnd, &ps);


        // Here your application is laid out.

        // For this introduction, we just print out "Hello, World!"

        // in the top left corner.

        TextOut(hdc,

            5, 5,

            greeting, _tcslen(greeting));

        // End application-specific layout section.


        EndPaint(hWnd, &ps);

        break;

    case WM_DESTROY:

        PostQuitMessage(0);

        break;

    default:

        return DefWindowProc(hWnd, message, wParam, lParam);

        break;

    }


    return 0;

}

Das Case fragt "message" ab, welches vom Typ UINT ist. Aber UINT ist ein unsigned Integer. wie kann es sein er was tut wenn z.B. der Fall "WM_PAINT" ist?!?! Also irgendwie versteh ich nicht wieso er bei WM_PAINT z.B überhaupt reinspringen würde wenn doch eigentlich nach Zahlen (

The range is 0 through 4294967295 decimal
) abgefragt wird?!?

Also manchmal hängst doch nur ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

In der windows.h werden diese Windowsspezifischen Datentypen (z.B. HWND), Strukturen(z.B. PAINTSTRUCT), Konstanten(WM_PAINT) etc. definiert.

Die aktuelle windows.h ist immer in der aktuellen Windows SDK enthalten.

ah ok. und woher weiß ich welchen Wert die Konstante WM_PAINT hat, z.B. "1" ?

--> ist das die Lösung meiner Fragen? http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Messages_WM_PAINT.html ^^

Bearbeitet von fisianer2009
Link zu diesem Kommentar
Auf anderen Seiten teilen

Für den Windows-Programmierer sollte es egal sein welchen Wert die Konstante WM_PAINT hat. Wenn du ein Windows Programm in C oder C++ programmieren willst, dann musst du nur wissen, dass in Windows eine sogenannte Message Queue gibt, und dass in dieser Queue Window Messages abgesetzt werden.

Durch die Messages werden Ereignisse systemweit ausgelöst und abgefangen. Dein Windows Programm greift von der Windows Message Queue per GetMessage die Window Messages für ihn ab.

WM_PAINT löst das gesamte neu zeichnen des betroffenen Windows und der ihm untergeordneten Windows aus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...