message zwischen child'S



  • Kannst du bitte mal den vorherigen Post lesen!? Da steht schon drin, dass er SendMessage() verwenden soll. 🙄



  • WilMen schrieb:

    Hi, das würde ich global deklarieren.

    HWND hEdit, hOffset ;
    

    Dann kannst du einfach in deiner EditWndProc mit SendMessage(hOffset, message, wParam, lParam) eine Nachricht senden.

    Immer diese globalen Variablen... 👎 . Er kannt sich auch einfach (vorausgesetzt er vergibt noch ID's an seine Child's) via:

    GetDlgItem(GetParent(hWnd), ID)
    

    einen Handle auf das entsprechende Control holen 😉 .



  • Hi,
    wozu extra den Handle ermitteln, wenn man ihn einfach in einer globalen Variablen gespeichtert haben kann. Das ist doch sinnlose Vergäudung von Rechenleistung (Sicher, in diesem kleinen Programm und bei heutigen Computern nicht, aber wenn du so größere Programme schreibst, macht sich das bemerkbar). Ich glaube, dass du das nur geschrieben hast, um überhaupt was zu schreiben. 😉 Man sollte auch in der heuteigen Zeit immer so effektiv, wie nur menschenmöglich, programmieren!

    MfG WilMen :xmas1:



  • WilMen schrieb:

    Kannst du bitte mal den vorherigen Post lesen!? Da steht schon drin, dass er SendMessage() verwenden soll. 🙄

    Ja *LOL* ich war ca. 3h von meinem PC weg und dann war hier noch das auf,und ich habe nicht nachgeschaut ob schon ein neuer Post da ist.

    Hi,
    wozu extra den Handle ermitteln, wenn man ihn einfach in einer globalen Variablen gespeichtert haben kann. Das ist doch sinnlose Vergäudung von Rechenleistung (Sicher, in diesem kleinen Programm und bei heutigen Computern nicht, aber wenn du so größere Programme schreibst, macht sich das bemerkbar). Ich glaube, dass du das nur geschrieben hast, um überhaupt was zu schreiben. Man sollte auch in der heuteigen Zeit immer so effektiv, wie nur menschenmöglich, programmieren!

    MfG WilMen

    Der Meinung bin ich auch den Handle einfach zurückgeben lassen a la:

    //Global:
    HWND hChild1;
    HWND hChild2;
    
    //Nach dem ersten CreateWindow
    hChild1 =  CreateWindowW(/*Hier ein Childwindow erstellen*/);
    hChild2 =  CreateWindowW(/*Hier ein zweites Childwindow erstellen*/);
    //SendMessage(hChild oder hChild2,usw.)
    //zB kann jetzt hChild1 ein WM_COMMAND an hChild2 senden und so wird ein Druck 
    // einer anderen Taste simuliert.
    

    So können die beiden kommunizieren.
    Besser wäre noch "PostMessage()".

    [offtopic]
    Unterschied zwischen SendMessage und PostMessage:
    Bei SendMessage wird die gesendete Nachricht sofort verarbeitet und bei PostMessage wird die Nachricht in die Warteschlange getan.
    [/offtopic]

    Ich denke ihr wisst was ich meine 😛

    P.S.: So muss auch nicht aufwending ein Handle ermittelt werden.



  • WilMen schrieb:

    wozu extra den Handle ermitteln, wenn man ihn einfach in einer globalen Variablen [...]

    Das ist ja nicht der Punkt..., das ist der Punkt:

    WilMen schrieb:

    [...] aber wenn du so größere Programme schreibst, macht sich das bemerkbar

    Wenn Du größere Programme schreibst, und ohne Ende globale Variablen verwendest, verstehst Du später Dein eigenes Programm nicht mehr, bzw. Dein Programm entwickelt ein gewisses Eigenleben.
    ➡ Globale Variablen ist schlechtes Code-Design.

    C-Chris schrieb:

    P.S.: So muss auch nicht aufwending ein Handle ermittelt werden.

    Dito, siehe oben.

    WilMen schrieb:

    Ich glaube, dass du das nur geschrieben hast, um überhaupt was zu schreiben. 😉

    Klar, wie immer ...

    WilMen schrieb:

    Man sollte auch in der heuteigen Zeit immer so effektiv, wie nur menschenmöglich, programmieren!

    Deswegen wurden ja auch Sprachen wie Java erfunden :p .

    C-Chris schrieb:

    [offtopic]
    Unterschied zwischen SendMessage und PostMessage:
    Bei SendMessage wird die gesendete Nachricht sofort verarbeitet und bei PostMessage wird die Nachricht in die Warteschlange getan.
    [/offtopic]

    Es geht vielmehr darum, dass bei Multithreaded-Applikationen beim Aufruf von SendMessage ein Context-Switching (also ein Wechsel in den Thread, in dem die WndProc des Fensters läuft) erfolgt, bei PostMessage hingegen nicht. Daher kehrt SendMessage erst zurück, wenn die Nachricht bearbeitet wurde.



  • Es geht vielmehr darum, dass bei Multithreaded-Applikationen beim Aufruf von SendMessage ein Context-Switching (also ein Wechsel in den Thread, in dem die WndProc des Fensters läuft) erfolgt, bei PostMessage hingegen nicht. Daher kehrt SendMessage erst zurück, wenn die Nachricht bearbeitet wurde.

    Deswegen ja [offtopic]. Das war nur eine Exkursion ich wollte eben mein beschränktes Wissen mit anderen Teilen. Ich weis das ich nicht perfekt bin und manachmal auch falsche Informationen dabei sind aber ich kann hier doch den Unterschied erklären wenn wir schon bei dem Thema sind.



  • Hui, ich bin erstaunt über die diskussionsvielfalt,..
    wie vergebe ich ID's an die child's?

    gruß



  • zeusosc schrieb:

    Hui, ich bin erstaunt über die diskussionsvielfalt,..
    wie vergebe ich ID's an die child's?

    gruß

    Was sind ID´s ?



  • CodeFinder schrieb:

    WilMen schrieb:

    [...] aber wenn du so größere Programme schreibst, macht sich das bemerkbar

    Wenn Du größere Programme schreibst, und ohne Ende globale Variablen verwendest, verstehst Du später Dein eigenes Programm nicht mehr, bzw. Dein Programm entwickelt ein gewisses Eigenleben.
    ➡ Globale Variablen ist schlechtes Code-Design.

    Funktionen aufzurufen die Werte ermitteln, die man schon längst hat auch!
    Außerdem: Sagte ich, dass das immer zutrifft? In diesem konkreten Fall ist es Schwachsinn den Handle nochmal zu ermitteln.

    CodeFinder schrieb:

    WilMen schrieb:

    Ich glaube, dass du das nur geschrieben hast, um überhaupt was zu schreiben. 😉

    Klar, wie immer ...

    Sowieso...

    CodeFinder schrieb:

    WilMen schrieb:

    Man sollte auch in der heuteigen Zeit immer so effektiv, wie nur menschenmöglich, programmieren!

    Deswegen wurden ja auch Sprachen wie Java erfunden :p .

    WinAPI-Forum!? Meinst du etwa man kann mit Java effektiver programmieren als mit C++?

    MfG WilMen :xmas1:



  • Ja ist ja schön gut,es würde mich trotzdem mehr interessieren was ein ID ist. CodeFinder WilMen einer von euch beiden wird das wohl wissen. Streitet euch darum. 😃



  • Hi,

    lies dir mal die Beschreibung zum 9. Parameter (hMenu) von CreateWindow durch.

    http://msdn2.microsoft.com/en-us/library/ms632679.aspx

    MfG WilMen :xmas1:



  • ok,. danke jungs,..
    🙂



  • WilMen schrieb:

    Funktionen aufzurufen die Werte ermitteln, die man schon längst hat auch!

    Da hast Du Recht, aber dem ist hier ja nicht so 😉 .

    WilMen schrieb:

    WinAPI-Forum!? Meinst du etwa man kann mit Java effektiver programmieren als mit C++?

    😃 , dann hast Du anscheinend nicht verstanden, was ich meine. Natürlich kann man mit C++ *viel* effektiver Programmieren (als mit Java), und mit C noch effektiver. ABER 'heutzutage' legt man nicht mehr zwangsläuftig Wert auf Geschwindigkeit, sondern auf Stabilität/Sicherheit. Das merkt man schon an der Entwicklung:
    C -> C++ -> Java (Ich weiß, Java aus C++ zu 'folgern' ist etwas plump, aber mir gehts auch nur um die Schwerpunkte, die die jeweilige Sprache setzt.)

    Und natürlich: Warum programmiert man C/C++ und WinAPI? Weil man schnelle Programme schreiben will und teilweise an Funktionalitäten kommen will, die in höheren Sprachen/Frameworks nicht zur Verfügung stehen 😉 . (Meine Aussage war also ironisch gemeint 🤡 .)



  • jung jungs jungs,.. wirkliche geschwindigkeit erreicht man wenn man asm optimal einsetzt,... 😉



  • Hi CodeFinder,

    gut, wenn du das so meintest, stimme ich dir zu! 🙂

    MfG WilMen



  • Kann hier den wer asm? Ich würde es schon gerne können und meine eigne Sprache erfinden(der war gut nicht? 😃 ),aber da fehlt mir denke ich die Zeit. Wie erfindet man eigentlich seine eigene Programmiersprache? Ich denke man proggt sich einen Compiler,oder(der von dem Sprachencode in Asmcode umwandelt und dann in binären Code). Oder habe ich das falsch verstanden. Ach ich mach gleich ein eigenes Topic im ASM-Subforum auf.


Anmelden zum Antworten