win32_api.cpp

来自「VLC媒体播放程序」· C++ 代码 · 共 167 行

CPP
167
字号
/***************************************************************************** * win32_api.cpp: Various win32-specific functions ***************************************************************************** * Copyright (C) 2003 VideoLAN * $Id: win32_api.cpp,v 1.5 2003/06/04 16:03:33 gbazin Exp $ * * Authors: Olivier Teuli鑢e <ipkiss@via.ecp.fr> *          Emmanuel Puig    <karibu@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, * USA. *****************************************************************************/#ifdef WIN32//--- WIN32 -----------------------------------------------------------------#include <windows.h>//--- SKIN ------------------------------------------------------------------#include <vlc/intf.h>#include "../src/skin_common.h"#include "../src/window.h"#include "../os_window.h"#include "../os_api.h"#include "../src/event.h"         // for MAX_PARAM_SIZEextern intf_thread_t *g_pIntf;  // ugly, but it's not my fault ;)//---------------------------------------------------------------------------// Event API//---------------------------------------------------------------------------void OSAPI_SendMessage( SkinWindow *win, unsigned int message, unsigned int param1,                        long param2 ){    if( win == NULL )        SendMessage( NULL, message, param1, param2 );    else        SendMessage( ( (Win32Window *)win )->GetHandle(), message, param1,                     param2 );}//---------------------------------------------------------------------------void OSAPI_PostMessage( SkinWindow *win, unsigned int message, unsigned int param1,                        long param2 ){    if( win == NULL )        PostThreadMessage( g_pIntf->p_sys->dwThreadId, message, param1,                           param2 );    else        PostMessage( ( (Win32Window *)win )->GetHandle(), message, param1,                     param2 );}//---------------------------------------------------------------------------//---------------------------------------------------------------------------// Graphic API//---------------------------------------------------------------------------int OSAPI_GetNonTransparentColor( int c ){    // Get desktop device context    HDC DeskDC = GetWindowDC( GetDesktopWindow() );    // If color is black or color is same as black wether pixel color depth    if( c == 0 || SetPixel( DeskDC, 0, 0, c ) == 0 )    {        if( GetDeviceCaps( DeskDC, BITSPIXEL ) < 24 )            c = RGB(8, 0, 0);        else            c = RGB(1, 0, 0);    }    ReleaseDC( GetDesktopWindow(), DeskDC );    return c;}//---------------------------------------------------------------------------//---------------------------------------------------------------------------// General//---------------------------------------------------------------------------int OSAPI_GetTime(){    return GetTickCount();}//---------------------------------------------------------------------------void OSAPI_GetScreenSize( int &w, int &h ){    w = GetSystemMetrics(SM_CXSCREEN);    h = GetSystemMetrics(SM_CYSCREEN);}//---------------------------------------------------------------------------void OSAPI_GetMousePos( int &x, int &y ){    LPPOINT MousePos = new POINT;    GetCursorPos( MousePos );    x = MousePos->x;    y = MousePos->y;    delete MousePos;}//---------------------------------------------------------------------------string OSAPI_GetWindowTitle( SkinWindow *win ){    char *buffer = new char[MAX_PARAM_SIZE];    GetWindowText( ((Win32Window *)win)->GetHandle(), buffer, MAX_PARAM_SIZE );    string Title = buffer;    delete buffer;    return Title;}//---------------------------------------------------------------------------bool OSAPI_RmDir( string path ){    WIN32_FIND_DATA find;    string File;    string FindFiles = path + "\\*.*";    HANDLE handle    = FindFirstFile( (char *)FindFiles.c_str(), &find );    while( handle != INVALID_HANDLE_VALUE )    {        // If file is neither "." nor ".."        if( strcmp( find.cFileName, "." ) && strcmp( find.cFileName, ".." ) )        {            // Set file name            File = path + "\\" + (string)find.cFileName;            // If file is a directory, delete it recursively            if( find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )            {                OSAPI_RmDir( File );            }            // Else, it is a file so simply delete it            else            {                DeleteFile( (char *)File.c_str() );            }        }        // If no more file in directory, exit while        if( !FindNextFile( handle, &find ) )            break;    }    // Now directory is empty so can be removed    FindClose( handle );    RemoveDirectory( (char *)path.c_str() );    return true;}//---------------------------------------------------------------------------#endif

⌨️ 快捷键说明

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