-
September 14th, 2010, 01:41 PM
#1
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:
New->Project->MFC Application
Name it skeleton
On the application type window:
Application type: Multiple Documents (uncheck tabbed documents)
Project style: MFC Standard
Finish
Now I add a dialog to the app by right-clicking my project, and going:
Add->Resource
Dialog->IDD_DIALOGBAR
New
I now have a dialog, and add some buttons or text just so I can see it easily. For this skeleton app I'll leave it's id as IDD_DIALOGBAR.
Now I go to MainFrm.cpp (generated by the app wizard), find the OnCreate() function, and add the following code to the bottom of the function (but above the return in the function):
Code:
if (!m_wndDlgBar.Create(this, IDD_DIALOGBAR,
CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY, IDD_DIALOGBAR))
{
TRACE0("Failed to create DlgBar\n");
return -1; // fail to create
}
And in the protected section in MainFrm.h I add:
Code:
CDialogBar m_wndDlgBar;
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:
Code:
m_wndDlgBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDlgBar);
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
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|