Exemplo n.º 1
0
BOOL CDockContext::Track()
/************************/
{
    ASSERT( m_pBar != NULL );
    m_pBar->SetCapture();
    while( CWnd::GetCapture() == m_pBar ) {
        MSG msg;
        if( !::GetMessage( &msg, NULL, 0, 0 ) ) {
            ::PostQuitMessage( msg.wParam );
            ::ReleaseCapture();
            break;
        }
        if( msg.message == WM_MOUSEMOVE ) {
            Move( msg.pt );
        } else if( msg.message == WM_LBUTTONUP ) {
            EndDrag();
            ::ReleaseCapture();
            return( TRUE );
        } else if( msg.message == WM_KEYDOWN ) {
            OnKey( msg.wParam, TRUE );
        } else if( msg.message == WM_KEYUP ) {
            OnKey( msg.wParam, FALSE );
        }
    }
    return( FALSE );
}
Exemplo n.º 2
0
void App::ProcessEvents()
{
	SDL_Event event;

	while (SDL_PollEvent(&event))
	{
		if (event.type == SDL_QUIT)
		{
			Quit();
		}
		else if (event.type == SDL_KEYDOWN)
		{
			OnKey(event.key, true);
		}
		else if (event.type == SDL_KEYUP)
		{
			OnKey(event.key, false);
		}
		else if (event.type == SDL_MOUSEBUTTONDOWN)
		{
			OnMouseButton(event.button.x, event.button.y, event.button.button, true);
		}
		else if (event.type == SDL_MOUSEBUTTONUP)
		{
			OnMouseButton(event.button.x, event.button.y, event.button.button, false);
		}
		else if (event.type == SDL_MOUSEMOTION)
		{
			OnMouseMove(event.button.x, event.button.y);
		}

		//TODO add more event filters as appropriate
	}
}
Exemplo n.º 3
0
BOOL CCJDockContext::TrackDockBar()
{
	if (::GetCapture() != NULL)
		return FALSE;
	m_pBar->SetCapture();
	ASSERT(m_pBar == CWnd::GetCapture());
	
	while (CWnd::GetCapture() == m_pBar)
	{
		MSG msg;
		if (!::GetMessage(&msg, NULL, 0, 0))
		{
			AfxPostQuitMessage(msg.wParam);
			break;
		}
		
		switch (msg.message)
		{
		case WM_LBUTTONUP:
			if (m_bDragging)
				EndDragDockBar();
			else
				EndResize();
			return TRUE;
		case WM_MOUSEMOVE:
			if (m_bDragging)
				MoveDockBar(msg.pt);
			else
				Stretch(msg.pt);
			break;
		case WM_KEYUP:
			if (m_bDragging)
				OnKey((int)msg.wParam, FALSE);
			break;
		case WM_KEYDOWN:
			if (m_bDragging)
				OnKey((int)msg.wParam, TRUE);
			if (msg.wParam == VK_ESCAPE)
			{
				CancelLoop();
				return FALSE;
			}
			break;
		case WM_RBUTTONDOWN:
			CancelLoop();
			return FALSE;
			
			// just dispatch rest of the messages
		default:
			DispatchMessage(&msg);
			break;
		}
	}
	
	CancelLoop();
	return FALSE;
}
Exemplo n.º 4
0
// Window Message handler. Interprets windows messages and dispatches
// mouse/keyboard input to the OnMouse/OnKeyboard functions.
LRESULT FxPlayerTiny::MemberWndProc(UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

        case WM_SETCURSOR:
            if (LOWORD(lParam)==HTCLIENT)
            {
                ::SetCursor(::LoadCursor(0, IDC_ARROW));
                return 0;
            }
            break;
          
        // *** The following logic is used to route input to GFxPlayer.
        
        case WM_MOUSEMOVE:
            OnMouse(GFxEvent::MouseMove, 0, LOWORD(lParam), HIWORD(lParam));
            return 0;
        case WM_LBUTTONDOWN:
            ::SetCapture(hWnd);
            OnMouse(GFxEvent::MouseDown, 0, LOWORD(lParam), HIWORD(lParam));
            return 0;
        case WM_LBUTTONUP:
            ::ReleaseCapture();
            OnMouse(GFxEvent::MouseUp, 0, LOWORD(lParam), HIWORD(lParam));
            return 0;

        case WM_KEYDOWN:
            OnKey((UInt)wParam, 1);
            return 0;
        case WM_KEYUP:          
            OnKey((UInt)wParam, 0);
            return 0;
        case WM_CHAR:
            {
                UInt32 wcharCode = (UInt32)wParam;
                if (pMovie && wcharCode) 
                {
                    GFxCharEvent event(wcharCode);
                    pMovie->HandleEvent(event);
                }
            }
            break;
    }

    return DefWindowProc(hWnd, msg, wParam, lParam);
}
Exemplo n.º 5
0
void SpectDisplay::OnMenu(wxCommandEvent& event)
{//=============================================
	int id;
	int code;
	wxKeyEvent keyevent;
	SpectFrame *sf;
	static int key[] = {0x1044,0x3044,0x104e,0x1047,0x105a,0x1051,0x3051,WXK_F1,WXK_F2,0x1049,WXK_F10,0x104b};

	id = event.GetId();

	if(id >= 300)
	{
		sf = spectseq->frames[sframe];
		sf->ToggleMarker(id-300);
		Refresh();
		return;
	}

	// simulate a KeyEvent that corresponds to this menu entry
	code = key[id - 201];
	keyevent.m_keyCode = code & 0xfff;
	if(code & 0x1000)
		keyevent.m_controlDown = TRUE;
	else
		keyevent.m_controlDown = FALSE;
	if(code & 0x2000)
		keyevent.m_shiftDown = TRUE;
	else
		keyevent.m_shiftDown = FALSE;
	OnKey(keyevent);
}
Exemplo n.º 6
0
bool Listen(SDL_Event &event)
{
	switch (event.type)
	{
	case SDL_KEYDOWN:
		OnKey(event.key.keysym.sym);
		break;
	case SDL_KEYUP:
		break;
	case SDL_MOUSEMOTION:
		mx = float(event.motion.x) / float(screen_width);
		my = float(event.motion.y) / float(screen_height);
		break;
	case SDL_MOUSEBUTTONDOWN:
		break;
	case SDL_MOUSEBUTTONUP:
		break;
	case SDL_JOYAXISMOTION:
		break;
	case SDL_JOYBUTTONDOWN:
		break;
	case SDL_JOYBUTTONUP:
		break;
	case SDL_QUIT:
		AppRunning = false;
		break;
	case SDL_VIDEORESIZE:
		Reshape(event.resize.w, event.resize.h);
		break;
	default:
		return false;
		break;
	}
	return true;
}
Exemplo n.º 7
0
BOOL cIMEWnd::OnMsg(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
	if(!m_pDockingEx ) return FALSE;

	switch(msg)
	{
	case WM_IME_COMPOSITION:
	case WM_IME_CHAR:
		{
			return OnIMEComposition(hWnd, msg, wparam, lparam);
		}
		break;
	case WM_CHAR:
		{
			return OnChar(hWnd, msg, wparam, lparam);
		}
		break;
	case WM_KEYDOWN:
		{
			return OnKey(hWnd, msg, wparam, lparam);
		}
		break;
	case WM_KEYUP:
		{
			if( wparam == VK_CONTROL )
				m_bCtrlPushed = FALSE;
		}
		break;
	}
	return TRUE;
}
Exemplo n.º 8
0
bool CMMsgBox::OnKey(AWS_KeyType type, AWS_KeyCode code)
{
	if ( AWS_Key_Up == type )
	{
		switch ( code )
		{
		case AWS_KeyCode_LeftMenu:
			OnLeftMenu();
			return true;

		case AWS_KeyCode_RightMenu:
			OnRightMenu();
			return true;
		}
	}

	if ( AWS_Key == type )
	{
		switch ( code )
		{
		case AWS_KeyCode_OK:
			return OnKey(AWS_Key_Up, AWS_KeyCode_LeftMenu);
		}
	}

	return true;
//	return CAwsContainer::OnKey(type, code);
}
Exemplo n.º 9
0
//---------------------------------------------------------------------------
//process individual OnKey events passed from pushkeys
//and default key delay
void TPushKeys::HandleOnKeyEvent(CString &Key,TShiftState &ShiftState)
{

	//pass keys to users OnKey event handler
	if (OnKey)
	{
		OnKey(this,Key,ShiftState);
	}
}
Exemplo n.º 10
0
void menu_Key(int key, int mod)
{
	for(int i = g_itemStack.size() - 1; i >= 0; --i)
	{
		auto ptr = g_itemStack[i];
		if(ptr->OnKey(key, mod))
			break;
	}
}
LRESULT CALLBACK MsgProc1(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
	HDC hdc;
	PAINTSTRUCT pc;
	RECT rc;
	GetClientRect(hwnd, &rc);
	POINT WindowCenter = { rc.left + (rc.right - rc.left) / 2, rc.top + (rc.bottom - rc.top) / 2 };
	switch (message)
	{

	case WM_MOUSEMOVE: {
		// Convert mouse motion to be relative
		// (report the offset and re-center).
		POINT newPos = { LOWORD(lparam), HIWORD(lparam) };
		::ClientToScreen(hwnd, &newPos);
		if ((newPos.x == WindowCenter.x) && (newPos.y == WindowCenter.y))
			break;
		SetCursorPos(WindowCenter.x, WindowCenter.y);
		const float                Sensitivity = 1.0f;
		MouseRotY -= (Sensitivity * (newPos.x - WindowCenter.x)) / 360.0f;
		if (newPos.x <  WindowCenter.x)
		{
			GraphicsEngine::Instance().GetScene().getCameraController()->setLeftRotation();
		}
		else
		{
			GraphicsEngine::Instance().GetScene().getCameraController()->setRightRotation();
		}
		break;
	}
	case WM_KEYDOWN:    OnKey(wparam, true);    break;
	case WM_KEYUP:      OnKey(wparam, false);   break;
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &pc);
		EndPaint(hwnd, &pc);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd, message, wparam, lparam);
	}
	return 0;
}
LRESULT CALLBACK MyFunc( HWND h, UINT msg, WPARAM w, LPARAM p )
{
	int x = ( ( int )( short )LOWORD( p ) ), y = ( ( int )( short )HIWORD( p ) );

	float Xf = ( float )x / ( float )WindowW;
	float Yf = ( float )y / ( float )WindowH;

	switch ( msg )
	{
		case WM_KEYUP:
			OnKey( w, false );

			if ( w == 27 ) { SendMessage( h, WM_DESTROY, 0, 0 ); }

			break;

		case WM_KEYDOWN:
			OnKey( w, true );
			break;

		case WM_LBUTTONDOWN:
			SetCapture( h );
			OnMouseDown( 0, LVector2( Xf, Yf ) );
			break;

		case WM_MOUSEMOVE:
			OnMouseMove( LVector2( Xf, Yf ) );
			break;

		case WM_LBUTTONUP:
			OnMouseUp( 0, LVector2( Xf, Yf ) );
			ReleaseCapture();
			break;

		case WM_DESTROY:
			PostQuitMessage( 0 );
			break;
	}

	return DefWindowProc( h, msg, w, p );
}
Exemplo n.º 13
0
LRESULT CDangleWindowHex::DangleProc(UINT Msg,WPARAM wParam,LPARAM lParam)
{
	//выбор по сообщению
	switch(Msg)
	{
	case WM_KEYDOWN:
		return OnKey(wParam),0;
	case WM_COMMAND:
		return OnCommand(LOWORD(wParam),HIWORD(wParam),(HWND)lParam),0;
	case WM_MOUSEWHEEL:
		return OnMouseWheel(GET_WHEEL_DELTA_WPARAM(wParam)/WHEEL_DELTA,GET_KEYSTATE_WPARAM(wParam)),0;
	default:
		return DefWindowProc(mhWindow,Msg,wParam,lParam);
	}
}
Exemplo n.º 14
0
dword Tapplication::EventHandler( word event, dword param1, dword param2 )
{
	if (IsClosing())
		return param1;

    switch ( event )
	{
	case EVT_IDLE:
		OnIdle();
		return 0;
	case EVT_KEY:
		if (m_reshowUIKey != 0)
			return OnKeyWhenHidden(param1, param2);
		return OnKey( param1, param2 );
	default:
		return OnOtherEvent(event, param1, param2);
	}

}
bool CWidgetDisplay::HandleEvent(SDL_Event vEvent, CPaintingParms* pPaintingParms)
{
   // Handle keyboard and mouse events
   switch (vEvent.type)
   {
      case SDL_KEYDOWN:
      //case SDL_KEYUP:
         OnKey(vEvent, pPaintingParms);
         break;
      case SDL_MOUSEMOTION:
      case SDL_MOUSEBUTTONDOWN:
      case SDL_MOUSEBUTTONUP:
         OnMouse(vEvent, pPaintingParms);
         break;

      default:
         break;
   }

   return true;
}
	JNIEXPORT void JNICALL Java_com_packtpub_ndkcookbook_game1_Game1Activity_DrawFrame( JNIEnv* env, jobject obj )
	{
		// send events synchronously
		{
			LMutex Lock( &g_MotionEventsQueueMutex );

			for ( auto m : g_MotionEventsQueue )
			{
				GestureHandler_SendMotion( m.ContactID, m.Flag, m.Pos, m.Pressed );
			}

			for ( auto m : g_KeysQueue )
			{
				OnKey( m.Code, m.Pressed );
			}

			g_MotionEventsQueue.clear();
			g_KeysQueue.clear();
		}

		GenerateTicks();
	}
Exemplo n.º 17
0
		bool WindowSDL::Update()
		{
			if(_is_destroyed)
				return false;

			SDL_Event e;
			while(SDL_PollEvent(&e))
			{
				if(e.type == SDL_WINDOWEVENT && e.window.event == SDL_WINDOWEVENT_CLOSE)
					_is_destroyed = true;
				else if(e.type == SDL_KEYDOWN || e.type == SDL_KEYUP)
					OnKey(ToKeyEvent(e.type, e.key.keysym));
				else if(e.type == SDL_MOUSEBUTTONUP)
				{
					switch(e.button.button)
					{
						case SDL_BUTTON_LEFT: OnMouseUp(1); break;
						case SDL_BUTTON_RIGHT: OnMouseUp(2); break;
						case SDL_BUTTON_MIDDLE: OnMouseUp(3); break;
					}
				}
				else if(e.type == SDL_MOUSEBUTTONDOWN)
				{
					switch(e.button.button)
					{
						case SDL_BUTTON_LEFT: OnMouseDown(1); break;
						case SDL_BUTTON_RIGHT: OnMouseDown(2); break;
						case SDL_BUTTON_MIDDLE: OnMouseDown(3); break;
					}
				}
				else if(e.type == SDL_MOUSEMOTION)
				{
					OnMouseMove(e.motion.x, e.motion.y);
				}
			}

			return !_is_destroyed;
		}
Exemplo n.º 18
0
BOOL CDockContext::Track()
{
	// don't handle if capture already set
	if (::GetCapture() != NULL)
		return FALSE;

	// set capture to the window which received this message
	m_pBar->SetCapture();
	ASSERT(m_pBar == CWnd::GetCapture());

#ifndef _MAC
	// get messages until capture lost or cancelled/accepted
	while (CWnd::GetCapture() == m_pBar)
	{
		MSG msg;
		if (!::GetMessage(&msg, NULL, 0, 0))
		{
			AfxPostQuitMessage(msg.wParam);
			break;
		}

		switch (msg.message)
		{
		case WM_LBUTTONUP:
			if (m_bDragging)
				EndDrag();
			else
				EndResize();
			return TRUE;
		case WM_MOUSEMOVE:
			if (m_bDragging)
				Move(msg.pt);
			else
				Stretch(msg.pt);
			break;
		case WM_KEYUP:
			if (m_bDragging)
				OnKey((int)msg.wParam, FALSE);
			break;
		case WM_KEYDOWN:
			if (m_bDragging)
				OnKey((int)msg.wParam, TRUE);
			if (msg.wParam == VK_ESCAPE)
			{
				CancelLoop();
				return FALSE;
			}
			break;
		case WM_RBUTTONDOWN:
			CancelLoop();
			return FALSE;

		// just dispatch rest of the messages
		default:
			DispatchMessage(&msg);
			break;
		}
	}
#else
	Point   ptCur = {0};

	// get messages until capture lost or cancelled/accepted
	while (CWnd::GetCapture() == m_pBar)
	{
		EventRecord     er;

		if (OSEventAvail(everyEvent, &er))
		{
			GetNextEvent(everyEvent, &er);
			switch (er.what)
			{
			case mouseUp:
				if (m_bDragging)
					EndDrag();
				else
					EndResize();
				return TRUE;

			case keyDown:
			case keyUp:
			case autoKey:
			case app2Evt:
			{
				MSG     msg;

				if (WrapEvent(&er, &msg, PM_REMOVE))
				{
					if (m_bDragging)
						OnKey((int)msg.wParam, msg.message == WM_KEYDOWN);
					if (msg.message == WM_KEYUP && msg.wParam == VK_ESCAPE)
					{
						CancelLoop();
						return FALSE;
					}
				}
				break;
			}

			default:
				break;
			}
		}
		else
		{
			if (!EqualPt(er.where, ptCur))
			{
				POINT pt = {er.where.h, er.where.v};
				if (m_bDragging)
					Move(pt);
				else
					Stretch(pt);
			}
		}
	}
#endif
	CancelLoop();

	return FALSE;
}
Exemplo n.º 19
0
bool CBMenu::OnKey(AWS_KeyType type, AWS_KeyCode code)
{
	CEspRect rt;
	rt.m_ptLT.m_nX = m_nFullBorderPixel;
	rt.m_ptRB.m_nX = m_nMenuWidth - m_nFullBorderPixel;
	if ( AWS_Key == type )
	{
		switch ( code )
		{
		case AWS_KeyCode_UpArrow:
			if ( m_nFocusItemIndex > 0 )
			{
				--m_nFocusItemIndex;
				if ( m_nFocusItemIndex < m_nDrawItemStartIndex )
				{
					m_nDrawItemStartIndex = m_nFocusItemIndex;
					// 全都要移动
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nDrawItemCount * m_nItemHeight;
					InvalideRect(rt);
				}
				else
				{
					// 只需要移动两个
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight + (m_nFocusItemIndex - m_nDrawItemStartIndex) * m_nItemHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight * 2;
					InvalideRect(rt);
				}
			}
			else
			{
				m_nFocusItemIndex = m_nItemCount - 1;
				int n = m_nItemCount - m_nDrawItemCount;

				if ( n != m_nDrawItemStartIndex )
				{
					// 全都要移动
					m_nDrawItemStartIndex = n;

					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nDrawItemCount * m_nItemHeight;
					InvalideRect(rt);
				}
				else
				{
					// 只需要移动两个
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight;
					InvalideRect(rt);

					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight + (m_nDrawItemCount - 1) * m_nItemHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight;
					InvalideRect(rt);
				}
			}
			return true;

		case AWS_KeyCode_DownArrow:
			if ( m_nFocusItemIndex < m_nItemCount - 1 )
			{
				++m_nFocusItemIndex;
				if ( m_nFocusItemIndex - m_nDrawItemStartIndex >= m_nDrawItemCount )
				{
					++m_nDrawItemStartIndex;

					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nDrawItemCount * m_nItemHeight;
					InvalideRect(rt);
				}
				else
				{
					// 只需要移动两个
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight + (m_nFocusItemIndex -1 - m_nDrawItemStartIndex) * m_nItemHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight * 2;
					InvalideRect(rt);
				}
			}
			else
			{
				int n = m_nDrawItemStartIndex;
				m_nFocusItemIndex = 0;
				m_nDrawItemStartIndex = 0;

				if ( 0 != n )
				{
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nDrawItemCount * m_nItemHeight;
					InvalideRect(rt);
				}
				else
				{
					// 只需要移动两个
					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight;
					InvalideRect(rt);

					rt.m_ptLT.m_nY = m_nFullBorderPixel + m_nTBBorderHeight + (m_nDrawItemCount - 1) * m_nItemHeight;
					rt.m_ptRB.m_nY = rt.m_ptLT.m_nY + m_nItemHeight;
					InvalideRect(rt);
				}
			}
			return true;

		case AWS_KeyCode_LeftArrow:
			if ( m_bIsSubMenu )
			{
				// 销毁自己
				DestroyPopWnd();
			}
			return true;

		case AWS_KeyCode_RightArrow:
			if ( m_pItemData[m_nFocusItemIndex].m_nSubMenuID > 0 )
			{
				CEspPoint ptLT;
				ptLT.m_nX = m_tRect.m_ptLT.m_nX + m_nMenuWidth;
				ptLT.m_nY = m_tRect.m_ptLT.m_nY + m_nItemHeight * (m_nFocusItemIndex - m_nDrawItemStartIndex);
				PumpCommand(m_nWndID, AWS_SysCmd_PopMenu, m_pItemData[m_nFocusItemIndex].m_nSubMenuID, (int)(&ptLT));
			}
			return true;

		case AWS_KeyCode_OK:
			if ( m_pItemData[m_nFocusItemIndex].m_nSubMenuID > 0 )
			{
				return OnKey(type, AWS_KeyCode_RightArrow);
			}
			else
			{
				PostCommand(m_nWndID, AWS_SysCmd_MenuCmd, m_nFocusItemIndex);
				PumpCommand(m_nWndID, AWS_SysCmd_MenuDestroy);

				// 销毁所有弹出式菜单
				DestroyPopWnd(m_nPopMenuCount);
				return true;
			}
		}
	}

	if ( AWS_Key_Up == type )
	{
		if ( !m_bIsPopupOnly )
		{
			switch ( code )
			{
			case AWS_KeyCode_LeftMenu:
				return OnKey(AWS_Key, AWS_KeyCode_OK);

			case AWS_KeyCode_RightMenu:
				// 销毁所有弹出式菜单
				PumpCommand(m_nWndID, AWS_SysCmd_MenuDestroy);
				DestroyPopWnd(m_nPopMenuCount);
				return true;
			}
		}

		if ( code >= AWS_KeyCode_1  && code <= AWS_KeyCode_9 )
		{
			int nIndex = code - AWS_KeyCode_1;
			if ( nIndex < m_nItemCount )
			{
				// 重绘前focus窗口
				int n = m_nFocusItemIndex;
				CEspRect rect;
				m_nFocusItemIndex = nIndex;
				if ( GetItemRectFromIndex(n, rect) )
					InvalideRect(rect);
				if ( GetItemRectFromIndex(m_nFocusItemIndex, rect) )
					InvalideRect(rect);
				
				return OnKey(AWS_Key, AWS_KeyCode_OK);
			}
		}
	}

	if ( m_bIsPopupOnly )
		return CAwsContainer::OnKey(type, code);
	else
		return true;
}
Exemplo n.º 20
0
void CWallTool::OnGoldKey () { OnKey (2); }
Exemplo n.º 21
0
void CWallTool::OnRedKey () { OnKey (3); }
Exemplo n.º 22
0
void CWallTool::OnNoKey () { OnKey (0); }
Exemplo n.º 23
0
void CWallTool::OnBlueKey () { OnKey (1); }
Exemplo n.º 24
0
BOOL COXDragDockContext::Track()
{
    // don't handle if capture already set
    if (::GetCapture() != NULL)
        return FALSE;
	
    // set capture to the window which received this message
    m_pBar->SetCapture();
    ASSERT(m_pBar == CWnd::GetCapture());
	
    // get messages until capture lost or cancelled/accepted
    while(CWnd::GetCapture() == m_pBar)
	{
        MSG msg;
#ifndef _MAC
        if (!::GetMessage(&msg, NULL, 0, 0))
#else
			// don't allow yielding while tracking since we don't have LockWindowUpdate
			if (!PeekMessage(&msg, NULL, 0, 0, PM_REMOVE|PM_NOYIELD))
            continue;
        if (msg.message == WM_QUIT)
#endif
		{
            AfxPostQuitMessage(PtrToInt(msg.wParam));
            break;
		}
		
        switch (msg.message)
		{
            case WM_LBUTTONUP:		// drag finished 
                EndDrag();
                return TRUE;
				
            case WM_MOUSEMOVE:
                Move(msg.pt);
                break;
				
            case WM_KEYUP:
                OnKey((int)msg.wParam, FALSE);
                break;
				
            case WM_KEYDOWN:
				OnKey((int)msg.wParam, TRUE);
                if (msg.wParam == VK_ESCAPE)
					goto exit_cancel_drag;
                break;
				
			case WM_RBUTTONDOWN:
				goto exit_cancel_drag;
				
				// just dispatch rest of the messages
            default:
                DispatchMessage(&msg);
				break;
		}
	}
    
exit_cancel_drag:			// goto  - can't use break as we're inside a switch()    
	CancelDrag();
	return FALSE;
}
Exemplo n.º 25
0
BOOL CDockContext::Track()
{
	// don't handle if capture already set
	if (::GetCapture() != NULL)
		return FALSE;

	// set capture to the window which received this message
	m_pBar->SetCapture();
	ASSERT(m_pBar == CWnd::GetCapture());

	// get messages until capture lost or cancelled/accepted
	while (CWnd::GetCapture() == m_pBar)
	{
		MSG msg;
		if (!::GetMessage(&msg, NULL, 0, 0))
		{
			AfxPostQuitMessage(msg.wParam);
			break;
		}

		switch (msg.message)
		{
		case WM_LBUTTONUP:
			if (m_bDragging)
				EndDrag();
			else
				EndResize();
			return TRUE;
		case WM_MOUSEMOVE:
			if (m_bDragging)
				Move(msg.pt);
			else
				Stretch(msg.pt);
			break;
		case WM_KEYUP:
			if (m_bDragging)
				OnKey((int)msg.wParam, FALSE);
			break;
		case WM_KEYDOWN:
			if (m_bDragging)
				OnKey((int)msg.wParam, TRUE);
			if (msg.wParam == VK_ESCAPE)
			{
				CancelLoop();
				return FALSE;
			}
			break;
		case WM_RBUTTONDOWN:
			CancelLoop();
			return FALSE;

		// just dispatch rest of the messages
		default:
			DispatchMessage(&msg);
			break;
		}
	}

	CancelLoop();

	return FALSE;
}
Exemplo n.º 26
0
LRESULT OculusRoomTinyApp::windowProc(UINT msg, WPARAM wp, LPARAM lp)
{
    switch (msg)
    {
    case WM_MOUSEMOVE:
        {
            if (MouseCaptured)
            {
                // Convert mouse motion to be relative (report the offset and re-center).
                POINT newPos = { LOWORD(lp), HIWORD(lp) };
                ::ClientToScreen(hWnd, &newPos);
                if ((newPos.x == WindowCenter.x) && (newPos.y == WindowCenter.y))
                    break;
                ::SetCursorPos(WindowCenter.x, WindowCenter.y);

                LONG dx = newPos.x - WindowCenter.x;
                LONG dy = newPos.y - WindowCenter.y;           
                pApp->OnMouseMove(dx, dy, 0);
            }
        }
        break;

    case WM_MOVE:
        {
            RECT r;
            GetClientRect(hWnd, &r);
            WindowCenter.x = r.right/2;
            WindowCenter.y = r.bottom/2;
            ::ClientToScreen(hWnd, &WindowCenter);
        }
        break;

    case WM_KEYDOWN:
        OnKey((unsigned)wp, true);
        break;
    case WM_KEYUP:
        OnKey((unsigned)wp, false);
        break;

    case WM_SETFOCUS:
        giveUsFocus(true);
        break;

    case WM_KILLFOCUS:
        giveUsFocus(false);
        break;

    case WM_CREATE:
        // Hack to position mouse in fullscreen window shortly after startup.
        SetTimer(hWnd, 0, 100, NULL);
        break;

    case WM_TIMER:
        KillTimer(hWnd, 0);
        giveUsFocus(true);
        break;

    case WM_QUIT:
    case WM_CLOSE:
        Quit = true;
        return 0;
    }

    return DefWindowProc(hWnd, msg, wp, lp);
}
Exemplo n.º 27
0
void sTextControl::OnKey(sU32 key)
{
  sInt len;
  sU32 ckey;
  sInt i,j;
  sChar buffer[2];

// prepare...

  if(key&sKEYQ_SHIFT) key|=sKEYQ_SHIFT;
  if(key&sKEYQ_CTRL ) key|=sKEYQ_CTRL ;

  len = sGetStringLen(Text);
  if(Cursor>len)
    Cursor = len;

// normal keys

  switch(key&(0x8001ffff|sKEYQ_SHIFT|sKEYQ_CTRL))
  {
  case sKEY_BACKSPACE:
    if(SelMode)
    {
      DelSel();
    }
    else
    {
      if(Cursor==0)
        break;
      Cursor--;
      Engine(Cursor,1,0);
      Post(DoneCmd);
      SelMode = 0;
      OnCalcSize();
      ScrollToCursor();
    }
    break;
  case sKEY_DELETE:
    if(SelMode)
    {
      DelSel();
    }
    else
    {
      Engine(Cursor,1,0);
      OnCalcSize();
      Post(DoneCmd);
    }
    ScrollToCursor();
    break;
  case sKEY_ENTER:
    if(SelMode)
      DelSel();
    i = Cursor-GetCursorX();
    for(j=0;i<Cursor && Text[i]==' ';i++)
      j++;
    if(Cursor>i && Text[Cursor-1]=='{')
      j+=2;
    Engine(Cursor,1,"\n");
    Cursor++;
    for(i=0;i<j;i++)
    {
      Engine(Cursor,1," ");
      Cursor++;
    }
    OnCalcSize();
    ScrollToCursor();
    break;
  case sKEY_PAGEUP:
    len = RealY/sPainter->GetHeight(sGui->FixedFont)-8;
    if(len<1) len = 1;
    for(i=0;i<len;i++)
      OnKey(sKEY_UP);
    break;
  case sKEY_PAGEDOWN:
    len = RealY/sPainter->GetHeight(sGui->FixedFont)-8;
    if(len<1) len = 1;
    for(i=0;i<len;i++)
      OnKey(sKEY_DOWN);
    break;
  case sKEY_INSERT:
    Overwrite = !Overwrite;
    ScrollToCursor();
    break;
  case 'x'|sKEYQ_CTRL:
    OnCommand(sTCC_CUT);
    OnCalcSize();
    ScrollToCursor();
    break;
  case 'c'|sKEYQ_CTRL:
    OnCommand(sTCC_COPY);
    ScrollToCursor();
    break;
  case 'v'|sKEYQ_CTRL:
    OnCommand(sTCC_PASTE);
    OnCalcSize();
    ScrollToCursor();
    break;
  case 'b'|sKEYQ_CTRL:
    OnCommand(sTCC_BLOCK);
    ScrollToCursor();
    break;
  }

//  sDPrintF("key %08x\n",key);
  ckey = key&~(sKEYQ_SHIFT|sKEYQ_ALTGR|sKEYQ_REPEAT);
  if((ckey>=0x20 && ckey<=0x7e) || (ckey>=0xa0 && ckey<=0xff))
  {
    DelSel();
    buffer[0] = ckey;
    buffer[1] = 0;
    if(Overwrite && Cursor<len)
    {
      Engine(Cursor,1,0);
      Engine(Cursor,1,buffer);
      Cursor++;
      Post(DoneCmd);
    }
    else
    {
      Engine(Cursor,1,buffer);
      Cursor++;
      Post(DoneCmd);
    } 
    OnCalcSize();
    ScrollToCursor();
  }
  else
  {
    Parent->OnKey(key);
  }

// cursor movement and shift-block-marking

  switch(key&0x8001ffff)
  {
  case sKEY_LEFT:
  case sKEY_RIGHT:
  case sKEY_UP:
  case sKEY_DOWN:
  case sKEY_HOME:
  case sKEY_END:
    if(SelMode==0 && (key&sKEYQ_SHIFT))
    {
      SelMode = 1;
      SelPos = Cursor;
    }
    if(SelMode==1 && !(key&sKEYQ_SHIFT))
    {
      SelMode = 0;
    }
    break;
  }

  switch(key&0x8001ffff)
  {
  case sKEY_LEFT:
    if(Cursor>0)
      Cursor--;
    ScrollToCursor();
    break;
  case sKEY_RIGHT:
    if(Cursor<len)
      Cursor++;
    ScrollToCursor();
    break;
  case sKEY_UP:
    j = i = CursorWish;
    if(Text[Cursor]=='\n' && Cursor>0)
      Cursor--;
    while(Text[Cursor]!='\n' && Cursor>0)
      Cursor--;
    while(Text[Cursor-1]!='\n' && Cursor>0)
      Cursor--;
    while(i>0 && Text[Cursor]!='\n' && Text[Cursor]!=0)
    {
      Cursor++;
      i--;
    }
    ScrollToCursor();
    CursorWish = j;
    break;
  case sKEY_DOWN:
    j = i = CursorWish;
    while(Text[Cursor]!='\n' && Text[Cursor]!=0)
      Cursor++;
    if(Text[Cursor]=='\n')
    {
      Cursor++;
      while(i>0 && Text[Cursor]!='\n' && Text[Cursor]!=0)
      {
        Cursor++;
        i--;
      }
    }
    ScrollToCursor();
    CursorWish = j;
    break;
  case sKEY_HOME:
    while(Cursor>0 && Text[Cursor-1]!='\n')
      Cursor--;
    ScrollToCursor();
    break;
  case sKEY_END:
    while(Text[Cursor]!='\n' && Text[Cursor]!=0)
      Cursor++;
    ScrollToCursor();
    break;
  }

}
Exemplo n.º 28
0
sBool PageWin::OnCommand(sU32 cmd)
{
  sMenuFrame *mf;
//  ToolObject *to;
  ViewWin *view;

  switch(cmd)
  {

  case CMD_POPUP:
    mf = new sMenuFrame;
    mf->AddMenu("Add",CMD_POPADD,'a');
    mf->AddMenu("Add Misc",CMD_POPMISC,'1');
    mf->AddMenu("Add Texture",CMD_POPTEX,'2');
    mf->AddMenu("Add Mesh",CMD_POPMESH,'3');
    mf->AddMenu("Add Scene",CMD_POPSCENE,'4');
    mf->AddMenu("Add Material",CMD_POPMAT,'5');
		mf->AddMenu("Add FXChain",CMD_POPFX,'6');
    mf->AddSpacer();
    mf->AddMenu("Normal Mode",' ',' ');
    mf->AddMenu("Select Rect",'r','r');
    mf->AddMenu("Pick",'p','p');
    mf->AddMenu("Duplicate",'d','d');
    mf->AddMenu("Width",'w','w');
    mf->AddMenu("Move",'m','m');
    mf->AddSpacer();
    mf->AddMenu("Show",CMD_SHOW,'s');
    mf->AddSpacer();
    mf->AddMenu("Delete",CMD_DELETE,sKEY_DELETE);
    mf->AddMenu("Cut",CMD_CUT,'x');
    mf->AddMenu("Copy",CMD_COPY,'c');
    mf->AddMenu("Paste",CMD_PASTE,'v');
    mf->AddBorder(new sNiceBorder);
    mf->SendTo = this;
    sGui->AddPopup(mf);
    return sTRUE;

  case CMD_SHOW:
    view = (ViewWin *) App->FindActiveWindow(sCID_TOOL_VIEWWIN);
    if(EditOp && view && EditOp->Class->OutputCID)
    {
      view->SetObject(EditOp);
    }
    if(EditOp && view && (EditOp->Class->Flags & POCF_STORE)) // store
    {
      view->SetObject(EditOp);
    }
    if(Doc)
      Doc->UpdatePage();
    return sTRUE;

  case CMD_POPADD:
    AddOps(AddOpClass);
    return sTRUE;

  case CMD_POPMISC:
    AddOpClass = 0;
    AddOps(AddOpClass);
    return sTRUE;

  case CMD_POPTEX:
    AddOpClass = sCID_GENBITMAP;
    AddOps(AddOpClass);
    return sTRUE;

  case CMD_POPMESH:
    AddOpClass = sCID_GENMESH;
    AddOps(AddOpClass);
    return sTRUE;

  case CMD_POPSCENE:
    AddOpClass = sCID_GENSCENE;
    AddOps(AddOpClass);
    return sTRUE;

  case CMD_POPMAT:
    AddOpClass = sCID_GENMATERIAL;
    AddOps(AddOpClass);
    return sTRUE;

	case CMD_POPFX:
		AddOpClass = sCID_GENFXCHAIN;
		AddOps(AddOpClass);
		return sTRUE;

  case ' ':
  case 'r':
  case 'p':
  case 'd':
  case 'w':
  case 'm':
    OnKey(cmd);
    return sTRUE;

  case CMD_DELETE:
    if(Doc)
      Doc->Delete();
    return sTRUE;
  case CMD_CUT:
    if(Doc)
    {
      Doc->Copy();
      Doc->Delete();
    }
    return sTRUE;
  case CMD_COPY:
    if(Doc)
      Doc->Copy();
    return sTRUE;
  case CMD_PASTE:
    if(Doc)
      Doc->Paste(CursorX,CursorY);
    return sTRUE;

  default:
    if(cmd>=1024 && cmd<2048)
    {
      if(App->ClassList[cmd-1024].Name)
        AddOp(&App->ClassList[cmd-1024]);
      return sTRUE;
    }
    return sFALSE;
  }
}
Exemplo n.º 29
0
VOID CDangleWindowHex::OnKey(UINT Key)
{
	//выбор по клавише
	switch(Key)
	{
	case VK_DOWN:
		{
			//сдвинуть курсор вниз
			mSelectionOffset+=LINE_COUNT;
			UINT FileSize=mpEditedFile->GetSize();
			if(mSelectionOffset>=FileSize) mSelectionOffset=FileSize-1;
			//если курсор не помещаетс¤ в окне, сдвинуть окно
			if((mSelectionOffset-mWindowOffset)/LINE_COUNT>=mWindowLinesCount)
				mWindowOffset+=LINE_COUNT;
			//обновить окно
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	case VK_UP:
		{
			//сдвинуть курсор вверх
			if(mSelectionOffset<LINE_COUNT) mSelectionOffset=0;
			else mSelectionOffset-=LINE_COUNT;
			//если курсор не помещаетс¤ в окне, сдвинуть окно
			if(mSelectionOffset<mWindowOffset)
				if(mWindowOffset<LINE_COUNT) mWindowOffset=0;
				else mWindowOffset-=LINE_COUNT;
			//обновить окно
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	case VK_RIGHT:
		{
			//сдвинуть курсор вправо
			UINT FileSize=mpEditedFile->GetSize();
			if(mSelectionOffset<FileSize-1) mSelectionOffset++;
			//если курсор не помещаетс¤ в окне, сдвинуть окно
			if((mSelectionOffset-mWindowOffset)/LINE_COUNT>=mWindowLinesCount)
				mWindowOffset+=LINE_COUNT;
			//обновить окно
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	case VK_LEFT:
		{
			//сдвинуть курсор влево
			if(mSelectionOffset>=1) mSelectionOffset--;
			//если курсор не помещаетс¤ в окне, сдвинуть окно
			if(mSelectionOffset<mWindowOffset)
				if(mWindowOffset<LINE_COUNT) mWindowOffset=0;
				else mWindowOffset-=LINE_COUNT;
			//обновить окно
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	case VK_NEXT:
		{
			for(UINT i=0;i<mWindowLinesCount;++i)
				OnKey(VK_DOWN);
		}
		break;
	case VK_PRIOR:
		{
			for(UINT i=0;i<mWindowLinesCount;++i)
				OnKey(VK_UP);
		}
		break;
	case VK_HOME:
		{
			mSelectionOffset=0;
			mWindowOffset=0;
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	case VK_END:
		{
			mSelectionOffset=mpEditedFile->GetSize()-1;
			mWindowOffset=mSelectionOffset/LINE_COUNT*LINE_COUNT;
			InvalidateRect(mhWindow,NULL,FALSE);
		}
		break;
	}
}
void EngineStatePoolGetPlayerName::Red(bool down)
{
  // Allow spaces
  OnKey(' ', down);
}