Autor Beitrag
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 20:27 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4425
Erhaltene Danke: 904


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 22.06.17 20: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 ;)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 21:46 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.06.17 13:53 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4014
Erhaltene Danke: 826

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Fr 23.06.17 14:57 
Leite deine Klasse mal von NativeWindow ab.
Als Beispiel habe ich mal eine Datei aus meinem CD-Ripper angehängt (wobei ich diese Datei auch nur übernommen habe ;-)).

Bei einem Control wird es so sein, daß dieses auch ein Parent-Window benötigt, um überhaupt Nachrichten empfangen zu können.
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.06.17 20:27 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4425
Erhaltene Danke: 904


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 23.06.17 23: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.

ausblenden 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 wird gezeigt wie man das etwas schöner koppelt.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.06.17 01:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4014
Erhaltene Danke: 826

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Sa 24.06.17 08: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:
ausblenden 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).
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.06.17 09:26 
- Nachträglich durch die Entwickler-Ecke gelöscht -