Procedure ohne Fenstererzeugung
-
Ich weiß, in den heutigen Zeiten ist das lächerlich, aber mit Resourcen meine ich den RAM. Ich finde man sollte kein Byte unnötig verschwenden und ich würde das schon gerne effektiver (kann man das in dem Fall überhaupt sagen
) lösen.MfG
WilMen :xmas1:
-
Die Frage ist : Was hast du vor? Welches Programm soll den ohne Fenster auskommen das du machen möchtest. Natürlich ist es möglich dein Vorhaben zu realisieren. Aber deine Procedure wird niemals eine Botschaft erhalten es sei den ein anderes Programm schickt eine Botschaft an dieses Programm was natürlich totale Resourcenverschwendung wiederrum wäre. Du kannst natürlich auch das eigne Programm dir Meldungen zusenden lassen aber das geht auch ohne.
-
Ich komme auch von der Elektronik und progge hauptsächlich auf Mikocontroller-Systemen und auch mit 8-Bit Maschienen. Auch ich verschwende sehr ungern Resourcen, ganz einfach, weil es einfach sauberer ist und auch auf die Menge und Dauer besser läuft. Aber ich denke jetzt eigentlich nicht, dass Du da gross was verschwendest. Du brauchst ja alle Eigenschaften eines Fensters, wenn du Nachrichten abarbeiten willst, die einem Fenster gelten. Aber eben, es kann schon noch andere Wege geben.
mfg
Sputnik
-
Ich würde sagen dass du dir lieber ein natives C++ Programm schreibst(Konsolenanwendung) mit Windows Overhead.(Ich meine das du trotzdem "windows.h" inkludierst)
P.S.: Dein Anti-Resourcen-Verschwendungs-Motto ist doch genial. Bring das mal Microsoft bei. Wenn die das mal kapieren würden dann würden sie Vista gleich zurücknehmen. s. Standard CPU-Auslastung 30% Standard Ram: um die 1 Gigabyte wenn man dann Fenster offen hat...
-
Sputnik schrieb:
Du brauchst ja alle Eigenschaften eines Fensters, wenn du Nachrichten abarbeiten willst, die einem Fenster gelten.
Welche Eigenschaften zum Beispiel? Die ganzen Initialisierungen der Window-Klasse haben doch mit der Procedure nichts zu tun (außer natürlich wndclass.lpfnWndProc).
Erzähl mal bitte ein bisschen was von deinem Beruf. Würde mich sehr interessieren, weil ich später auch in dieser Richtung gehen möchte.
Hast du studiert?MfG WilMen
-
Hi Chris,
ich glaube nicht, dass das mein Problem löst, weil ich ja dann auch aus dieser nativen C++-Konsolenanwendung heraus ein Fenster erstellen müsste um eine Procedure zu haben, an die ich Nachrichten mit SendMessage() schicke, oder? Wenn ich mich irre erkläre mir das bitte.

MfG WilMen :xmas1:
-
Nein, ich habe noch nicht studiert, das mache ich nach der Lehre. Also zuerst muss ich mal sagen, dass ich Schweizer bin und wir vielleicht ein etwas anderes System haben als wir. Also bei uns kann man den Beruf Elektroniker lernen (was ich zur Zeit mache) und wenn man neben her auch noch die Berufsmatura macht, kann man nacher an der Hochschule studieren gehen (werde ich dann machen). Normalerweise studiert man dann Elektrotechnik (kann man glaube ich auch in Deutschland machen). Solche Ingenieure kännen in sehr verschiedenen Umfeldern tätig sein. Das positive an unserer Ausbildung ist, dass man die Hardware sehr genau kennen lernt (Bauteile, Schaltungen und so weiter) aber man lernt auch programmieren, allerdings mit dem Schwerpunkt Emedded-Systems und C. Also ich progge meistens ohne Betriebssystem, was so seine Vorteile hat, aber natürlich auch seine Nachteile. Ich hoffe, ich habe dich "glustig" gemacht, wie wir in der schweiz sagen würden

mfg
Sputnik
-
Danke, hört sich sehr interessant an! Ich mache zurzeit noch Abi und werde später entweder Informatik (speziell: künstliche Intelligenz) oder Mathematik studieren.
P.S.: Was ist glustig?

-
WilMen schrieb:
Danke, hört sich sehr interessant an! Ich mache zurzeit noch Abi und werde später entweder Informatik (speziell: künstliche Intelligenz) oder Mathematik studieren.
P.S.: Was ist glustig?

Nett Künstliche Intelligenz. Auf welches Themengebiet spezialisiert . Wahrscheinlich Spieleprogrammierung oder?
-
Wäre ein Möglichkeit, aber ich dachte da mehr an Forschung. Es wurde ja bis heute noch nicht geschafft das menschliche Gehirn zu emulieren.
MfG
WilMen :xmas1:
-
WilMen schrieb:
Hi,
wie kann man ohne ein Fenster mit CreateWindow() zu erzeugen eine Procedure erstellen und dann an diese Nachrichten senden, da ja ein Parameter von SendMessage() der Fenster-Handle ist, den man ja ohne CreateWindow() gar nicht bekommt?
MfG WilMen
SendMessage stellt -implizit- eigentlich nur einen Aufruf der entsprechenden WndProc des im 1. Parameter adressierten Fensters dar. Ich weiß nicht genau, was Du vor hast, aber vllt. reicht ja auch ein Funktionszeiger?
Mal ein Pseudo-Beispiel:
#define WM_SHOWMSG 1 typedef long (*PPROC)(UINT,void*); // Die Funktion/Prozedur, die aufgerufen werden soll: long Procedure(UINT uiWhatToDo, void* pvExtraData) { // ... switch(uiWhatToDo) { case WM_SHOWMSG: MessageBox(NULL, static_cast<const TCHAR*>(pvExtraData), TEXT("Information:"), 0); return (0); // ... } // ... return (...); } // Funktion, die das 'Senden' durchführt: long VirtSendMsg(PPROC pfnDest, uiWhatToDo, void* pvExtra) { if(pfnDest != NULL) return (pfnDest(uiWhatToDo, pvExtra)); return (-1); } // Beispielaufruf: VirtSendMsg(Procedure, WM_SHOWMSG, TEXT("Dieser Text wird auf komplizierte Weise angezeigt."));Glaube, dadurch wird auch das gesamte Funktionsprinzip klar
.PS: Man beachte allerdings den Unterschied von Post- und SendMessage, siehe MSDN.
-
Hi CodeFinder,
die Idee ist sehr gut. So habe ich mir das vorgestellt!
Danke!MfG
WilMen :xmas1: