CMFCRebar on a dialog box - mfc

Can we create a CMFCRebar on a dialog box? If yes, then how? I need to have a CMFCReBar drawn on a dialog box with a toolbar and and menubar.

There are a lot of examples of how to add a toolbar to a CDialog. Have you tried to take one of those samples and modify CDialog with the new CDialogEx and CRebar with CMFCReBar? I haven't tried it but maybe it works.
By the way, there is a tag specific for MFC feature pack questions (mfc-feature-pack). Maybe you should add this tag.
Regards,
Javier

Related

How to customize MFC MDI CMFCTabCtrl

I've created MDI application based on MFC framework but the style of CMFCTabCtrl's doesn't satisfy our requirements. I want to change the tab height, colors and add some pictures and buttons.
But I don't know how. Are there any examples or articles that will help me out?
You can easily customize your MFC Tab control. There are plenty of options.
To enable Close buttons you just need to call m_TabControl.EnableActiveTabCloseButton();
Make sure to add a WM_CLOSE message handler in your child window:
void CMyTabWindow::OnClose()
{
CMFCTabCtrl *pTab = static_cast<CMFCTabCtrl*>(GetParent());
pTab->RemoveTab(pTab->GetActiveTab());
}
You can customize colors using SetTabBkColor() or SetAutoColors().
You can also set images using SetImageList().
The height can also be customized using SetTabsHeight().

C++ - Create dialog box containing buttons and static text on click

so this project follows my last question. I implemented the buttons and found out how to render events when they are clicked, this question is a next-step for me that I am struggling with. Utilizing the winapi I want to create a dialog box when a button is clicked on the window class, but I want the dialog box to take the properties of another window class so I can pass specific properties to it. How would I approach this? Again, some demo code would be greatly appreciated! Thanks for taking the time.

Embedding dialogs in main dialog and switching them with button click in MFC

I have a design like below:
So basically, I want to embed three dialogs in the application main dialog and switch between them, for each button click i.e., button 1 will show dialog one , button 2 will hide dialog 1 and show dialog 2 .. and so on.
Each dialog will be having a different design and functions.
I tried using CPropertySheet class to Add pages but its GUI is different. It has either option for navigating the dialogs using next / back button , or from a tab control.
None of which is as per my requirement.
So I want to know is it possible to have a design like this in MFC ? If yes how? Which Class/ control should I use.
Any help will be appreciated.
What you can do is use a normal CDialog class, add your buttons to it and also create a frame/rect as a placeholder for where your embedded dialogs are to appear. The following piece of code will create and position your embedded dialog.
CRect rect;
CWnd *pHost = GetDlgItem(ID_OF_YOUR_FRAME_RECT);
pHost->GetWindowRect(&rect);
ScreenToClient(&rect);
pDialog->Create(ID_OF_YOUR_DIALOG, this);
pDialog->MoveWindow(&rect);
pDialog->ShowWindow(SW_SHOW);
On button clicks, you hide the previously shown dialog (SW_HIDE) and show your selected dialog(SW_SHOW) with ShowWindow(...).
If you create your embedded dialogs with IDD_FORMVIEW style in the add resource editor it'll have the proper styles for embedding.
Another option is probably to use an embedded PropertySheet and hide the tab row and programatically change the tabs on the button clicks. I just find it to be too much fuzz with borders, positioning, validation and such for my liking.
If you have the MFC Feature Pack, that first came with VS2008 SP1 and is in all later versions, you might like to consider CMFCPropertySheet. There are a number of examples on the linked page, that are very similar to your design.
For example, this:
What worked for me just using dialog based application is SetParent() method. Dont know why nobody mentioned it. It seems to work fine.
I am doing like below:
VERIFY(pDlg1.Create(PanelDlg::IDD, this));
VERIFY(pDlg2.Create(PanelDlg2::IDD, this));
VERIFY(pDlg3.Create(PanelDlg2::IDD, this));
::SetParent(pDlg1.GetSafeHwnd(), this->m_hWnd);
::SetParent(pDlg2.GetSafeHwnd(), this->m_hWnd);
::SetParent(pDlg3.GetSafeHwnd(), this->m_hWnd);
Now I can show or hide a child dialog at will (button clicks) as below:
pDlg1.ShowWindow(SW_SHOW);
pDlg2.ShowWindow(SW_HIDE);
pDlg3.ShowWindow(SW_HIDE);

How to create splitter window in dialog, attach example

I am practice on splitter window, I reference to this web site,
Creating a Splitter Window in a Dialog Box in Three Easy Steps
when I build it, some thing error I cant solve it, like follow code...
Out of memory creating a splitter pane.
Error: Trying to create object which is not DECLARE_DYNCREATE
or DECLARE_SERIAL: CDialogEx.
Out of memory creating a splitter pane.
Error: Trying to create object which is not DECLARE_DYNCREATE
or DECLARE_SERIAL: CDialogEx.
the link for download this example, please rewrite the example,
splitter dialog example
the other feature, I want to create a two panel with button and static
and listcontrol item.
thanks guy.
Don't use a dialog base application. Just use the wizard. Create a SDI sample with a CFormView... integrate the splitter window later.
It doesn't make sense to me to create a dialog and to integrate all the CFrameWnd features into a CDialog...
I replaced the CDialog1 with CWnd then solved this problem.
ccc.m_pNewViewClass = RUNTIME_CLASS(CWnd);
m_cSplitter.CreateView(0,0, RUNTIME_CLASS(CWnd),
CSize(100,100), &ccc);
m_cSplitter.CreateView(0,1, RUNTIME_CLASS(CWnd),
CSize(100,100), &ccc);

MFC VSListBox change icons

Does anyone know if it is possible to change the icons on the MFC VSListBox Dialog Control?
Specifically I'm trying to change the folder icon to a '+' icon instead:
I haven't tried it myself, but CVSListBoxBase::AddButton() seems to be what you need.
CVSListBox derives from CVSListBoxBase, and when you call CVSListBoxBase::SetStandardButtons to set the buttons, it calls AddButton() for each button.
The documentation for CVSListBoxBase is unfinished, so you'll have to "play" with it, but you can read the code in afxvslistbox.cpp/.h