Hosting Band objects?
-
I am attempting to host of the band objects used by IE and Windows Explorer in my own application. Specifically, I wish to host the "Explorer Band" object, which displays the folder list in Windows Explorer (and is available in IE). Has anyone successfully reused any of the bands that ship with IE or Windows? I would like some clues on what to do next. My hope is to not have to recreate the functinoality of the "Explorer Band" specifically for my app... I am able to create the band object and host it. Presently I am having problems getting it to display properly but I believe I can overcome this (my host does not call IDockingWindow::ResizeBorderDW(), and the band is sizing itself to 0px x 0px). But I am worried that I will not be able to do much with this band once it is displaying. Seemingly, the band accepts commands on IDispatch or IOleCommandTarget, but I have no clue what the actual calls might be. This is where I need help. Any input appreciated! Nick Hodapp
-
I am attempting to host of the band objects used by IE and Windows Explorer in my own application. Specifically, I wish to host the "Explorer Band" object, which displays the folder list in Windows Explorer (and is available in IE). Has anyone successfully reused any of the bands that ship with IE or Windows? I would like some clues on what to do next. My hope is to not have to recreate the functinoality of the "Explorer Band" specifically for my app... I am able to create the band object and host it. Presently I am having problems getting it to display properly but I believe I can overcome this (my host does not call IDockingWindow::ResizeBorderDW(), and the band is sizing itself to 0px x 0px). But I am worried that I will not be able to do much with this band once it is displaying. Seemingly, the band accepts commands on IDispatch or IOleCommandTarget, but I have no clue what the actual calls might be. This is where I need help. Any input appreciated! Nick Hodapp
Hi Nick, I hope I don't confuse the issue for you Nick, but a few things I have learnt are, Useful interfaces are, IOleWindow. IObjectWithSite IPersistStream IDeskBand and yes IDockingWindow, I havent tried IDispatch or IOleCommandTarget yet IObjectWithSite 's SetSite method allows access to the containers interfaces eg IOleInPlaceObject, and IInputObjectSite etc Also IUnknown is real useful, to find the above, eg Maybe with your current problem, use IUnknown to get the site of IOleWindow, Then use IOleWindow 's GetWindow method to get the HWND of the parent, Then all you need to do is register and create the window, Also normally the bands width is kept somewhere in the registry with other info. OK, Sounds easy doesn't it :-) I wish it was.
-
Hi Nick, I hope I don't confuse the issue for you Nick, but a few things I have learnt are, Useful interfaces are, IOleWindow. IObjectWithSite IPersistStream IDeskBand and yes IDockingWindow, I havent tried IDispatch or IOleCommandTarget yet IObjectWithSite 's SetSite method allows access to the containers interfaces eg IOleInPlaceObject, and IInputObjectSite etc Also IUnknown is real useful, to find the above, eg Maybe with your current problem, use IUnknown to get the site of IOleWindow, Then use IOleWindow 's GetWindow method to get the HWND of the parent, Then all you need to do is register and create the window, Also normally the bands width is kept somewhere in the registry with other info. OK, Sounds easy doesn't it :-) I wish it was.
Hi Colin: Yes, I determined the same list of interfaces supported by the Explorer Band (or "Folders") band object using the OLE/COM Object Viewer. Fact is, I can host the band just fine -- it completely initializes itself and creates its HWND as expected, I just don't know how to make it do stuff. This band object supports IServiceProvider, through which you can obtain interfaces that aren't necessarily implemented by the object itself. Unfortuntately, I do not know what interfaces it can provide. It would be nice if COM allowed one to enumerate the interfaces on an object... Anyone else have input? Thanks! Nick Hodapp