|
#include "stdafx.h"
#include "UndoRedoMenu.h"
#include "UndoRedoBar.h"
#include "WndController.h"
#include "WndMsgHandler.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
namespace SbjCore
{
namespace Mvc
{
struct UndoRedoMenuImpl : public WndController
{
class UndoRedoMenuCreateHandler : public SbjCore::Mvc::WndMsgHandler
{
CALL_DEFAULT_FIRST() // comment out to handle message before default
virtual LRESULT OnHandleWndMsg(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
wParam;
lParam;
*pResult = 0;
LRESULT lRslt = 1;
SbjCore::Mvc::UndoRedoMenuImpl* pCtrlr = dynamic_cast<SbjCore::Mvc::UndoRedoMenuImpl*>(GetController());
if (pCtrlr != NULL)
{
UndoRedoMenu* pMenu = dynamic_cast<UndoRedoMenu*>(pCtrlr->GetWnd());
if (pMenu != NULL)
{
DWORD toolbarStyle = AFX_DEFAULT_TOOLBAR_STYLE;
if (pMenu->GetAnimationType() != CMFCPopupMenu::NO_ANIMATION && !CMFCToolBar::IsCustomizeMode ())
{
toolbarStyle &= ~WS_VISIBLE;
}
if (pCtrlr->theUndoRedoBar.Create(pMenu, toolbarStyle | CBRS_TOOLTIPS | CBRS_FLYBY, 1))
{
pCtrlr->theUndoRedoBar.SetOwner(pMenu);
pCtrlr->theUndoRedoBar.SetPaneStyle(pCtrlr->theUndoRedoBar.GetPaneStyle() | CBRS_TOOLTIPS);
CMFCPopupMenu::ActivatePopupMenu(pMenu->GetTopLevelFrame(), pMenu);
pMenu->RecalcLayout();
}
}
}
return lRslt;
}
} theUndoRedoMenuCreateHandler;
friend UndoRedoMenuCreateHandler;
UndoRedoBar theUndoRedoBar;
UndoRedoMenuImpl()
{
AddHandler(WM_CREATE, &theUndoRedoMenuCreateHandler);
}
virtual ~UndoRedoMenuImpl()
{
}
};
///////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(UndoRedoMenu, CMFCPopupMenu, 1)
UndoRedoMenu::UndoRedoMenu() :
m_pImpl(new UndoRedoMenuImpl)
{
SetController(m_pImpl);
}
UndoRedoMenu::~UndoRedoMenu()
{
try
{
delete m_pImpl;
}
catch(...)
{
ASSERT(FALSE);
}
}
CMFCPopupMenuBar* UndoRedoMenu::GetMenuBar ()
{
return &m_pImpl->theUndoRedoBar;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Real name is Steve Johnson. Programming since 1979. Started on a Heathkit Micro with a DEC LSI-11 and UCSD Pascal. Moved to PCs & DOS as soon as Turbo Pascal became available. Did some Assembly, ISR, TSR etc. All this while working for a Manufacturing Co. for 8 years. Had my own solo Co. doing barcode labeling software for 4 years (terrible business man, all I wanted to do was code). Since then working for various software companies. Moved to Windows around the time of 3.1 with Borland C then C++. Then on to VC++ and MFC, and just about anything I could get my hands on or had to learn for my job, and been at it ever since. Of course recently I've been playing with .NET, ASP, C#, WPF etc.