예제 #1
0
파일: UiESCDlg.cpp 프로젝트: viticm/pap2
int KUiESCDlg::OnKeyDown(unsigned int uKey)
{
	int	nRet = 1;
	KWndButton* pActive = NULL;
	KWndButton* pToActive = NULL;
	if (uKey == VK_RETURN)
	{
		if (pActive = GetActiveBtn())
			OnClickButton(pActive);
	}
	else if (uKey == VK_ESCAPE)
		CloseWindow(false);
	else if (uKey == VK_UP)
	{
		pActive = GetActiveBtn();
		if (pActive == &m_ExitGameBtn)
			pToActive = &m_ContinueGameBtn;
		//else if (pActive == &m_ExitBtn)
		//	pToActive = &m_ExitGameBtn;
		else if (pActive == &m_HelpBtn)
			pToActive = &m_ExitGameBtn;
		//else if (pActive == &m_TaskBtn)
		//	pToActive = &m_HelpBtn;
		else if (pActive == &m_OptionsBtn)
			pToActive = &m_HelpBtn;
		else if (pActive == &m_ContinueGameBtn)
			pToActive = &m_OptionsBtn;
		else
			pToActive = &m_ExitGameBtn;
	}
	else if (uKey == VK_DOWN)
	{
		pActive = GetActiveBtn();
		if (pActive == &m_ExitGameBtn)
			pToActive = &m_HelpBtn;
		//else if (pActive == &m_ExitBtn)
		//	pToActive = &m_HelpBtn;
		else if (pActive == &m_HelpBtn)
			pToActive = &m_OptionsBtn;
		//else if (pActive == &m_TaskBtn)
		//	pToActive = &m_OptionsBtn;
		else if (pActive == &m_OptionsBtn)
			pToActive = &m_ContinueGameBtn;
		else if (pActive == &m_ContinueGameBtn)
			pToActive = &m_ExitGameBtn;
		else
			pToActive = &m_ExitGameBtn;
	}
	else
		nRet = 0;
	if (pToActive)
	{
		POINT		Pos;
		SIZE		Size;
		pToActive->GetAbsolutePos((int*)&Pos.x, (int*)&Pos.y);
		pToActive->GetSize((int*)&Size.cx, (int*)&Size.cy);
		Pos.x += Size.cx / 2;
		Pos.y += Size.cy / 2;
		Wnd_SetCursorPos(Pos.x, Pos.y);
	}
	return nRet;
}
예제 #2
0
파일: UiLogin.cpp 프로젝트: viticm/pap2
void KUiLogin::OnKeyDown(unsigned int uKey)
{
	if (uKey == VK_RETURN)
	{
		if (m_Cancel.IsButtonActive())
			OnCancel();
		else
			OnLogin();
	}
	else if (uKey == VK_TAB)
	{
        if ((GetKeyState(VK_SHIFT) & 0x8000) == 0)
        {
            // 如果没有按住Shift
			if (m_InvisibleLogin.IsButtonActive())
				m_Login.SetCursorAbove();
    		else if (m_Login.IsButtonActive())
			    m_RememberAccount.SetCursorAbove();
		    else if (m_RememberAccount.IsButtonActive())
			    m_Cancel.SetCursorAbove();
		    else
		    {
			    int x, y, cx;
			    m_Account.GetAbsolutePos(&x, &y);
			    m_Account.GetSize(&cx, NULL);
			    Wnd_SetCursorPos(x + cx, y);
			    Wnd_SetFocusWnd(&m_Account);
		    }
        }
        else
        {
            // 如果按住Shift
    		if (m_InvisibleLogin.IsButtonActive())
            {
				int x, y, cx;
				m_PassWord.GetAbsolutePos(&x, &y);
				m_PassWord.GetSize(&cx, NULL);
				Wnd_SetCursorPos(x + cx, y);
				Wnd_SetFocusWnd(&m_PassWord);
            }
			else if (m_Login.IsButtonActive())
			{
				m_InvisibleLogin.SetCursorAbove();
			}
		    else if (m_RememberAccount.IsButtonActive())
            {
	    	    m_Login.SetCursorAbove();
		    }
            else   // if m_Cancel.IsButtonActive()
		    {
                m_RememberAccount.SetCursorAbove();
		    }

        }
	}
	else if (uKey == VK_SPACE)
	{
		if (m_Login.IsButtonActive())
			OnLogin();
		else if (m_Cancel.IsButtonActive())
			OnCancel();
		else if (m_RememberAccount.IsButtonActive())
			m_RememberAccount.CheckButton(!m_RememberAccount.IsButtonChecked());
		else if (m_InvisibleLogin.IsButtonActive())
			m_InvisibleLogin.CheckButton(!m_InvisibleLogin.IsButtonChecked());
	}
	else if (uKey == VK_LEFT)
		m_Login.SetCursorAbove();
	else if (uKey == VK_RIGHT)
		m_Cancel.SetCursorAbove();
	else if (uKey == VK_ESCAPE)
		OnCancel();
}
예제 #3
0
//使鼠标指针以移动到悬浮在此窗口中的位置上
void KWndWindow::SetCursorAbove()
{
	Wnd_SetCursorPos(m_nAbsoluteLeft + m_Width / 2,
		m_nAbsoluteTop + m_Height / 2);
}
예제 #4
0
파일: UiLogin.cpp 프로젝트: viticm/pap2
//--------------------------------------------------------------------------
//	功能:窗口函数
//--------------------------------------------------------------------------
int KUiLogin::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
{
	int	nRet = 0;
	switch(uMsg)
	{
	case WND_N_BUTTON_CLICK:
		if (uParam == (unsigned int)(KWndWindow*)&m_Login)
			OnLogin();
		else if (uParam == (unsigned int)(KWndWindow*)&m_Cancel)
			OnCancel();
		break;
	case WND_N_EDIT_SPECIAL_KEY_DOWN:
		if (nParam == VK_TAB)
		{
            if ((GetKeyState(VK_SHIFT) & 0x8000) == 0)
            {
                // 如果没有按住Shift
			    if (uParam == (unsigned int)(KWndWindow*)&m_Account)
			    {
				    int x, y, cx;
				    m_PassWord.GetAbsolutePos(&x, &y);
				    m_PassWord.GetSize(&cx, NULL);
				    Wnd_SetCursorPos(x + cx, y);
				    Wnd_SetFocusWnd(&m_PassWord);
				    nRet = 1;
			    }
			    else if (uParam == (unsigned int)(KWndWindow*)&m_PassWord)
			    {
				    Wnd_SetFocusWnd(NULL);
					m_InvisibleLogin.SetCursorAbove();
				    nRet = 1;
			    }
            }
            else
            {
                // 如果按住Shift
			    if (uParam == (unsigned int)(KWndWindow*)&m_Account)
			    {
 				    Wnd_SetFocusWnd(NULL);
      			    m_Cancel.SetCursorAbove();
				    nRet = 1;
			    }
			    else if (uParam == (unsigned int)(KWndWindow*)&m_PassWord)
			    {
			        int x, y, cx;
			        m_Account.GetAbsolutePos(&x, &y);
			        m_Account.GetSize(&cx, NULL);
			        Wnd_SetCursorPos(x + cx, y);
			        Wnd_SetFocusWnd(&m_Account);

				    nRet = 1;
			    }
            }
		}
		else if (nParam == VK_RETURN)
		{
			if (uParam == (unsigned int)(KWndWindow*)&m_Account)
			{
				Wnd_SetFocusWnd(&m_PassWord);
				nRet = 1;
			}
			else if (uParam == (unsigned int)(KWndWindow*)&m_PassWord)
			{
				OnLogin();
				nRet = 1;
			}
		}
		else if (nParam == VK_ESCAPE)
		{
			OnCancel();
			nRet = 1;
		}
		break;
	case WM_KEYDOWN:
		OnKeyDown(uParam);
		nRet = 1;
		break;
	case WM_SYSKEYDOWN:
		if (uParam == 'A')
			OnEnableAutoLogin();
		break;
	case WND_N_EDIT_CHANGE:
		if(uParam == (unsigned int)(&m_Account))
		{
			char szBuffer[32];
			m_Account.GetText(szBuffer, sizeof(szBuffer), true);
			g_LoginLogic.SetLoginAccount(szBuffer);
			g_LoginLogic.LoadAccountSetting();
			m_InvisibleLogin.CheckButton(g_LoginLogic.IsInvisibleLogin());
		}
		break;
	default:
		nRet = KWndShowAnimate::WndProc(uMsg, uParam, nParam);
		break;
	}
	return nRet;
}