📄 display_window_win32.h
字号:
/* $Id: display_window_win32.h,v 1.28 2003/10/14 15:52:12 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
*/
#ifndef header_display_window_win32
#define header_display_window_win32
#if _MSC_VER > 1000
#pragma once
#endif
#include "Display/display_window_generic.h"
#include "API/Core/Math/rect.h"
#include "API/Display/input_context.h"
#include "API/Display/input_device.h"
#include <map>
#include <dinput.h>
class CL_DisplayWindow_Win32 : public CL_DisplayWindow_Generic
{
//! Construction:
public:
CL_DisplayWindow_Win32();
virtual ~CL_DisplayWindow_Win32();
//! Attributes:
public:
virtual int get_width() const;
virtual int get_height() const;
virtual bool is_fullscreen() const;
virtual bool has_focus() const;
virtual CL_PixelBuffer &get_buffer(int i);
virtual const CL_PixelBuffer &get_buffer(int i) const;
virtual int get_buffer_count() const;
virtual bool get_keycode(int keycode) const;
HWND get_hwnd() { return hwnd; }
virtual CL_InputContext *get_ic() { return &input_context; }
const CL_Rect &get_layer_position() const { return layered_position; }
LPDIRECTINPUT8 get_directinput() const { return directinput; }
CL_Point mouse_pos;
bool left_ctrl_down, left_alt_down, left_shift_down;
bool right_ctrl_down, right_alt_down, right_shift_down;
//! Operations:
public:
virtual void set_fullscreen(int width, int height, int bpp, int refresh_rate);
virtual void set_windowed();
virtual void set_title(const std::string &title);
virtual void set_position(const CL_Rect &pos);
virtual void set_position(int x, int y);
virtual void set_size(int width, int height);
virtual void set_buffer_count(int flipping_buffers);
virtual void update(const CL_Rect &rect);
virtual void flip();
virtual void create_window(const CL_DisplayWindowDescription &desc);
virtual void destroy_window();
virtual void show_system_cursor();
virtual void hide_system_cursor();
void set_videomode(int width, int height, int bpp, int refresh_rate);
void restore_videomode();
virtual bool received_event(UINT uMsg, WPARAM wParam, LPARAM lParam);
//! Implementation:
private:
//: Creates the initial window based on the window description.
void create_new_window(const CL_DisplayWindowDescription &desc);
//: Updates the already created window to new window description.
void modify_window(const CL_DisplayWindowDescription &desc);
static BOOL CALLBACK enum_devices_callback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef);
void received_keyboard_input(UINT uMsg, WPARAM wParam, LPARAM lParam);
void received_mouse_input(UINT uMsg, WPARAM wParam, LPARAM lParam);
void received_mouse_move(UINT uMsg, WPARAM wParam, LPARAM lParam);
static std::map<HWND, CL_DisplayWindow_Win32 *> window_map;
static LONG WINAPI message_handler(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
CL_InputContext input_context;
CL_InputDevice keyboard;
CL_InputDevice mouse;
HWND hwnd;
std::string title;
bool fullscreen;
bool allow_resize;
bool layered;
CL_Rect layered_position;
int bpp;
unsigned char keys_down[256];
CL_Rect saved_position;
LPDIRECTINPUT8 directinput;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -