📄 input_device_win32mouse.cpp
字号:
/* $Id: input_device_win32mouse.cpp,v 1.14 2003/10/29 13:12:43 mbn Exp $
**
** ClanLib Game SDK
** Copyright (C) 2003 The ClanLib Team
** For a total list of contributers see the file CREDITS.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "Display/display_precomp.h"
#include "API/Display/input_event.h"
#include "input_device_win32mouse.h"
#include "display_window_win32.h"
#include <stdio.h>
/////////////////////////////////////////////////////////////////////////////
// CL_InputDevice_Win32Mouse construction:
CL_InputDevice_Win32Mouse::CL_InputDevice_Win32Mouse(CL_DisplayWindow_Win32 *window) : window(window)
{
type = CL_InputDevice::mouse;
for (int i=0; i<32; i++) key_states[i] = false;
slots.connect(sig_key_down, this, &CL_InputDevice_Win32Mouse::on_key_down);
slots.connect(sig_key_up, this, &CL_InputDevice_Win32Mouse::on_key_up);
}
CL_InputDevice_Win32Mouse::~CL_InputDevice_Win32Mouse()
{
}
/////////////////////////////////////////////////////////////////////////////
// CL_InputDevice_Win32Mouse attributes:
int CL_InputDevice_Win32Mouse::get_x() const
{
POINT cursor_pos;
GetCursorPos(&cursor_pos);
BOOL res = ScreenToClient(window->get_hwnd(), &cursor_pos);
if (res == FALSE) return 0;
return cursor_pos.x;
}
int CL_InputDevice_Win32Mouse::get_y() const
{
POINT cursor_pos;
GetCursorPos(&cursor_pos);
BOOL res = ScreenToClient(window->get_hwnd(), &cursor_pos);
if (res == FALSE) return 0;
return cursor_pos.y;
}
bool CL_InputDevice_Win32Mouse::get_keycode(int keycode) const
{
if (keycode < 0 || keycode >= 32) return false;
return key_states[keycode];
}
std::string CL_InputDevice_Win32Mouse::get_key_name(int id) const
{
switch (id)
{
case 0: return "Mouse left";
case 1: return "Mouse right";
case 2: return "Mouse middle";
case 3: return "Mouse wheel up";
case 4: return "Mouse wheel down";
}
char buf[256];
sprintf(buf, "Mouse button %d", id);
return buf;
}
float CL_InputDevice_Win32Mouse::get_axis(int index) const
{
return 0.0f;
}
std::string CL_InputDevice_Win32Mouse::get_name() const
{
return "System Mouse";
}
int CL_InputDevice_Win32Mouse::get_axis_count() const
{
return 0;
}
int CL_InputDevice_Win32Mouse::get_button_count() const
{
return -1;
}
/////////////////////////////////////////////////////////////////////////////
// CL_InputDevice_Win32Mouse operations:
void CL_InputDevice_Win32Mouse::set_position(int x, int y)
{
POINT pt;
pt.x = x;
pt.y = y;
ClientToScreen(window->get_hwnd(), &pt);
SetCursorPos(pt.x, pt.y);
}
/////////////////////////////////////////////////////////////////////////////
// CL_InputDevice_Win32Mouse implementation:
void CL_InputDevice_Win32Mouse::on_key_down(const CL_InputEvent &event)
{
key_states[event.id] = true;
}
void CL_InputDevice_Win32Mouse::on_key_up(const CL_InputEvent &event)
{
key_states[event.id] = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -