lpszClassName int WNDCLASS



  • hola leute

    was passiert eigendlich, wenn ich ein fenster mit einem schon bestehenden lpszClassName erzeuge ? ist es dem system egal ?
    und wie kann ich rausfinden ob ein bestimmter classname schon registriert ist ?

    Meep Meep



  • Zur ersten Frage: Ja, das ist dem System egal. Nur, daß dem Fenster die selbe WndProc zugeordnet ist wie dem ersten Fenster der gleichen Klasse. Die Fenster unterscheiden sich nur durch das hWnd und durch die Parameter bei CreateWindow().
    Zur 2. Frage: Versteh ich nicht. Du erzeugst die Fenster selbst, also mußt Du doch wissen, welche Klasse registriert ist.



  • re

    angenommen auf meinem rechner laeuft ne software die ein control mit dem classname xyz123 registriert hat. nun moechte ich den selben namen fuer ein control verwenden.
    wie sieht es da dann aus ?

    Elektronix schrieb:

    Nur, daß dem Fenster die selbe WndProc zugeordnet ist wie dem ersten Fenster der gleichen Klasse.

    da bekomme ich dann bei meinem control doch ein problem oder ?

    Meep Meep



  • Meep Meep schrieb:

    re

    angenommen auf meinem rechner laeuft ne software die ein control mit dem classname xyz123 registriert hat. nun moechte ich den selben namen fuer ein control verwenden.

    Warum nicht? Die Namen der Controls sind für jede Anwendung individuell. Gleiche Namen oder IDs bei verschiedenen Programmen stören sich nicht, dafür sorgt das OS. Sonst könnte man nie die gleiche Anwendung mehrmals aufrufen.

    wie sieht es da dann aus ?

    Elektronix schrieb:

    Nur, daß dem Fenster die selbe WndProc zugeordnet ist wie dem ersten Fenster der gleichen Klasse.

    da bekomme ich dann bei meinem control doch ein problem oder ?

    Meep Meep

    Nein. Die Frage ist nur, an welches Fenster Deine WM_Nachrichten gehen. Das Fenster wird durch das hWnd identifiziert und kann auch damit angesprochen werden. Nur mußt Du für ein zweites Fenster der gleichen Klasse keine neue CALLBACK WndProc schreiben, sondern bearbeitest die Funktionen und Nachrichten für das zweite Fenster in der ersten WndProc.



  • Elektronix schrieb:

    Nur mußt Du für ein zweites Fenster der gleichen Klasse keine neue CALLBACK WndProc schreiben

    gilt das systemweit oder nur innerhalb eines prozesses ?
    weil sonst wuerde ja eventuell eine falsche WndProc aufgerufen werden, falls von einer anderen software der classname schon registriert worden war.

    sorry das ich mich da bloed anstelle, aber irgendwie krieg ich das in meinem kopf nicht auf die reihe

    Meep Meep



  • Meep Meep schrieb:

    Elektronix schrieb:

    Nur mußt Du für ein zweites Fenster der gleichen Klasse keine neue CALLBACK WndProc schreiben

    gilt das systemweit oder nur innerhalb eines prozesses ?
    weil sonst wuerde ja eventuell eine falsche WndProc aufgerufen werden, falls von einer anderen software der classname schon registriert worden war.

    sorry das ich mich da bloed anstelle, aber irgendwie krieg ich das in meinem kopf nicht auf die reihe

    Meep Meep

    Das gilt systemweit. Windows überwacht die Prozesse selbst und sorgt dafür, daß keine "falsche" WndProc aufgerufen wird. Ist doch klar, sonst könnte man nie die gleiche Anwendung zweimal aufrufen- da würde das ganze abstürzen.


  • Mod

    Eine Fensterklasse wird nicht nur am Namen festgemacht, sondern auch an der hInstance!

    Siehe Details in diesem Artikel:
    http://blog.m-ri.de/index.php/2007/12/12/die-unsitte-immer-getmodulehandlenull-fuer-hinstance-in-createwindow-und-registerclass-zu-verwenden/


Anmelden zum Antworten