⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globals.h

📁 VC++视频开发实例集锦(包括“远程视频监控”"语音识别系统"等13个经典例子)
💻 H
字号:

// Globals

# ifndef CP_GLOBALS_H
# define CP_GLOBALS_H

typedef struct _CPs_DrawContext
{
    HDC m_dcDraw;
    POINT m_ptOffset;
    RECT m_rClip;

} CPs_DrawContext;


typedef void* CP_HPLAYER;
typedef void* CP_HPLAYLIST;
typedef void* CP_HPLAYLISTITEM;
typedef void* CP_COMPOSITEFILE;
typedef void* CP_HINTERFACE;
typedef void* CP_HINTERFACEPART;
typedef void* CP_HSYSICON;



#include "resource.h"
#include "skin.h"
#include "CPI_Verbs.h"
#include "CPI_Keyboard.h"
#include "CPI_Image.h"
#include "CPI_Interface.h"
#include "CPSK_Skin.h"
#include "CLV_ListView.h"
#include "String.h"

// Handle to player
#define CP_BUILD_NUMBER		214
#define CIC_HTTPHEADER		"http://"

#define WM_NOTIFYICON WM_USER
#define NOTIFY_ICON_ID 4567
#define CPC_INVALIDCHAR		-1

// Registry
#define CIC_COOLPLAYER_FILETYPE			"CoolPlayer.Audio"
#define CIC_COOLPLAYER_FILEDESC			"CoolPlayer Audio file"
#define CIC_COOLPLAYER_PLAYLISTFILETYPE	"CoolPlayer.Playlist"
#define CIC_COOLPLAYER_PLAYLISTFILEDESC	"CoolPlayer Playlist"
#define	CLC_COOLPLAYER_INTERFACECLASSNAME	"CoolPlayer_Interface"
#define	CLC_COOLPLAYER_WINDOWCLASSNAME	"CoolPlayer"
#define	CLC_COOLPLAYER_PLAYLIST_WINDOWCLASSNAME	"CoolPlayer_Playlist"

// Playlist columns
#define PLAYLIST_TRACKSTACK  0
#define PLAYLIST_TITLE		1
#define PLAYLIST_ARTIST		2
#define PLAYLIST_ALBUM		3
#define PLAYLIST_YEAR		4
#define PLAYLIST_TRACKNUM	5
#define PLAYLIST_COMMENT	6
#define PLAYLIST_GENRE		7
#define PLAYLIST_PATH		8
#define PLAYLIST_FILENAME	9
#define PLAYLIST_LENGTH		10

#define PLAYLIST_first		0
#define PLAYLIST_last		10

#define PLAYLIST_IMAGE_SELECTED	0
#define PLAYLIST_IMAGE_PLAIN	1


// Hotkeys
#define VK_MEDIA_NEXT_TRACK 0xB0
#define VK_MEDIA_PREV_TRACK 0xB1
#define VK_MEDIA_STOP		0xB2
#define VK_MEDIA_PLAY_PAUSE 0xB3
//
#define CP_HOTKEY_NEXT	0x01
#define CP_HOTKEY_PREV	0x02
#define CP_HOTKEY_PLAY0	0x03
#define CP_HOTKEY_STOP	0x04
#define CP_HOTKEY_PLAY1	0x05

#define	VUVOLUME	0
#define EQ1			1
#define EQ2			2
#define EQ3			3
#define EQ4			4
#define EQ5			5
#define EQ6			6
#define EQ7			7
#define EQ8			8
#define POSITION	100

// Playlist defines for resizing
#define	RESIZE		5
#define BOTTOMRIGHT 4
#define TOPRIGHT	2
#define BOTTOMLEFT	3
#define TOPLEFT		1

#define ASCENDING	0
#define DESCENDING	1
#define RANDOM		2

// Timer IDs
#define CPC_TIMERID_SCROLLTITLETEXT	0x033
#define CPC_TIMERID_INTERTRACKDELAY	0x038
#define CPC_TIMERID_BOUNCINGICON	0x29A
#define CPC_TIMERID_ROTATINGSMILY	0x29A

#define SC_SIZE_TOPLEFT			SC_SIZE+4
#define SC_SIZE_TOPMIDDLE		SC_SIZE+3
#define SC_SIZE_TOPRIGHT		SC_SIZE+5
#define SC_SIZE_SIDELEFT		SC_SIZE+1
#define SC_SIZE_SIDERIGHT		SC_SIZE+2
#define SC_SIZE_BOTTOMLEFT		SC_SIZE+7
#define SC_SIZE_BOTTOMMIDDLE	SC_SIZE+6
#define SC_SIZE_BOTTOMRIGHT		SC_SIZE+8


// Main graphics bitmaps

struct
{
    HBITMAP bmp_main_up;
    HBITMAP bmp_main_down;
    HBITMAP bmp_main_switch;
    HBITMAP bmp_main_time_font;
    HBITMAP bmp_main_title_font;
    HBITMAP bmp_main_track_font;
    HBITMAP bmp_main_title_area;
    HBITMAP bmp_playlist_bg;
    HPALETTE pal_main;
}
graphics;

// Window pointers

struct
{
    HWND	wnd_main;
    HWND    dlg_playlist;
    HWND    dlg_options;
    HWND    wnd_tooltip;
    HWND    wnd_playlist_IPEdit;
    HWND    m_hWndFindDialog;
    HWND    m_hWndMain;
    HWND    m_hWndPlaylist;
    CP_HINTERFACE m_hifMain;
    CP_HINTERFACE m_hifPlaylist;
}
windows;

// Drawable areas

struct
{
    HDC     dc_memory;
    HDC     dc_main;
}
drawables;


// Bitmaps for playlist

struct
{
    SIZE    UpLeft;
    SIZE    UpRight;
    SIZE    DownLeft;
    SIZE    DownRight;
    SIZE    UpMid;
    SIZE    DownMid;
    SIZE    LeftMid;
    SIZE    RightMid;
    SIZE    MinSize;
    SIZE    Colors;
    HBITMAP bm[16];
}
PlayListBitmap;

// Playist item structure.
struct ListStruct
{
    int     nritem;
    unsigned char mp3track;
    char    mp3title[MAX_PATH];
    char    mp3artist[31];
    char    mp3album[31];
    char    mp3year[5];
    char    mp3comment[31];
    char    mp3genre[30];
    char    mp3path[MAX_PATH];
};

/////////////////////////////////////////////////////////////////////////////////
//
// Player state
typedef enum _CPe_PlayerState
{
    cppsUndefined,
    cppsEndOfStream,
    cppsPaused,
    cppsPlaying,
    cppsStopped
} CPe_PlayerState;
//
// File info
typedef struct _CPs_FileInfo
{
    UINT m_iFileLength_Secs;
    UINT m_iBitRate_Kbs;
    UINT m_iFreq_Hz;
    BOOL m_bStereo;
    BOOL m_b16bit;
} CPs_FileInfo;
//
// EQ settings
typedef struct _CPs_EQSettings
{
    BOOL m_bEnabled;
    char m_aryBands[8];

} CPs_EQSettings;
//
typedef enum _CPe_QuickFindTerm
{
    qftUndefined,
    qftTitle,
    qftAlbum,
    qftArtist
} CPe_QuickFindTerm;
//
typedef enum _CPe_MixerMode
{
    mmMasterVolume,
    mmWaveVolume,
    mmInternal
} CPe_MixerMode;
//
//
/////////////////////////////////////////////////////////////////////////////////

BOOL    cmdline_parse_argument(char *token);
BOOL    main_draw_vu_all(HWND hWnd, WPARAM wParam, LPARAM lParam,
                         BOOL rememberlastval);
BOOL    path_is_directory(char *filename);
BOOL    path_is_relative(const char *path);
BOOL    path_remove_filespec(LPTSTR path);
BOOL    playlist_skin_draw_side(HDC hdc, HDC winmemdc, BITMAP * bm,
                                RECT * winrect, int type);
BOOL    playlist_skin_get_ini_value(char *key, char *position,
                                    SIZE * rect);
BOOL    playlist_skin_set_control_bitmap(char *position);
BOOL    window_set_always_on_top(HWND hWnd, BOOL yes);
BOOL CALLBACK window_search(HWND hWnd, LPARAM lParam);
char   *str_delete_substr(char *strbuf, char *strtodel);
char   *str_trim(char *string);
DWORD   main_get_program_path(HINSTANCE hInst, LPTSTR pszBuffer,
                              DWORD dwSize);
HBITMAP systray_rotate_bmp(HBITMAP hBitmap, float radians,
                           COLORREF clrBack);
HRESULT path_create_link(LPCSTR lpszPathObj, LPSTR lpszPathLink,
                         LPSTR lpszDesc);
HRGN    main_bitmap_to_region(HBITMAP hBmp, COLORREF cTransparentColor);
HRGN    main_bitmap_to_region_1bit(HBITMAP hBmp, COLORREF cTransparentColor);
HWND    about_create(HWND hWnd);
int     cmdline_parse_files(int argc,char **argv);
int     cmdline_parse_options(int argc,char **argv);
int     main_add_tooltips(HWND hWnd, BOOL update);
int     main_play_control(WORD wParam, HWND hWnd);
int     main_set_default_skin(void);
int     main_skin_open(char *name);
int     main_skin_set_struct_value(int object, int x, int y, int w, int h,
                                   int maxw, int x2, int y2, int w2,
                                   int h2, char *tooltip);
int     playlist_open_file(BOOL clearlist);
int     playlist_skin_read();
int     playlist_write();
int     window_bmp_blt(HWND hWnd, HBITMAP SrcBmp, int srcx, int srcy,
                       int srcw, int srch, int dstx, int dsty);
int    *cmdline_get_argument(char *arg);
LRESULT CALLBACK main_windowproc(HWND hWnd, UINT message, WPARAM wParam,
                                 LPARAM lParam);
LRESULT CALLBACK options_windowproc(HWND hwndDlg, UINT msg, WPARAM wParam,
                                    LPARAM lParam);
LRESULT CALLBACK url_windowproc(HWND hwndDlg, UINT msg, WPARAM wParam,
                                LPARAM lParam);
LRESULT CALLBACK about_windowproc(HWND hwndDlg, UINT msg, WPARAM wParam,
                                  LPARAM lParam);
LRESULT CALLBACK playlist_windowproc(HWND hwndDlg, UINT msg, WPARAM wParam,
                                     LPARAM lParam);
void    cmdline_usage(void);
void    main_update_title_text();
void    main_draw_bitrate(HWND hWnd);
void    playlist_draw_control(UINT controlid, LPDRAWITEMSTRUCT ds);
void    main_draw_controls_all(HWND hWnd);
void    main_draw_frequency(HWND hWnd);
void    main_draw_time(HWND hWnd);
void    main_draw_title(HWND hWnd);
void    main_draw_tracknr(HWND hWnd);
void    main_draw_vu_from_mouse(HWND hWnd, int vunummer, int vuwaarde);
void    main_draw_vu_from_value(HWND hWnd, int vunummer, int vuwaarde);
void    main_menuproc(HWND hWnd, LPPOINT points);
void    main_reset_window(HWND hWnd);
void    main_set_eq(void);
void    main_skin_add_to_menu(char *name);
void    main_skin_check_ini_value(char *textposition,
                                  Associate * associate);
void    main_skin_select_menu(char *name);
void    options_read(void);
void    options_write(void);
void    path_add_backslash(char *path);
void    path_unquote(LPTSTR path);
void    playlist_write_default(void);
void    options_create(HWND hWnd);
void    playlist_move_control(int ControlID, LPRECT NewPlaylistrect,
                              int type);
void    url_create(HWND hWnd);

struct
{
    BOOL    auto_exit_after_playing;
    BOOL    auto_play_when_started;
    BOOL    easy_move;
    BOOL    equalizer;
    BOOL    allow_file_once_in_playlist;
    BOOL	allow_multiple_instances;
    BOOL    always_on_top;
    BOOL    read_id3_tag;
    BOOL    read_id3_tag_of_selected;
    BOOL    read_id3_tag_in_background;
    BOOL    support_id3v2;
    BOOL    prefer_native_ogg_tags;
    BOOL    work_out_track_lengths;
    BOOL    show_remaining_time;
    BOOL    remember_playlist;
    BOOL    remember_last_played_track;
    BOOL    repeat_playlist;
    BOOL    rotate_systray_icon;
    BOOL    scroll_track_title;
    BOOL    show_on_taskbar;
    BOOL    shuffle_play;
    BOOL    use_default_skin;
    BOOL    use_playlist_skin;
    char    last_used_directory[MAX_PATH];
    char	initial_file[MAX_PATH];
    int     playlist_column_widths[PLAYLIST_last + 1];
    int     playlist_column_seq[PLAYLIST_last + 1];
    BOOL    playlist_column_visible[PLAYLIST_last + 1];
    int     eq_settings[9];
    int     show_playlist;
    int     decoder_output_mode;
    int     remember_skin_count;
    POINT   main_window_pos;
    RECT    playlist_window_pos;
    short   last_selected_skin_number;
    unsigned char playlist_skin_file[MAX_PATH];
    unsigned char main_skin_file[MAX_PATH];
    unsigned int seconds_delay_after_track;
    CPe_QuickFindTerm m_enQuickFindTerm;
}
options;

struct
{
    BOOL    playlist_bool_addsong;
    DWORD	playlist_last_add_time;
    char    main_text_frequency[33];
    char    main_text_bitrate[33];
    unsigned long main_long_track_duration;
    int     main_int_skin_last_number;
    CPe_PlayerState m_enPlayerState;
    int     main_drag_anchor_point;
    unsigned char main_text_last_browsed_dir[MAX_PATH];
    int     main_int_track_total_seconds;
    int     main_int_show_minimized;
    int     playlist_int_last_searched_track;
    int main_int_title_scroll_position;
    int mail_int_title_scroll_max_position;
    BOOL    cmdline_bool_clear_playlist_first;
    BOOL    main_bool_wavwrite_dir_already_known;
    BOOL    main_bool_skin_next_is_default;
    BOOL    main_bool_slider_keep_focus;
    BOOL    playlist_bool_force_skin_from_options;
    int     main_int_track_position;
    RECT    playlist_rect;
    HMENU   main_menu_popup;
    double  about_double_smiley_jump_pos;
    double  about_double_smiley_jump_speed;
    int     m_iVolume;
    CP_HPLAYER m_hPlayer;
    CP_HPLAYLIST m_hPlaylist;
    BOOL	m_bStreaming;
    int		m_iStreamingPortion;
    int	m_iLastPlaylistSortColoumn;
    HIMAGELIST m_hPlaylistImages;
    POINT m_ptQuickFindWindowPos;
    BOOL m_bQuickFindWindowPos_Valid;
    HHOOK m_hhkListView_Posted;
    BOOL m_bIP_InhibitUpdates;
    unsigned int m_iInPlaceSubItem;
    CP_HLISTVIEW m_hPlaylistViewControl;
    BOOL m_bOptions_ChangedSkin;
    CP_HSYSICON m_hSysIcon;
    CPe_MixerMode m_enMixerMode;
} globals;

CoolSkin Skin;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -