fisianer2009 Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 Mit Klassen haben die nichts zu tun. Die stammen alle aus der Windows-API, die ist eine reine C-API. Windows Data Types (Windows) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 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: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 ah ok... das muss so sein weil CreateWindow diesen Typ zurückgibt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 Kann man den Thread nicht als "erledigt" markieren? ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 ah ok... das muss so sein weil CreateWindow diesen Typ zurückgibtNein, 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(); undint a = foo(); Im ersten Fall muss die Variable a vorher bereits deklariert worden sein, im zweiten Fall wird sie an dieser Stelle definiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 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(); undint 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 Super Danke. darf ich dieses Forum dann auch für (eventuell) weitere Fragen in Benutzung nehmen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 Ja, dafür sind wir ja da :] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 und wenn man eine eigene funktion schreibt, dann kann man theoretisch auch ein eigenen datentyp erstellen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 und wenn man eine eigene funktion schreibt, dann kann man theoretisch auch ein eigenen datentyp erstellen? Du kannst immer eigene Datentypen erstellen, auch wenn du keine eigene Funktion schreibst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 also wenn ich eine eigens geschrieben klasse instanziere dann benutze ich ja quasi einen eigenen datentyp, richtig? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 genau Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 thanks a lot! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 Weil WM_PAINT einfach nur eine lesbare Definition für einen Zahlenwert ist. Wie wärs wenn du dir mal ein entsprechendes C Buch nimmst und das durcharbeitetst um erstmal die Grundlagen zu lernen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 hm und wo wird dieser Wert definiert?!? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 Wer lernt auch anhand der WinAPI C? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 Wer lernt auch anhand der WinAPI C?Ich befürchte, es ist noch schlimmer: Er schreibt ja von Klassen, also will er womöglich C++ lernen. @fisianer2009: Was genau willst du lernen? Die WinAPI ist ein denkbar schlechter Einstieg, wenn du C++ lernen willst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aras Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 (bearbeitet) 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 6. Juni 2012 von fisianer2009 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aras Geschrieben 6. Juni 2012 Teilen Geschrieben 6. Juni 2012 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisianer2009 Geschrieben 6. Juni 2012 Autor Teilen Geschrieben 6. Juni 2012 dank erstmal. ist aber ganz schön hartes brot :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aras Geschrieben 7. Juni 2012 Teilen Geschrieben 7. Juni 2012 Ist ja auch sehr Systemnah was du da vor dir hast. Ich hab mich vor 7-8 Jahren damit intensiv beschäftigt und seitdem nicht mehr und das wissen ist bombenfest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.