If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register or Login
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Hybrid View

Using a CDialogBar with an MDI app

What I need to do is add an area (preferably at the top) to my app that will host some custom controls like buttons or whatever else I happen to need. I can't seem to get it working though. Here's what I'm doing, starting from scratch in Visual Studio 2010:

From what I've read, I would think that it would work at this point. But I get nothing. No error, just the dialogbar doesn't appear. A couple things I searched up on the net indicated that I would have to make a DockControlBar call to get it added, so I try adding this below the Create() call:

Now, at this point it bails on an assert in DockControlBar which says:
// assert fails when initial CBRS_ of bar does not
// match available docking sites, as set by EnableDocking()

I find this odd, as I think I specified any available dock site. Then again, I'm not convinced that I should even be doing these last two lines.

Anyone know what I'm missing here?

Edit: There is a working test project that does the kind of thing I want at:http://www.codeguru.com/forum/showthread.php?t=308712
I'm not sure what he's doing differently from me. The only significant difference I see is that my class is based on CMDIFrameWndEx and his is CMDIFrameWnd. Would that make a big difference?

Last edited by Ankheg; September 14th, 2010 at 01:51 PM.
Reason: Added more info

From what I've read, I would think that it would work at this point. But I get nothing. No error, just the dialogbar doesn't appear. A couple things I searched up on the net indicated that I would have to make a DockControlBar call to get it added, so I try adding this below the Create() call:

Re: Using a CDialogBar with an MDI app

No you didn't. I'm not sure whether this is the reason for not showing the dialog bar but you specified CBRS_LEFT when creating the dialog bar and CBRS_ALIGN_ANY when trying to make it dockable.

Changing the CBRS_s to match didn't make a difference. However...

Originally Posted by ProgramArtist

I do not know if it matters using CMDIFrameWndEx instead of CMDIFrameWnd. I would try it out with two projects from the scracth one using CMDIFrameWnd and the other one using CMDIFrameWndEx.

This was a helpful hint! I went back through the app wizard and created an app based on CMDIFrameWnd, and the dialogbar now displays with just the create() statement. The EnableDocking and DockControlBar aren't needed, at least with CMDIFrameWnd.

So I'm not really sure how to get it working with CMDIFrameWndEx, but I think what I'll do is just go back and rework my app to have no docking windows. Then I can use CMDIFrameWnd.