|
In source files and on this page I don't found any license agreements...
|
|
|
|
|
Hello
This is very nice, but how do you add icons to the various menu items?
Hope someone can help
Thanks
Alex
|
|
|
|
|
Yo, I can't get this working either. There is a simple example (onInitDialog):
CImageList m_imgList;
m_imgList.Create (IDB_BITMAP1, 16, 0, RGB(192,192,192));
CMenuXP::SetMenuItemImage (ID_APP_ABOUT, m_imgList, 0);
CMenuXP::SetMenuItemImage (ID_FILE_ITEM1, m_imgList, 1);
CMenuXP::SetMenuItemImage (ID_FILE_ITEM2, m_imgList, 2);
CMenuXP::SetMenuItemImage (ID_FILE_ITEM3, m_imgList, 3);
but I can't get it to work for me. My create bitmap is good, but the SetMenuItemImage does nothing
aaaaaahhhhhhh!!!
|
|
|
|
|
I'm looking at the SDI example; how the menu icons are added is a TOTAL mystery, there is no code involved at all! The menu icons are just there by some weird Microsoft magic. God I hate VC++ somethings!
|
|
|
|
|
Yeah, this seems like a mystery at first, but it's automatically figured out by matching resource IDs between menus and toolbars.
A toolbar gets its icons through a single BMP file in your res folder. VC automatically edits it as you edit the toolbar in the resource editor.
Example: I have a menu resource with an ID of IDR_MAINFRAME. I also have a toolbar resource with an ID of IDR_MAINFRAME.
I have a button on my toolbar with an ID of ID_FILE_OPEN. I also have a menu item on my menu with an ID of ID_FILE_OPEN. Whatever icon the toolbar button has, the menu item will have.
I hope this helps.
|
|
|
|
|
Is it possible to popup a menu at tray icon and apply a flat style to it?
Because the parent wnd of this menu is a hidden dialog, the menu can only apply flat style within this dialog.
|
|
|
|
|
I use a popup menu in conditions you describe (hidden window) and I have no problem. I suggest that you write a small sample. If you experience some problems, send it to me, I'll correct it. After that, We can publish this sample to help anyone that try to do the same thing.
|
|
|
|
|
Followed the instructions fully, except my call to UpdateMenuBar is in the LoadFrame method of the MainFrm class file. There's no OnUpdateFrameMenu method of ChildFrm for an MDI app that I can see.
I'm using VC6.0 on Win2K.
Any ideas?
|
|
|
|
|
Putting it in a CMDIFrameWnd derived class won't work, at least for me.
CMDIChildWnd does have this method. If the wizard doesn't display it, then override it manually. It's exactly how I implemented it in my copy of VC6.
Also, if you don't automatically open a child window on application start, then read my post above about MDI apps.
|
|
|
|
|
BTW thanks for replying.
Here's what I have:
void CChildFrame::OnUpdateFrameMenu (BOOL bActivate, CWnd* pActivateWnd, HMENU hMenuAlt)
{
CMDIChildWnd::OnUpdateFrameMenu (bActivate, pActivateWnd, hMenuAlt);
CMenuXP::UpdateMenuBar (GetMDIFrame());
}
and
BOOL CChildFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CMDIFrameWnd* pParentWnd, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// Comment out this line to deactivate the XP Look & Feel
CMenuXP::SetXPLookNFeel (this,TRUE);
return CMDIChildWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, pContext);
}
Not sure what else to try.
|
|
|
|
|
Take a look at the modified version below. The hMenu check isn't required, but it's in there to be safe. You want the SetXPLookNFeel() call in this method. You do not want any of this code in your Create() method as the actual window has not been created yet.
I think you may have confused Create() with OnCreate(). Your CMainFrame should have the SetXPLookNFeel() call in its OnCreate() method AFTER the Create() method has been called. Nothing is required in the OnCreate() on your ChildFrame class.
I hope this clears things up.
//Modified method
void CChildFrame::OnUpdateFrameMenu (BOOL bActivate, CWnd* pActivateWnd, HMENU hMenuAlt)
{
CMDIChildWnd::OnUpdateFrameMenu (bActivate, pActivateWnd, hMenuAlt);
CMenuXP::UpdateMenuBar(GetMDIFrame());
HMENU hMenu = GetSystemMenu(false)->GetSafeHmenu();
if ( hMenu != NULL )
{
CMenuXP::SetXPLookNFeel(this, hMenu, true);
}
}
}
|
|
|
|
|
The download says:
Download source files - 78 Kb (With project files for VC6 and Visual Studio .NET)
I see only a .Net Solution file, I can't locate any other .Net files. Does this not work with .Net?
I need menus just like this but can't find any for .Net without paying out the booty.
|
|
|
|
|
The .Net Solution file contains three VC7 projects.
The CMenuXP class is compatible with VC6 and VC7.
|
|
|
|
|
I'm not sure what that means. I never done any C++ programming. I've only used VB and VB.Net. I'm just looking for a way to be able to use the CMenuXP class in my .net project.
I think I know what you mean. I don't really think I need any project files. I'll look again at the package I downloaded a while ago. If theres a dll file I'll try to reference that in my .net project... but I don't know how to implement anything, if it's even possable.
|
|
|
|
|
For .Net the best Open Source library with XP Look And Feel is dotNetMagic, try it http://www.dotnetmagic.com/
|
|
|
|
|
i found some comercial solutions to make office2003 style-toolbars in c++. is there any free code for doing this? can this really be so difficult??
thanx for any input!
andreas
|
|
|
|
|
Hi,
How should i use these XP Style menu classes in my ATL Composite control that has MFC support.
I am unable to use it there???
Required needful help
Regards,
Susheel
Susheel Chauhan
|
|
|
|
|
The CMenuXP drawed is much wider than default!
so the menubar can not contains many submenu!
Then, when i use SetMenu in CMainFrame to switch mainmenu, there is repaint problom, because default menu length is much more narrow
Is the gap too bigger between menuitem in menubar?
|
|
|
|
|
CMenu menuMain;
menuMain.LoadMenu(m_bLogin == false ? IDR_MENU_USER: IDR_MAINFRAME);
SetMenu(&menuMain);
menuMain.Detach();
CMenuEx::UpdateMenuBar(this);// I use this want the mainmenu redraw
// but failed!!!!!
|
|
|
|
|
I am afraid to say i solve the problem !
i add DrawMenuBar(); at the end of function which switch mainmenu
|
|
|
|
|
Dear Jean Michel,
Congratulation for this menu, it's great!
I added everything as explained, and I also added everything that matches the 'XP' search from the demo to my project. Even though the demo is working perfectly, my project displays XP menus, but the headers are a little different from the expected look : The top of the menu, I mean. It should be in a blue square when the mouse is over it!!!
I have put a screenshot a the following adress, so that you can check it and tell me if you know why!
http://www.gaaia.com/ecran.jpg
Once again, congratulations, I wish I could do the same myself!
Greg
|
|
|
|
|
I think either step 4) or 6) is missed. But I am not sure.
|
|
|
|
|
The problem came from the fact that I renamed each heading of the menu using the following syntax :
It seems that this causes the problem I described.
I don't know how to change this syntax to make it working!
Greg
|
|
|
|
|
Hell there
I have the same problem, if you figure it out, please let me know.
Thanks in advance
Alex
aevans@microknox.com.au
|
|
|
|
|
You should probably not render the shadow when running under Windows XP with menu shadows turned on. It has a strange double-border effect.
- Jan
We are the all singing, all dancing crap of the world. - Tyler Durden
|
|
|
|