本文整理汇总了C++中CN3UIBase::MouseProc方法的典型用法代码示例。如果您正苦于以下问题:C++ CN3UIBase::MouseProc方法的具体用法?C++ CN3UIBase::MouseProc怎么用?C++ CN3UIBase::MouseProc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CN3UIBase
的用法示例。
在下文中一共展示了CN3UIBase::MouseProc方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MouseProc
DWORD CUIManager::MouseProc(DWORD dwFlags, const POINT& ptCur, const POINT& ptOld)
{
m_dwMouseFlagsCur = UI_MOUSEPROC_NONE;
if (!m_bVisible || !m_bEnableOperation) return m_dwMouseFlagsCur;
if (s_pTooltipCtrl) s_pTooltipCtrl->MouseProc(dwFlags, ptCur, ptOld); // 툴팁에게 마우스 메세지 전달.
// child에게 메세지 전달
for(UIListItor itor = m_Children.begin(); m_Children.end() != itor; )
{
CN3UIBase* pChild = (*itor);
// 상거래 중이면 아이콘 매니저 윈도우만 작동..
if ( CGameProcedure::s_pProcMain && CGameProcedure::s_pProcMain->m_pUITransactionDlg &&
(CGameProcedure::s_pProcMain->m_pUITransactionDlg->IsVisible()))// && (pChild->UIType() != UI_TYPE_ICON_MANAGER) )
{
if ( CN3UIWndBase::m_pCountableItemEdit->IsLocked() )
{
if ( pChild->m_szID.compare("base_tradeedit") != 0 )
{ ++itor; continue; }
}
}
// 보관함에 보관중이면 아이콘 매니저 윈도우만 작동..
if ( CGameProcedure::s_pProcMain && CGameProcedure::s_pProcMain->m_pUIWareHouseDlg &&
(CGameProcedure::s_pProcMain->m_pUIWareHouseDlg->IsVisible()))// && (pChild->UIType() != UI_TYPE_ICON_MANAGER) )
{
if ( CN3UIWndBase::m_pCountableItemEdit->IsLocked() )
{
if ( pChild->m_szID.compare("base_tradeedit") != 0 )
{ ++itor; continue; }
}
}
// 개인간 거래중이면 아이콘 매니저 윈도우만 작동.. 돈 액수나 화살 갯수등을 입력하는 중이면.. 입력 윈도우만 작동..
if ( CGameProcedure::s_pProcMain && CGameProcedure::s_pProcMain->m_pSubProcPerTrade &&
(CGameProcedure::s_pProcMain->m_pSubProcPerTrade->m_ePerTradeState != PER_TRADE_STATE_NONE) )
{
if (CGameProcedure::s_pProcMain->m_pSubProcPerTrade->m_ePerTradeState == PER_TRARE_STATE_EDITTING)
{
if ( pChild->m_szID.compare("base_tradeedit") != 0 )
{ ++itor; continue; }
}
if ( CN3UIWndBase::m_pCountableItemEdit->IsLocked() )
{
if ( pChild->m_szID.compare("base_tradeedit") != 0 )
{ ++itor; continue; }
}
}
if(pChild->m_pChildUI && pChild->m_pChildUI->IsVisible())
{
DWORD dwRet = pChild->m_pChildUI->MouseProc(dwFlags, ptCur, ptOld);
if (UI_MOUSEPROC_DONESOMETHING & dwRet)
{ // 이경우에는 먼가 포커스를 받은 경우이다.
pChild->MouseProc(0, ptCur, ptOld);
m_dwMouseFlagsCur |= (UI_MOUSEPROC_DONESOMETHING|UI_MOUSEPROC_CHILDDONESOMETHING);
SetFocusedUI(pChild);//this_ui
return m_dwMouseFlagsCur;
}
else if ( ( UI_MOUSE_LBCLICK & dwFlags) && (UI_MOUSEPROC_INREGION & dwRet) )
{ // 영역 안을 클릭 했을때 먼가 일을 했다고 하고 리턴해버린다.
pChild->MouseProc(0, ptCur, ptOld);
m_dwMouseFlagsCur |= (UI_MOUSEPROC_DIALOGFOCUS);
SetFocusedUI(pChild);//this_ui
return m_dwMouseFlagsCur;
}
}
DWORD dwChildRet = pChild->MouseProc(dwFlags, ptCur, ptOld);
if (UI_MOUSEPROC_DONESOMETHING & dwChildRet)
{ // 이경우에는 먼가 포커스를 받은 경우이다.
m_dwMouseFlagsCur |= (UI_MOUSEPROC_DONESOMETHING|UI_MOUSEPROC_CHILDDONESOMETHING);
SetFocusedUI(pChild);//this_ui
return m_dwMouseFlagsCur;
}
else if ( ( UI_MOUSE_LBCLICK & dwFlags) && (UI_MOUSEPROC_INREGION & dwChildRet) )
{ // 영역 안을 클릭 했을때 먼가 일을 했다고 하고 리턴해버린다.
m_dwMouseFlagsCur |= (UI_MOUSEPROC_DIALOGFOCUS);
SetFocusedUI(pChild);//this_ui
return m_dwMouseFlagsCur;
}
else ++itor;
//else if (UI_MOUSE_LBCLICKED|UI_MOUSE_MBCLICK|UI_MOUSE_MBCLICKED|UI_MOUSE_RBCLICK|UI_MOUSE_RBCLICKED)
m_dwMouseFlagsCur |= dwChildRet;
}
// if(UI_MOUSE_LBCLICK & dwFlags) m_pUIFocused = NULL; // 포커스 받은 UI 기록.. 아무것도 안하면.. 널이다..
return m_dwMouseFlagsCur;
}
示例2:
DWORD CN3UIBase::MouseProc(DWORD dwFlags, const POINT& ptCur, const POINT& ptOld )
{
DWORD dwRet = UI_MOUSEPROC_NONE;
if (!m_bVisible) return dwRet;
// UI 움직이는 코드
if (UI_STATE_COMMON_MOVE == m_eState)
{
if (dwFlags&UI_MOUSE_LBCLICKED)
{
SetState(UI_STATE_COMMON_NONE);
}
else
{
MoveOffset(ptCur.x - ptOld.x, ptCur.y - ptOld.y);
}
dwRet |= UI_MOUSEPROC_DONESOMETHING;
return dwRet;
}
if(false == IsIn(ptCur.x, ptCur.y)) // 영역 밖이면
{
if(false == IsIn(ptOld.x, ptOld.y))
{
return dwRet;// 이전 좌표도 영역 밖이면
}
dwRet |= UI_MOUSEPROC_PREVINREGION; // 이전 좌표는 영역 안이었다.
}
else
{
// tool tip 관련
if (s_pTooltipCtrl) s_pTooltipCtrl->SetText(m_szToolTip);
}
dwRet |= UI_MOUSEPROC_INREGION; // 이번 좌표는 영역 안이다.
//this_ui
if(m_pChildUI && m_pChildUI->IsVisible())
return dwRet;
// child에게 메세지 전달
for(UIListItor itor = m_Children.begin(); m_Children.end() != itor; ++itor)
{
CN3UIBase* pChild = (*itor);
DWORD dwChildRet = pChild->MouseProc(dwFlags, ptCur, ptOld);
if (UI_MOUSEPROC_DONESOMETHING & dwChildRet)
{ // 이경우에는 먼가 포커스를 받은 경우이다.
// (아래 코드는 dialog를 관리하는 곳에서 해야 한다. 따라서 막아놓음)
// m_Children.erase(itor); // 우선 리스트에서 지우고
// m_Children.push_front(pChild); // 맨앞에 넣는다. 그리는 순서를 맨 나중에 그리도록 하려고
dwRet |= (UI_MOUSEPROC_CHILDDONESOMETHING|UI_MOUSEPROC_DONESOMETHING);
return dwRet;
}
}
// UI 움직이는 코드
if (UI_STATE_COMMON_MOVE != m_eState &&
PtInRect(&m_rcMovable, ptCur) && (dwFlags&UI_MOUSE_LBCLICK) )
{
SetState(UI_STATE_COMMON_MOVE);
dwRet |= UI_MOUSEPROC_DONESOMETHING;
return dwRet;
}
return dwRet;
}