156 lines
2.9 KiB
C++
156 lines
2.9 KiB
C++
#include "StdAfx.h"
|
|
#include "KTMenuPage.h"
|
|
#include "KTMenuCtrl.h"
|
|
|
|
BEGIN_MESSAGE_MAP(KTMenuPage, CAdUiPalette)
|
|
ON_WM_WINDOWPOSCHANGED()
|
|
ON_WM_TIMER()
|
|
ON_WM_DESTROY()
|
|
ON_WM_CONTEXTMENU()
|
|
//#if ARX > 15
|
|
ON_WM_MOUSEWHEEL()
|
|
//#endif
|
|
ON_WM_CREATE()
|
|
END_MESSAGE_MAP()
|
|
|
|
IMPLEMENT_DYNAMIC(KTMenuPage, CAdUiPalette)
|
|
|
|
KTMenuPage::KTMenuPage(void)
|
|
{
|
|
m_pMenCtrl = NULL;
|
|
}
|
|
|
|
KTMenuPage::~KTMenuPage(void)
|
|
{
|
|
if (m_pMenCtrl != NULL)
|
|
{
|
|
delete m_pMenCtrl;
|
|
m_pMenCtrl = NULL;
|
|
}
|
|
}
|
|
|
|
BOOL KTMenuPage::CreateMenuBar(LPCTSTR pszMenuFile,LPCTSTR pszTitle,int nIndex)
|
|
{
|
|
if (m_pMenCtrl != NULL)
|
|
return m_pMenCtrl->LoadMenu(pszMenuFile,pszTitle,nIndex);
|
|
return FALSE;
|
|
}
|
|
|
|
void KTMenuPage::GetFloatingMinSize (long *pnMinWidth, long *pnMinHeight)
|
|
{
|
|
*pnMinWidth=74;
|
|
*pnMinHeight=200;
|
|
}
|
|
|
|
BOOL KTMenuPage::OnMouseWheel(UINT nFlags,short zDelta,CPoint pt)
|
|
{
|
|
if(m_pMenCtrl!=NULL)
|
|
{
|
|
m_pMenCtrl->OnMouseWheel(nFlags,zDelta,pt);
|
|
return TRUE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void KTMenuPage::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
CAdUiPalette::OnTimer(nIDEvent);
|
|
}
|
|
|
|
LONG KTMenuPage::onAcadKeepFocus( UINT, LONG )
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
void KTMenuPage::OnSetActive ()
|
|
{
|
|
|
|
}
|
|
|
|
void KTMenuPage::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
|
|
{
|
|
CAdUiPalette::OnWindowPosChanged(lpwndpos);
|
|
|
|
if(m_pMenCtrl != NULL)
|
|
{
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
rect.bottom-=2;
|
|
m_pMenCtrl->MoveWindow(rect);
|
|
}
|
|
}
|
|
|
|
void KTMenuPage::OnContextMenu(CWnd* , CPoint point)
|
|
{
|
|
if (m_pMenCtrl == NULL) return;
|
|
|
|
CPoint pt(point);
|
|
m_pMenCtrl->ScreenToClient(&pt);
|
|
|
|
int iIndex = m_pMenCtrl->HitTest(&pt);
|
|
if (iIndex >= 0)
|
|
{
|
|
CRect rc;
|
|
m_pMenCtrl->GetItemRect(iIndex, rc);
|
|
m_pMenCtrl->ClientToScreen(&rc);
|
|
|
|
UINT nFlag;
|
|
switch (GetParent()->GetParent()->GetDlgCtrlID())
|
|
{
|
|
case AFX_IDW_DOCKBAR_TOP:
|
|
pt.x = rc.left;
|
|
pt.y = rc.bottom;
|
|
nFlag = TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RIGHTBUTTON;
|
|
break;
|
|
case AFX_IDW_DOCKBAR_BOTTOM:
|
|
pt.x = rc.left;
|
|
pt.y = rc.top;
|
|
nFlag = TPM_LEFTALIGN|TPM_BOTTOMALIGN|TPM_RIGHTBUTTON;
|
|
break;
|
|
case AFX_IDW_DOCKBAR_RIGHT:
|
|
pt.x = rc.left;
|
|
pt.y = rc.top;
|
|
nFlag = TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_RIGHTBUTTON;
|
|
break;
|
|
case AFX_IDW_DOCKBAR_LEFT:
|
|
default:
|
|
pt.x = rc.left + KTICON_SIZE_X * 6;
|
|
if (pt.x < point.x)
|
|
pt.x = point.x;
|
|
else if (pt.x > rc.right)
|
|
pt.x = rc.right;
|
|
pt.y = rc.top;
|
|
nFlag = TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RIGHTBUTTON;
|
|
break;
|
|
}
|
|
m_pMenCtrl->TrackPopupMenu(nFlag, &pt, iIndex);
|
|
}
|
|
}
|
|
|
|
void KTMenuPage::OnDestroy()
|
|
{
|
|
m_pMenCtrl->DestroyWindow();
|
|
CAdUiPalette::OnDestroy();
|
|
}
|
|
|
|
BOOL KTMenuPage::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
return CAdUiPalette::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
int KTMenuPage::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CAdUiPalette::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
if (m_pMenCtrl == NULL)
|
|
m_pMenCtrl = new KTMenuCtrl;
|
|
|
|
if (!m_pMenCtrl->Create(this, WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), 0))
|
|
return -1;
|
|
|
|
|
|
|
|
return 0;
|
|
}
|