Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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;
}