How add tooltips to modeless dialogue in MFC? - c++

I am working on MFC dll Using MFC in a Shared DLL.Can any one help me how i can achive ??
I am creating tooptip in OnInitDialog using create and AddTool
PreTranslateMessage is also called but It is not working for me. I see no tooltips and get no errors/assertions/exceptions anywhere
Thanks in Advance

Related

create dialog that doesn't block the main app mfc

I'm using mfc, is there any way to create a dialog that doesn't block the main app without using threads?
if yes, how can i do it?
thanks in advance
You need to create a modeless dialog. Click the link for more details.
There is a good tutorial about it here.
Example to display:
CModeLess *m_pmodeless = new CModeLess(this);
m_pmodeless->Create(CModeLess::IDD);
m_pmodeless->ShowWindow(SW_SHOW);
I won't repeat the tutorial but it explains how you using messages to relay to the parent what the dialog result is.

CMFCMenuBar and TestStack.White win.MenuBar is null

I'm trying to use TestStack.White to Automated an MFC Application (for UI testing purposes)
When using TestStack.White with an MFC Application written with CMFCMenuBar (the later Docking framework MFC) I noticed that code like the following fails due to window.MenuBar being null
var menu = window.MenuBar.MenuItem("Window");
menu.Click();
I know I can overcome this issue with the following
TestStack.White.UIItems.MenuItems.Menu windowMenu = win.Get<TestStack.White.UIItems.MenuItems.Menu(SearchCriteria.ByText("Window"));
windowMenu.Click();
But what I really want to do is get the ChildMenus so that I can check the list of windows open in the window menu, but the windowMenu.ChildMenus is empty
I am pretty sure this is because the menu is really a toolbar/toolstrip (dockable)
Does anyone know how to get the menu items (Tile,Cascale,Window1....) from the Window Menu
Has anyone else seen this issue or found a work around?
Thanks in advance
Paul
Yes, the MFC feature pack menu is really a toolbar with buttons. And it is fulfilled using a different process compared to the old style menu.
In your CFrameWndEx derived class, for getting the menu bar you can do:
CMFCMenuBar *pMenuBar= m_Impl.GetMenuBar();
Then it depends on what to do with it. For example, if you want to get the CMenu object that constitutes the menu bar you can do:
CMenu* pMenu= pMenuBar->GetMenu();
If you want to remove some of the menus, you can do (Notice the reverse order):
pMenuBar->RemoveButton(4);
pMenuBar->RemoveButton(3);
You can not get the menu the typical way by YourCFrameWndExDerivedClass::GetMenu() because these new MFC Feature Pack classes intentionally do SetMenu(NULL) when initializing the main frame, as you can see in the call stack:
I am not absolutely sure, but I think you won't also be able to do the override YourCFrameWndExDerivedClass::OnInitMenu() as you could in the old style menus. But you can still use the YourCFrameWndExDerivedClass::OnInitMenuPopup() overrride.

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

MFC Dialog Showing Problem

I create class with base class of CPropertySheet, show this dialog using
d.DoModal()
and it freezes my application. Can I execute my dialog asynchronously?
d.ShowWindow(SW_NORMAL)
doesn't work.
You need to use CPropertySheet::Create to use the dialog asynchronously. There's also some hints at http://support.microsoft.com/kb/146916 .

CMFCRebar on a dialog box

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