Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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:

ah ok... das muss so sein weil CreateWindow diesen Typ zurückgibt

Kann man den Thread nicht als "erledigt" markieren? ^^

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.

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.

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.

Super Danke. darf ich dieses Forum dann auch für (eventuell) weitere Fragen in Benutzung nehmen? ;)

und wenn man eine eigene funktion schreibt, dann kann man theoretisch auch ein eigenen datentyp erstellen?

also wenn ich eine eigens geschrieben klasse instanziere dann benutze ich ja quasi einen eigenen datentyp, richtig?

thanks a lot!

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 ;)

hm und wo wird dieser Wert definiert?!?

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.

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

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.

dank erstmal. ist aber ganz schön hartes brot :/

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.