Praesentation WinApi
-
escapete schrieb:
Hmm...
Naja, man kann es so interpretieren, das sind dann aber interne Infos...escapete schrieb:
Ich sprach von "quasi geleichzeitig" nicht von "gleichzeitig". Das mehrere Programme laufen nur auf Mehr-Prozessor-Systemen laufen, dass ist mir schon klar.
Mir ging es nicht um "gleichzeitig", sondern um "Programm"! Windows führt keine "Programme" gleichzeitig aus, sondern "Threads"!!!
escapete schrieb:
Es muss das Programm in den Cache geladen werden, sofern es das erste mal aufgerufen wird.
???? Was muss beim ersten Mal in den "Cache" geladen werden? In was für ein "Cache"?
escapete schrieb:
Es gibt doch eine Win16 API und eine Win32 API. Ich bezieh mich nur auf die Win32 API.
Die Win16 API ist genau die gleiche wie die Win32-API; aus diesem Grunde verstehe ich nicht ganz was Du damit meinst...
-
Ich sage ja nicht, dass Wikipedia recht hat. Aber irgendwoher muss ich ja meine Information beziehen.
Bzgl der Threads: Ja, ich versteh dich da.
Zum "Cache": Vor der erstmaligen Ausfuehrung wird doch ein Programm bei einem Cache-Miss in den Cache geladen. Von daher meinte ich Cache. Von daher war vielleicht die Wortwahl "installieren aller Instanzen" etwas ungluecklich gewaehlt..
Danke fuers drueberlesen! Ist denn soweit die Aufmachung und rest denn dann in Ordnung?
-
escapete schrieb:
Bzgl der Threads: Ja, ich versteh dich da.
Hmmm... wie soll ich das erklären... Windows führt keine Programme gleichzeitig aus, sondern Threads... ein Programm kann z.B. mehrere Threads haben.
Wenn z.B. das Programm A 9 Threads hat und das Programm B nur 1, so werden insgesamt 10 Threads ausgeführt. Und ganz grib gesagt, bekommt dann Programm A 9/10 der Rechenzeit und Programm B nur 1/10 (wenn alle Threads immer was tun wollen; was man ja bei Ereignisorientiertem Programmieren verhindern will).escapete schrieb:
Zum "Cache": Vor der erstmaligen Ausfuehrung wird doch ein Programm bei einem Cache-Miss in den Cache geladen. Von daher meinte ich Cache. Von daher war vielleicht die Wortwahl "installieren aller Instanzen" etwas ungluecklich gewaehlt..
Du meinst vermutlich "Page-Fault"... ein "Chach-Miss kenn ich nur von Prozessor bzw. dem File-Cache (der hat aber direkt nix mit Programmen zu tun).
-
Jochen Kalmbach schrieb:
escapete schrieb:
Bzgl der Threads: Ja, ich versteh dich da.
Hmmm... wie soll ich das erklären... Windows führt keine Programme gleichzeitig aus, sondern Threads... ein Programm kann z.B. mehrere Threads haben.
Wenn z.B. das Programm A 9 Threads hat und das Programm B nur 1, so werden insgesamt 10 Threads ausgeführt. Und ganz grib gesagt, bekommt dann Programm A 9/10 der Rechenzeit und Programm B nur 1/10 (wenn alle Threads immer was tun wollen; was man ja bei Ereignisorientiertem Programmieren verhindern will).Du scheinst nicht richtig gelesen zu haben. Da steht nicht das er dich nicht versteht, sondern das er dich versteht.
Mfg Ominion
-
Ominion schrieb:
Du scheinst nicht richtig gelesen zu haben. Da steht nicht das er dich nicht versteht, sondern das er dich versteht.
Hmmm... wenn ich es mir genau durchlesen, muss ich Dir recht geben

-
"Die Funktion WinMain" sollte man eher wenn man es mit der IHK zu tun hat in "Die Prozedur WinMain" umtaufen, denn ich habe bemerkt die Unterscheiden zwischen Funktionen und Prozeduren sehr penibel.
Dazu solltest Du nicht mit PSTR und co um dich werfen, sondern schon hinschreiben: "char *". Da Du sonst sehr schnell in die gefahr läufst und denen erklären musst was PSTR ist. (Viele kennen nur die Grundbasistypen)
Auch deshalb solltest du das APIENTRY solltest Du in __stdcall umtaufen. Bei meiner Präsentation wurde mir WINAPI regelrecht zum verhängnis, da die dann immer mehr fragen wie z. B. "Ja warum wurde das denn so gemacht usw." So kannst Du Dir das ersparen und verlierst bei einem Vortrag keine wertvolle Zeit.
Bei initialisieren der Fensterklasse, geh erst mit einem ZeroMemory dran und dann mach die einzelnen Parameter die nicht 0 sind in deiner Auflistung auf Folie 25. So ersparst Du Dir viel Platz und es sieht nicht mehr so "wuchtig" aus. Zu viel Text ist böse und nervt die Zuhörer, da sie sehr viel lesen usw.
Auch WM_USEDEFAULT bei der Positionierung, lass das bitte weg! Da kommen wieder nur "sinnlose" Fragen auf: "Wie sucht windows sich denn dann eine Position aus? Erklären Sie das mal genauer." Da gehts wieder los.
Folie 17: Vergiss das mit dem > 0, bringt nur wieder Fragen auf die nichts bringen. Wenn die GetMessage 0 zurück gibt ist sowieso ende, alles andere bedeutet: Move Baby

Folie 18: LRESULT, CALLBACK, WPARAM uvm. schreib dort die Datentypen aus, wie schon gesagt: Bringt atens viele zeitraubende Fragen auf und btens siehts etwas "Professioneller" und "Klarer" aus, das mögen die Hoschis gerne die da sitzen, wenn sie Direkt alles kapieren und nicht umdenken mussen alá "ah LRESULT ist also ein long".
Daher immer den Merksatz halten: Zeit ist Geld und je mehr Du von Zeit einsparen kannst, desto mehr Geld hast Du nachher

Die Sache mit der Klarheit ist z. B. bei der IHK Prüfung bei einem Kollegen bald zum Verhängnis geworden. Er hat fast die hälfte der Zeit damit zugebracht die Datentypen zu erklären, da die Hoschis nur Standarddatentypen kannten bzw. sich blöde gestellt haben (weil er in ihre Falle getreten ist).
Pass da ja auf. Schreibs Klar und nicht mit fremden typedefs. Da kannste auch den normalen Datentyp hinschreiben und läufst nicht in deren Fallen.
- Patrick
-
Datentyp Bedeutung
--------------------------------
BOOL - boolscher Wert (32 Bit)
BYTE - vorzeichenloser 8-Bit-Wert
COLORREF - Farbinformationen (32 Bit)
DWORD - wie unsigned int in C (32 Bit)
LONG - wie int in C (32 Bit)
LPARAM - Funktionsparameter (32 Bit)
LPCSTR - Zeiger auf konstanten String
LPSTR - Zeiger auf Sring
LRESULT - Rückgabewert von Funktionen (32 Bit)
UINT - unsigned int
WNDPROC - Zeiger auf eine Windowsfunktion
WORD - unsigned short
WPARAM - Funktionsparameter (16 Bit)(c) http://pronix.linuxdelta.de/C/win32/win32_1.shtml#4
Kann ich mich dann auf die beziehen?
-
escapete
Dafür das LONG schonmal nicht "das selbe wie int" ist, würde ich sagen: Nein.Schreibe es klar und deutlich hin, so ersparst Du Dir Arbeit und Fragen und musst Dich nicht auf jeden Kram zurückbeziehen.
-
escapete schrieb:
LPCSTR - Zeiger auf konstanten String
LPSTR - Zeiger auf SringNaja, die Linux Quellen mal wieder...
In Windows gibt es i.d.R. nur einen LP[C]TSTR, der dann auch UNICODE kann... ein LP[C]STR kann nur ANSI...
-
Patrick schrieb:
"Die Funktion WinMain" sollte man eher wenn man es mit der IHK zu tun hat in "Die Prozedur WinMain" umtaufen, denn ich habe bemerkt die Unterscheiden zwischen Funktionen und Prozeduren sehr penibel.
Erstens ist bei C(++) alles eine Funktion und zweitens könntest du bestenfalls eine void-Funktion als "Prozedur" bezeichnen - und das trifft auf WinMain() nicht zu (die gibt einen int zurück). Also ist "die Funktion WinMain" schon korrekt.