Ist es möglich, eine fensterlose mfc C++ App (die auf XP laufen würde) zu erstellen, die aus einer transparenten Browserkomponente (mit standardmäßig transparentem Hintergrund) und einer Schaltfläche (die zum Beispiel diese App schließen würde) bestehen würde?Ist es möglich, eine fensterlose mfc C++ App zu erstellen, die aus einer transparenten Browser-Komponente bestehen würde?
Antwort
Nein. Es gibt kein Problem beim Hosten einer WebBrowser
Komponente in einer MFC-App, und malen nur eine einzige Schließen-Schaltfläche im Non-Client-Bereich, aber die WebBrowser
Komponente selbst wird einen Hintergrund rendern.
können Sie versuchen, den folgenden Code, aber es wird immer noch Artefakte bei der Wahl oder Ändern der Größe:
private void WebCtrl_Loaded(object sender, RoutedEventArgs e)
{
var hRef = new HandleRef(null, WebCtrl.Handle);
int style = GetWindowLong(hRef, GWL_EXSTYLE);
if ((style & WS_EX_TRANSPARENT) == 0)
SetWindowLong(hRef, GWL_EXSTYLE, style | WS_EX_TRANSPARENT);
style = GetWindowLong(hRef, GWL_STYLE);
if ((style & WS_CLIPCHILDREN) == 0)
SetWindowLong(hRef, GWL_STYLE, style | WS_CLIPCHILDREN);
}
IntPtr WebCtrl_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_ERASEBKGND)
handled = true;
return IntPtr.Zero;
}
Ich glaube nicht, Sie tun können, dass mit Standard-Web-Browsers (Embedded IE-Engine), weil es tut weiß nichts über Ihre Transparenzwünsche und wird immer einen Hintergrund zeichnen.
Es ist mit alternativen HTML-Engine, z. HTMLayout. Es ist zwar nicht sehr gut als Internet-Browser (kein Javascript usw.), aber für Web-Stil UI ist es viel besser als WebBrowser (schneller, verwendet weniger Speicher, unterstützt Farbverläufe, Animationen, erweiterte Layout). Wenn Sie nur "Web-UI" mit Bildern, Steuerelementen, Links, Animationen und Schaltflächen benötigen und MFC, WTL oder reines WinAPI verwenden, ist dies eine gute Option.
Haben Sie versucht, den Hintergrund Ihres Fensters zu erfassen und es als Hintergrund der Browser-Komponente hinzuzufügen? Natürlich wird es nur arbeiten, wenn Sie ein HTML-Dokument anzeigen möchten, das von Ihnen (/ Ihrem Team) erstellt wurde, aber wenn dies nicht der Fall ist, wäre die ganze Frage sinnlos.
Ich habe nie versucht, so Whit, einen eingebetteten Browser zu tun, aber ich habe es in einigen anderen Kontrollen (wie Memo-Boxen), und es funktionierte. Wenn Sie diese Lösung wählen, sollten Sie immer noch wissen, dass Sie den Hintergrund Ihres Fensters immer neu erfassen müssen, wenn es verschoben oder in der Größe geändert wird.
Sie können eine Lösung Ihrer Wahl verwenden, um den Hintergrund im eingebetteten Browser anzuzeigen, aber die beste Option besteht darin, einen CSS-definierten Hintergrund zu verwenden, der durch Ihren ersetzt wird. (Vergessen Sie nicht, eine einfache javascript zu fälschen, um den Hintergrund auf dem Formular zu vergrößern, um das versehentliche Neuladen des gesamten Dokuments zu vermeiden.)
Weitere Informationen über die partielle Bildschirmaufnahme finden Sie unter here.
- 1. Ist es möglich, eine Konsolenanwendung mit nw.js zu erstellen?
- 2. Ist es möglich, HttpBrowserCapabilities aus einer C# -Konsolenanwendung zu verwenden?
- 3. Ist es möglich, eine plattformübergreifende, OFFLINE mobile App zu erstellen?
- 4. ist es möglich, eine Liste in unserer App zu erstellen?
- 5. Ist es möglich, eine Heroku Review-App aus einer Bitbucket Pull-Anfrage zu erstellen?
- 6. Ist es möglich, eine ListViewGroup zu erstellen
- 7. Ist es möglich, eine "Freund-Klasse" in C++ zu erstellen?
- 8. Ist es möglich, eine interaktive C-Shell zu erstellen?
- 9. Wie würde ich diese Abfrage erstellen, wenn es möglich ist?
- 10. Ist es möglich, eine iOS App mit Go ohne Swift oder Objective-C zu erstellen?
- 11. Was ist eine fensterlose Steuerung?
- 12. Javascript/HTML, ist es möglich, Variablennamen aus einer Schleife erstellen
- 13. Browserkomponente für Java oder C#
- 14. Ist es möglich, C++ - Code zu symbolisieren?
- 15. Ist es möglich, C-Programm über Python-Skript zu erstellen?
- 16. Ist es möglich, encodeb64 aus dem Image-Objekt zu erstellen?
- 17. Ist es möglich, ein Parse-Objekt aus JSON zu erstellen?
- 18. Ist es möglich, eine leere Liste in JPA zu bestehen und zu testen?
- 19. Ist es möglich, Portable VM zu erstellen?
- 20. Ist es möglich, eine 'Befehlszeile' swf zu erstellen?
- 21. Erstellen einer transparenten Bitmap mit GDI?
- 22. Ist es möglich, gcc aus einer Pipe zu lesen?
- 23. Ist es möglich, eine Instanz einer Klasse in VB aus einer Zeichenfolge zu erstellen, die die Definition der Klasse enthält?
- 24. Ist es möglich, Erweiterungsoperatoren in C# zu erstellen?
- 25. Ist es möglich, eine Methode aus einer Objektdefinition Konstruktor Funktion
- 26. Ist es möglich, eine Textdatei aus einer SQL-Abfrage auszuführen?
- 27. Ist es möglich, eine Google Fotos-Suchleiste zu erstellen?
- 28. Ist es möglich, eine App auf live.com zu hosten?
- 29. Ist es möglich, ein Objekt in C# zu deserialisieren, das in C++ MFC binär serialisiert wurde?
- 30. In Android, ist es möglich, eine Benachrichtigung zu erstellen, wenn eine andere App geöffnet wird?
Aber ist es möglich, den Standard-WebBrowser-Komponentenhintergrund transparent zu machen (Hintergrund ist nicht in CSS-Dateien definiert, die wir über diesen Browser öffnen)? – myWallJSON