📄 aintwin.h
字号:
/* ______ ___ ___
* /\ _ \ /\_ \ /\_ \
* \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
* \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
* \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
* \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
* \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
* /\____/
* \_/__/
*
* Some definitions for internal use by the Windows library code.
*
* By Stefan Schimanski.
*
* See readme.txt for copyright information.
*/
#ifndef AINTWIN_H
#define AINTWIN_H
#ifndef ALLEGRO_H
#error must include allegro.h first
#endif
#ifndef ALLEGRO_WINDOWS
#error bad include
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "winalleg.h"
#ifndef SCAN_DEPEND
/* workaround for buggy MinGW32 headers */
#ifdef ALLEGRO_MINGW32
#ifndef HMONITOR_DECLARED
#define HMONITOR_DECLARED
#endif
#if (defined _HRESULT_DEFINED) && (defined WINNT)
#undef WINNT
#endif
#endif
#include <objbase.h> /* for LPGUID */
#endif
/*******************************************/
/***************** general *****************/
/*******************************************/
AL_VAR(HINSTANCE, allegro_inst);
AL_VAR(HANDLE, allegro_thread);
AL_VAR(CRITICAL_SECTION, allegro_critical_section);
AL_VAR(int, _dx_ver);
#define _enter_critical() EnterCriticalSection(&allegro_critical_section)
#define _exit_critical() LeaveCriticalSection(&allegro_critical_section)
AL_FUNC(int, init_directx_window, (void));
AL_FUNC(void, exit_directx_window, (void));
AL_FUNC(int, wnd_call_proc, (AL_METHOD(int, proc, (void))));
AL_FUNC(int, get_dx_ver, (void));
AL_FUNC(void, set_sync_timer_freq, (int freq));
AL_FUNC(int, adjust_window, (int w, int h));
AL_FUNC(void, restore_window_style, (void));
AL_FUNC(void, save_window_pos, (void));
/* main window */
#define WND_TITLE_SIZE 128
AL_VAR(HWND, allegro_wnd);
AL_ARRAY(char, wnd_title);
AL_VAR(int, wnd_x);
AL_VAR(int, wnd_y);
AL_VAR(int, wnd_width);
AL_VAR(int, wnd_height);
AL_VAR(int, wnd_sysmenu);
AL_FUNCPTR(void, user_close_proc, (void));
/* gfx synchronization */
AL_VAR(CRITICAL_SECTION, gfx_crit_sect);
AL_VAR(int, gfx_crit_sect_nesting);
#define _enter_gfx_critical() EnterCriticalSection(&gfx_crit_sect); \
gfx_crit_sect_nesting++
#define _exit_gfx_critical() LeaveCriticalSection(&gfx_crit_sect); \
gfx_crit_sect_nesting--
#define GFX_CRITICAL_RELEASED (!gfx_crit_sect_nesting)
AL_FUNC(void, gfx_directx_restore, (void));
/* focus switch routines */
AL_VAR(BOOL, app_foreground);
AL_VAR(HANDLE, _foreground_event);
AL_FUNC(void, sys_directx_display_switch_init, (void));
AL_FUNC(void, sys_directx_display_switch_exit, (void));
AL_FUNC(int, sys_directx_set_display_switch_mode, (int mode));
AL_FUNC(int, sys_directx_set_display_switch_callback, (int dir, AL_METHOD(void, cb, (void))));
AL_FUNC(void, sys_directx_remove_display_switch_callback, (AL_METHOD(void, cb, (void))));
AL_FUNC(void, sys_switch_in, (void));
AL_FUNC(void, sys_switch_out, (void));
AL_FUNC(int, thread_switch_out, (void));
AL_FUNC(void, midi_switch_out, (void));
AL_FUNC(void, sys_directx_switch_out_callback, (void));
AL_FUNC(void, sys_directx_switch_in_callback, (void));
/*******************************************/
/************** keyboard routines **********/
/*******************************************/
AL_VAR(HANDLE, key_thread);
AL_FUNC(int, key_dinput_acquire, (void));
AL_FUNC(int, key_dinput_unacquire, (void));
AL_FUNC(void, wnd_acquire_keyboard, (void));
AL_FUNC(void, wnd_unacquire_keyboard, (void));
/*******************************************/
/************** mouse routines *************/
/*******************************************/
AL_VAR(HANDLE, mouse_thread);
AL_FUNC(int, mouse_dinput_acquire, (void));
AL_FUNC(int, mouse_dinput_unacquire, (void));
AL_FUNC(int, mouse_set_syscursor, (int state));
AL_FUNC(int, mouse_set_sysmenu, (int state));
AL_FUNC(void, wnd_acquire_mouse, (void));
AL_FUNC(void, wnd_unacquire_mouse, (void));
AL_FUNC(void, wnd_set_syscursor, (int state));
/*******************************************/
/************* thread routines *************/
/*******************************************/
AL_FUNC(void, win_init_thread, (void));
AL_FUNC(void, win_exit_thread, (void));
/******************************************/
/************* sound routines *************/
/******************************************/
AL_FUNC(_DRIVER_INFO *, _get_win_digi_driver_list, (void));
AL_FUNC(_DRIVER_INFO *, _get_win_midi_driver_list, (void));
AL_FUNC(void, _free_win_digi_driver_list, (void));
AL_FUNC(void, _free_win_midi_driver_list, (void));
AL_FUNC(DIGI_DRIVER *, _get_dsalmix_driver, (char *name, LPGUID guid, int num));
AL_FUNC(DIGI_DRIVER *, _get_woalmix_driver, (int num));
AL_FUNC(int, digi_directsound_capture_init, (LPGUID guid));
AL_FUNC(void, digi_directsound_capture_exit, (void));
AL_FUNC(int, digi_directsound_capture_detect, (LPGUID guid));
AL_FUNC(int, digi_directsound_rec_cap_rate, (int bits, int stereo));
AL_FUNC(int, digi_directsound_rec_cap_param, (int rate, int bits, int stereo));
AL_FUNC(int, digi_directsound_rec_source, (int source));
AL_FUNC(int, digi_directsound_rec_start, (int rate, int bits, int stereo));
AL_FUNC(void, digi_directsound_rec_stop, (void));
AL_FUNC(int, digi_directsound_rec_read, (void *buf));
/*******************************************/
/************* error handling **************/
/*******************************************/
AL_FUNC(char* , win_err_str, (long err));
AL_FUNC(void, thread_safe_trace, (char *msg, ...));
#if DEBUGMODE >= 2
#define _TRACE thread_safe_trace
#else
#define _TRACE 1 ? (void) 0 : thread_safe_trace
#endif
#ifdef __cplusplus
}
#endif
#endif /* ifndef AINTWIN_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -