VC菜单栏像工具栏一样可移动停靠且有最小化等按钮
http://www.codeguru.com/Cpp/controls/menu/dockablemenus/article.php/c3723/
Single Class DevStudio-Like Menu Bar
Rating:
Alagesan. M.K. (view profile)
August 28, 2003
.
Home site www.spunge.com/~alagesan
The latest code will be available at www.spunge.org/~codebee.
(continued)
Get the Most from Your 64-bit OS/AMD64 Platform
Your time is important and fine-tuning your compiler settings for different platforms is something you shouldn't have to figure out on your own. Get the best from your AMD64 platform with this free compiler usage guide from AMD. Click here to download this PDF. ? Fast, Compact and Efficient Software is Only a Click Away
Get the inside scoop on the latest multiprocessor optimization techniques, 64-bit coding, cache, memory and SIMD instructions from the experts at AMD. This practical software optimization guide will have your apps running efficiently on AMD's latest processors in no time. Best of all, its free! Learn more. Download this PDF.? Scaling "Barcelona"―AMD Family 10h Software Development Resources
Leveraging the AMD "Barcelona" processor's new software-visible features to optimize your applications to run better and scale across multiple cores is easier than you might think. These free software development resources will have your applications scaling across the AMD "Barcelona" processor's native quad-core architecture quickly and easily. ? Free Sample Applications and Code
Get a jump start on developing high-performance applications for AMD's native quad-core architecture. These sample applications and code illustrate various concepts, including how to address I/O bottlenecks, easily convert images, port in-line assembler code to intrinsics, hand-tune code for optimum performance, and more. ? AMD Performance Library (APL)
APL is a collection of popular software routines designed to accelerate application development, debugging, and optimization on x86 processors. Take advantage of the latest hardware innovations, get faster development of multimedia projects, and easily migrate to multi-threaded code through APL's routines. ?
Click here for a larger image.
Environment: VC5, Windows NT4 SP3, Windows 9x and above
Single Class Plug & Play DevStudio-Like MFC Menu Bar
CMenuBar is simple Menubar Control that can be integrated into any MDI MFC application by making a few changes in CMainFrame. The simplicity of the CMenuBar is that it uses the Windows Menu system to show a popup menu. It only overrides the CalcDynamicLayout() function to make the Menu Bar resizable docking bar. It simulates all the behaviour of a Windows menu system and menu messages such as WM_MENUCHAR, WM_INITMENU, WM_INITPOPUPMENU, WM_MENUSELECT, and so forth. The MenuBar is UniCode ready.
The CMenuBar class is derived from the CControlBar class. To make it dock and float like a DevStudio Menu Bar, the functions of CControlBar are overridden.
Function Description
Create() Initializes Menu Bar
CalcDynamicLayout() Calculates Menu Bar layout
OnUpdateCmdUI() Checks change of Menu Bar position and size, and to disable the Close button when floating
The CMenuBar subclasses the CMainFrame and MDIClient windows in the SubClassMDI() function, where it also removes the main and refresh menus of CMainFrame to shift it to the MenuBar control.
VOID CMenuBar::SubClassMDI( CWnd* pMainFrame )
{
g_pMenuBar = this;
m_pMainFrame = (CMDIFrameWnd*)pMainFrame;
/// Type cast to retrieve the protected members
/// m_hWndMDIClient, m_hMenuDefault
_CMBMDIFrameWnd* _pMainFrame = (_CMBMDIFrameWnd*)pMainFrame;
HWND hwndClient = _pMainFrame->m_hWndMDIClient;
HMENU hmnuMDIMainDef = _pMainFrame->m_hMenuDefault;
/// Subclass MainFrame and MDIClient Windows
_gs_pfnMDIFrameProc = (WNDPROC)::SetWindowLong
( m_pMainFrame->m_hWnd,
GWL_WNDPROC,
(DWORD)_MDIFrameProc );
_gs_pfnMDIClientProc = (WNDPROC)::SetWindowLong
( hwndClient, GWL_WNDPROC,
(DWORD)_MDIClientProc );