Entwickler-Ecke
Basistechnologien - WndProc Methode definieren
Delete - Do 22.06.17 19:27
Titel: WndProc Methode definieren
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen - Do 22.06.17 19:48
Hmmm ... Window ist ja im Prinzip die kernelseitige Entsprechung eines Controls oder anders gesagt ein Control ist eine Kapselung für ein Window. Und es ist ja die WindowProc an die du willst also geht es um WindowMessages die an Windows (ich spreche nicht vom OS ;) ) geschickt werden. Du sagt jetzt gerade also das du gerne WindowMessages empfangen möchtest ohne ein Window zu sein. Ist wie Fussballspielen wollen mit Ball aber bitte ohne Spieler ;)
Direkt an der WindowsAPI gibt es das Konzept von sogenannten Message-Only Windows. Aber es sind dann auch richtige Windows die halt nur nicht angezeigt werden. Den Weg kannst du natürlich mal ausprobieren ich denke aber nicht das das irgendwo hinführt (neugierig auf Ergebnisse wäre ich aber). Letztlich ist es das einfachste einfach in deiner Klasse ein nicht sichtbares Control als Nachrichtenempfänger zu erzeugen. Ich habe auch gerade so ein Déjà-vu das ich das in Delphi (so um die Jahrtausendwende) auch so gemacht habe bzw. so machen musste ;)
Delete - Do 22.06.17 20:46
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delete - Fr 23.06.17 12:53
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delete - Fr 23.06.17 19:27
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen - Fr 23.06.17 22:10
Das Parenting fehlt und an WM_DEVICECHANGE steht
Zitat: |
Windows sends all top-level windows a set of default WM_DEVICECHANGE messages when new devices or media ... |
Wir brauchen also nicht irgendein Control. Wenn ich dem native Window das Handle der Main Form eine Anwendung unterjubel kommt da auch WM_DEVICECHANGE an.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public class MainClass { private WndClass _wndClass; public MainClass(IWin32Window window) { _wndClass = new WndClass(); _wndClass.AssignHandle(window.Handle); } } |
Im Beispiel der MSDN Doku zu
AssignHandle [
https://msdn.microsoft.com/de-de/library/system.windows.forms.nativewindow.assignhandle(v=vs.110).aspx] wird gezeigt wie man das etwas schöner koppelt.
Delete - Sa 24.06.17 00:39
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69 - Sa 24.06.17 07:50
Hattest du denn auch den Konstruktor-Code (
CreateHandle(...) aus meinem Code übernommen? Dadurch brauchst du dann wohl auch kein externes Window-Handle zu übergeben:
C#-Quelltext
1: 2: 3: 4:
| CreateParams Params = new CreateParams(); Params.ExStyle = WS_EX_TOOLWINDOW; Params.Style = WS_POPUP; CreateHandle(Params); |
Ob diese beiden Styles generell funktionieren, müßte man jedoch evaluieren (kommt wahrscheinlich darauf an, welche Messages man empfangen will).
Delete - Sa 24.06.17 08:26
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!