예제 #1
0
void CMouse::SetCursor(UINT nFlags, const CPoint& screenPoint, const CPoint& clientPoint)
{
    if (SelectCursor(screenPoint, clientPoint, nFlags) && !m_pMainFrame->IsInteractiveVideo()) {
        ::SetCursor(m_cursors[m_cursor]);
    }
}
예제 #2
0
LRESULT WINAPI MsgProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
    {
		case WM_CLOSE:	
			RenderInfo.ScreenActive = false;
			Are_You_Sure ();
			RenderInfo.ScreenActive = true;
			break;

		case WM_DESTROY:	
			if (CommandInfo.Exit) PostQuitMessage (0);
			return (0);

		case WM_CREATE:		
			RenderInfo.ScreenActive = true;
			SelectCursor (ID_NORMAL_CURSOR);
			return (0);
							
		case WM_SETFOCUS:	
			RenderInfo.ScreenActive = true;
			SetWindowText (hWnd, ID_ACTIVE_TITLE);
			return (0);

		case WM_KILLFOCUS:	
			RenderInfo.ScreenActive = false;
			SetWindowText (hWnd, ID_INACTIVE_TITLE);
			return (0);
							
		case WM_LBUTTONDOWN:
			RenderInfo.realleftclickPosition.x = LOWORD(lParam);
			RenderInfo.realleftclickPosition.y = HIWORD(lParam);
			GetCursorPos (&(RenderInfo.leftclickPosition));
			if (Get_Area_Code (RenderInfo.realleftclickPosition.x, RenderInfo.realleftclickPosition.y) == ID_CLICK_MAIN)
				SelectCursor (ID_MOVE_CURSOR_1);
			else SelectCursor (ID_MOVE_CURSOR_2);
			RenderInfo.LMBDown = true;
			return (0);

		case WM_LBUTTONUP:	
			RenderInfo.LMBDown = false;
			SelectCursor (ID_NORMAL_CURSOR);
			return (0);

		case WM_MOUSEMOVE:		
			if (RenderInfo.LMBDown)
			{
				POINT move;
				GetCursorPos (&move);
	
				switch (Get_Area_Code (RenderInfo.realleftclickPosition.x, RenderInfo.realleftclickPosition.y))
				{
					case 0:	
						RenderInfo.Rotation[0] += (float) (PI / 180.0f * (float) ((move.x - RenderInfo.leftclickPosition.x)));
						RenderInfo.Rotation[1] += (float) (PI / 180.0f * (float) ((move.y - RenderInfo.leftclickPosition.y)));
						RenderInfo.leftclickPosition = move;
						break;
	
					case 1: 
						RenderInfo.MoveRayPoint = +1 * (float) (move.x - RenderInfo.leftclickPosition.x) / 100.0f - (float) (move.y - RenderInfo.leftclickPosition.y) / 1000.0f;
						RenderInfo.leftclickPosition = move;
						break;
						
					case 2:	
						RenderInfo.MovePhiPoint = (float) (move.x - RenderInfo.leftclickPosition.x) / 100.0f - (float) (move.y - RenderInfo.leftclickPosition.y) / 1000.0f;
						RenderInfo.leftclickPosition = move;
						break;
						
					case 3:	
						RenderInfo.MoveThetaPoint = (float) (move.x - RenderInfo.leftclickPosition.x) / 100.0f - (float) (move.y - RenderInfo.leftclickPosition.y) / 1000.0f;
						RenderInfo.leftclickPosition = move;
						break;
						
					case 4:	
						RenderInfo.MoveRadialPoint = (float) (move.x - RenderInfo.leftclickPosition.x) / 100.0f - (float) (move.y - RenderInfo.leftclickPosition.y) / 1000.0f;
						RenderInfo.leftclickPosition = move;
						break;
				}
				DisplayHelper = false;
				idleTime = timeGetTime ();
			}
			
			if (RenderInfo.RMBDown)
			{
				POINT move;
				GetCursorPos (&move);
	
				RenderInfo.currentRightPosition.x = LOWORD(lParam) - RenderInfo.rightclickPosition.x;
				RenderInfo.currentRightPosition.y = HIWORD(lParam) - RenderInfo.rightclickPosition.y;
			}
			return (0);

		case WM_RBUTTONDOWN:
			RenderInfo.RMBDown = true;
			GetCursorPos (&lastknownpos);
			RenderInfo.rightclickPosition.x = LOWORD(lParam);
			RenderInfo.rightclickPosition.y = HIWORD(lParam);
			RenderInfo.currentRightPosition.x = 0;
			RenderInfo.currentRightPosition.y = 0;
			SelectCursor (ID_MENU_CURSOR);
			return (0);

		case WM_RBUTTONUP:
			RenderInfo.RMBDown = false;
			switch (Get_Area_Code (RenderInfo.rightclickPosition.x, RenderInfo.rightclickPosition.y))
			{
				case ID_CLICK_MAIN:
					switch (Get_Area_Code (RenderInfo.currentRightPosition.x, RenderInfo.currentRightPosition.y, ID_MENU_CODE))
					{
						case ID_MENU_NW:	
							CommandInfo.LoadPotentialField = true;
							break;
						case ID_MENU_N:
							CommandInfo.SavePotentialField = true;
							break;
						case ID_MENU_NE:
							CommandInfo.SavePotentialFieldAs = true;
							break;
						case ID_MENU_W:
							CommandInfo.NewPotentialField = true;
							break;
						case ID_MENU_SW:
							CommandInfo.PrevSensor = true;
							break;
						case ID_MENU_S:
							CommandInfo.AddSensor = true;
							break;
						case ID_MENU_SE:
							CommandInfo.NextSensor = true;
							break;
						case ID_MENU_E:
							CommandInfo.SelectRay = true;
							break;
					}
					break;

					case ID_CLICK_RAY:
					switch (Get_Area_Code (RenderInfo.currentRightPosition.x, RenderInfo.currentRightPosition.y, ID_MENU_CODE))
					{
						case ID_MENU_NW:	
							CommandInfo.LoadRayFunction = true;
							break;
						case ID_MENU_N:
							CommandInfo.SaveRayFunction = true;
							break;
						case ID_MENU_NE:
							CommandInfo.ResetRay = true;
							break;
						case ID_MENU_W:
							CommandInfo.filterno = -1;
							CommandInfo.Numeric = true;
							break;
						case ID_MENU_SW:
							RenderInfo.ActiveNode--;
							break;
						case ID_MENU_S:
							CommandInfo.ChangeRes = true;
							break;
						case ID_MENU_SE:
							RenderInfo.ActiveNode++;
							break;
						case ID_MENU_E:
							CommandInfo.DeleteRay = true;
							break;
					}
					break;

				case ID_CLICK_PHIFILTER:
				case ID_CLICK_THETAFILTER:
				case ID_CLICK_RADIALFILTER:
					CommandInfo.filterno = Get_Area_Code (RenderInfo.rightclickPosition.x, RenderInfo.rightclickPosition.y) - ID_CLICK_PHIFILTER;
					switch (Get_Area_Code (RenderInfo.currentRightPosition.x, RenderInfo.currentRightPosition.y, ID_MENU_CODE))
					{
						case ID_MENU_NW:
						case ID_MENU_N:
						case ID_MENU_NE:
							CommandInfo.NewType = true;
							CommandInfo.newtype = Get_Area_Code (RenderInfo.currentRightPosition.x, 
																 RenderInfo.currentRightPosition.y, 
																 ID_MENU_CODE) - ID_MENU_NW;
							break;
						case ID_MENU_W:
							break;
						case ID_MENU_SW:
							break;
						case ID_MENU_S:
							CommandInfo.Numeric = true;
							break;
						case ID_MENU_SE:
							break;
					}
					break;
			}
			SelectCursor (ID_NORMAL_CURSOR);
			return (0);

		
		case WM_MBUTTONDOWN:
			RenderInfo.MBDDown = true;
			return (0);

		case WM_MBUTTONUP:	
			RenderInfo.MBDDown = false;
			return (0);

		case WM_KEYDOWN:
			switch (LOWORD(wParam))
			{
				case VK_ESCAPE: 
					Are_You_Sure ();
					break;
				case VK_RIGHT:
					CommandInfo.NextSensor = true;
					break;
				case VK_LEFT:
					CommandInfo.PrevSensor = true;
					break;
				case VK_PRIOR:
					RenderInfo.ActiveNode--;
					break;
				case VK_NEXT:
					RenderInfo.ActiveNode++;
					break;
				case VK_SPACE:
					SHOULD_DISPLAY_POINTS = !SHOULD_DISPLAY_POINTS;
					break;
				case VK_F1:
					WinHelp (HWND_DESKTOP, "dxTuner", HELP_CONTENTS, 0l);
					break;
			}
			RenderInfo.ScreenActive = true;
			return (0);

		case WM_COMMAND:
			//RenderInfo.ScreenActive = false;
			switch (LOWORD(wParam))
			{
				case IDM_NEW_FIELD:		
					CommandInfo.NewPotentialField = true;
					break;
				case ID_FILE_LOADFIELD: 
					CommandInfo.LoadPotentialField = true;
					break;
				case ID_FILE_SAVEFIELD: 
					CommandInfo.SavePotentialField = true;
					break;
				case ID_FILE_SAVEFIELDAS:
					CommandInfo.SavePotentialFieldAs = true;
					break;
				case IDM_ADD_SENSOR:
					CommandInfo.AddSensor = true; 
					break;
				case ID_FILE_EXIT:		
					Are_You_Sure ();
					break;
				case IDM_PHI_GAUSS:
					CommandInfo.filterno = 0; 
					CommandInfo.NewType = true;
					CommandInfo.newtype = 0;
					break;
				case IDM_PHI_SQUARE:
					CommandInfo.filterno = 0;
					CommandInfo.NewType = true;
					CommandInfo.newtype = 1;
					break;
				case IDM_PHI_TRIANGLE:	
					CommandInfo.filterno = 0;
					CommandInfo.NewType = true;
					CommandInfo.newtype = 2;
					break;
				case IDM_PHI_NUMERIC:
					CommandInfo.filterno = 0;
					CommandInfo.Numeric = true;
					break;

				case IDM_THETA_GAUSS:
					CommandInfo.filterno = 1; 
					CommandInfo.NewType = true;
					CommandInfo.newtype = 0;
					break;
				case IDM_THETA_SQUARE:	
					CommandInfo.filterno = 1;
					CommandInfo.NewType = true;
					CommandInfo.newtype = 1;
					break;
				case IDM_THETA_TRIANGLE:
					CommandInfo.filterno = 1;
					CommandInfo.NewType = true; 
					CommandInfo.newtype = 2;
					break;
				case IDM_THETA_NUMERIC:
					CommandInfo.filterno = 1;
					CommandInfo.Numeric = true;
					break;
				case IDM_RAD_GAUSS:	
					CommandInfo.filterno = 2;
					CommandInfo.NewType = true;
					CommandInfo.newtype = 0;
					break;
				case IDM_RAD_SQUARE:	
					CommandInfo.filterno = 2;
					CommandInfo.NewType = true; 
					CommandInfo.newtype = 1;
					break;
				case IDM_RAD_TRIANGLE:	
					CommandInfo.filterno = 2;
					CommandInfo.NewType = true;
					CommandInfo.newtype = 2;
					break;
				case IDM_RAD_NUMERIC:
					CommandInfo.filterno = 2;
					CommandInfo.Numeric = true;
					break;
				case IDM_LOAD_RAY:
					CommandInfo.LoadRayFunction = true;
					break;
				case IDM_SAVE_RAY:
					CommandInfo.SaveRayFunction = true;
					break;
				case IDM_RAY_NUMERIC:
					CommandInfo.filterno = -1; 
					CommandInfo.Numeric = true;
					break;
				case IDM_RESET_RAY:
					CommandInfo.ResetRay = true;
					break;
				case IDM_CHANGE_RES:	
					CommandInfo.ChangeRes = true;
					break;
				case IDM_SEL_RAY:	
					CommandInfo.SelectRay = true;
					break;
				case IDM_DELETE_RAY:
					CommandInfo.DeleteRay = true;
					break;
				case ID_ABOUT:
					DialogBox (RenderInfo.WindowInstance, MAKEINTRESOURCE(IDD_ABOUT), 
							   HWND_DESKTOP, (DLGPROC)AboutDlgProc);
					break;
				case IDM_PREFS:
					DialogBox (RenderInfo.WindowInstance, MAKEINTRESOURCE(IDD_PREFERENCES), 
					 		   HWND_DESKTOP, (DLGPROC)PreferencesDlgProc);	
					break;
			}
			RenderInfo.ScreenActive = true;
	}// END SWITCH

	return DefWindowProc (hWnd, msg, wParam, lParam);
}