Windows Browser Control Vs CDHtmlDialog and CHtmlView - winapi

I wanted to know the difference among following control and classes.
Windows Browser Control Vs CDHtmlDialog and CHtmlView.
It is visible that these things are used to add html content in UI for
windows based application.
But when we search in internet one will often confused with these things.
It would be good if some explain the usability of these Control and Classes.

The Web Browser Control is a Windows ActiveX control that is probably used by Internet Explorer itself to display HTML contents. At the very least, Web Browser Control and Internet Explorer use the same implementation for rendering HTML.
CHtmlView is a MFC - CView -derived class hosting said ActiveX control.
CHtmlDialog is a MFC - CDialog - derived class doing the same.
They are separate classes because unfortunately MFC has a "huge gap" between dialogs, views and windows.
I haven't worked significantly with either MFC class but in my understanding they don't add any functionality by themselves. You can as well host the web browser control like a normal ActiveX and use GetControlUnknown to acquire IWebBrowser interface.
The biggest problem in my experience is that DOM is only accessible after DocumentComplete, and that event won't fire before the message loop doesn't pump. This makes some operations rather painful I ended up with a custom interface queuing modifications until DOM is available.
P.S. Windows now offers the WebView2 - ActiveX control, based on Edge, as a sufficient and powerful replacement. see https://learn.microsoft.com/en-us/microsoft-edge/webview2/

Related

What type of controls don't show up in Spy++/Inspect?

We are working on an Windows Desktop application that pulls values from other controls on other applications. What we have works great for most desktop applications. I have noticed that some controls don't show up in inspect and Spy++. For example, in GP 2015 client only a handful of the controls are addressable in Spy++ and Inspect. The large majority wont show in the repective tree in Spy++ or Inspect. What type of controls don't show in Inspect and for extra credit, how can we talk to them?
Thanks in advance,
Steve
Spy++ only works with controls that have an HWND associated with them.
Inspect only works with controls that are exposed to UI Automation via the IAccessible, IUIAutomation, and other related interfaces.
So, any custom-made non-windowed non-automatable control will not appear in either tool. Such controls are not available to the outside world, so you cannot communicate with them, or manipulate them. Only the owning app can, since only it has knowledge of what they are and how to interact with them.

Are there any ui automation tools that allow you to change/add elements to a window?

With selenium, we can get/change/add html elements from/to a web page.
But what about win32 based applications?
All the ui automation tools allow you to get elements of windows and verify the content. And they can also simulate mouse and keyboard events.
But are there any ui automation tools that allow you to change/add elements to a window?
Or are there any other tools/APIs available for that purpose?
Given an arbitrary Win32 application, of course not. The question assumes that the UI framework for the app supports runtime modification, and most don't. (That even assumes that the app actually has a UI framework.)
There are many commercial tools for non web applications. Open source examples would be AutoIt, Twin, Sikuli..........

web browser engine to embed in win32 program

I need to put in simple Win32 program kind of ability to view web pages. It must be just window with page in it, no browser adress bars or other elements, just working web page in win32 window without any standart browser elements.
It seems that i need some kind of project, that gives me some way to embed chromium engine (chromium most likely) in to win32 api, and, obviously, give the full controls over the messages and other stuff that going to that "browser" window. I was looking at CEF project http://code.google.com/p/chromiumembedded/ , but will it fit, or any other suggestions?
My (unfortunate) suggestion is to use IWebBrowser2 if you just want to use the Internet Explorer control.
Example can be seen here:
http://www.codeproject.com/Articles/16559/Launch-and-control-MSIE-using-IWebBrowser2

Creating a Custom Silverlight Designer in WPF

I need to create a designer for Silverlight in WPF and I’m thinking of a few options
Use a WebBrowser control,
display the content there and
communicate Silverlight using the
JavaScript Bridge. Not sure if this
will be enough for the scenarios I
need to support (see below). This is what KaXaml is doing. SilverlightSpy uses a a more sophisticated WebBrowser control, but I'm not sure how they communicate with Silverlight.
Communicate using Sockets
between the Host and Silverlight.
Host the Silverlight runtime (not in
a browser), but directly using
AgCore.dll. Similar to what sllauncher does for OOB. I imagine
this is what Blend/VS are doing.
Do whatever Blend or VS are doing
which.
I obviously don’t want to go as far as VS and Blend, but I need to support drag and drop of some controls as well as grouping, changing the layout, moving controls in the design surface and obviously updating the Xaml as a result of this actions.
Any ideas, recommendations or pointers on the best way to create a Silverlight Designer in WPF?
SharpDevelop 4 has a WPF based editor for WPF and Silverlight -> http://www.icsharpcode.net/opensource/sd/

Where do I find the "Collapsible Panel" Cocoa control in Interface Builder?

I'm trying to add a collapsible panel to a panel I added in the Interface Builder, similar to the one found in Office 2008 and XCode itself.
This is the collapsible panel for those that don't know it:
OS X collapsible panel http://grab.by/3Hqv
Any idea how I can add this to my project? Google hasn't been of much help.
This is most often referred to as a "disclosure view" or "disclosure panel" and usually has to come with an intelligent container view (that grows/shrinks/scrolls correctly with multiple disclosure subviews). There is no such control as part of the API. Most developers roll their own while some use third-party open source.
The Omni Frameworks have one such control that works very well (including "tear-off" panels, etc., if I recall correctly). The drawback: it's a large framework and has a lot of other stuff in it as well.
InspectorKit is another. It's more focused (just the control itself and an IB plugin), but the last incarnation I tested did have a few UI issues with the Interface Builder plugin.
I've also written a framework for handling this: SFBInspectors

Resources