亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? urlmsw.cpp

?? A*算法 A*算法 A*算法 A*算法A*算法A*算法
?? CPP
字號(hào):
/////////////////////////////////////////////////////////////////////////////
// Name:        msw/urlmsw.cpp
// Purpose:     MS-Windows native URL support based on WinINet
// Author:      Hajo Kirchhoff
// Modified by:
// Created:     06/11/2003
// RCS-ID:      $Id: urlmsw.cpp,v 1.5.2.1 2006/01/18 11:25:47 JS Exp $
// Copyright:   (c) 2003 Hajo Kirchhoff
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"

#ifdef __BORLANDC__
    #pragma hdrstop
#endif

#if wxUSE_URL_NATIVE

#if !wxUSE_PROTOCOL_HTTP
#include <wx/protocol/protocol.h>

// empty http protocol replacement (for now)
// so that wxUSE_URL_NATIVE can be used with
// wxSOCKETS==0 and wxUSE_PROTOCOL_HTTP==0
class wxHTTPDummyProto : public wxProtocol
{
public:
    wxHTTPDummyProto() : wxProtocol() { }

    wxProtocolError GetError() { return m_error; }

    virtual bool Abort() { return true; }

    wxInputStream *GetInputStream(const wxString& WXUNUSED(path))
    {
        return 0;   // input stream is returned by wxURLNativeImp
    }

protected:
    wxProtocolError m_error;

    DECLARE_DYNAMIC_CLASS_NO_COPY(wxHTTPDummyProto)
    DECLARE_PROTOCOL(wxHTTPDummyProto)
};

// the only "reason for being" for this class is to tell
// wxURL that there is someone dealing with the http protocol
IMPLEMENT_DYNAMIC_CLASS(wxHTTPDummyProto, wxProtocol)
IMPLEMENT_PROTOCOL(wxHTTPDummyProto, wxT("http"), NULL, FALSE)
USE_PROTOCOL(wxHTTPDummyProto)

#endif // !wxUSE_PROTOCOL_HTTP


#ifdef __VISUALC__  // be conservative about this pragma
    // tell the linker to include wininet.lib automatically
    #pragma comment(lib, "wininet.lib")
#endif

#include "wx/string.h"
#include "wx/list.h"
#include "wx/utils.h"
#include "wx/module.h"
#include "wx/url.h"

#include <string.h>
#include <ctype.h>
#include <wininet.h>

// this class needn't be exported
class wxWinINetURL:public wxURLNativeImp
{
public:
    wxInputStream *GetInputStream(wxURL *owner);

protected:
    // return the WinINet session handle
    static HINTERNET GetSessionHandle();
};

HINTERNET wxWinINetURL::GetSessionHandle()
{
    // this struct ensures that the session is opened when the
    // first call to GetSessionHandle is made
    // it also ensures that the session is closed when the program
    // terminates
    static struct INetSession
    {
        INetSession()
        {
            DWORD rc = InternetAttemptConnect(0);

            m_handle = InternetOpen
                       (
                        wxVERSION_STRING,
                        INTERNET_OPEN_TYPE_PRECONFIG,
                        NULL,
                        NULL,
                        rc == ERROR_SUCCESS ? 0 : INTERNET_FLAG_OFFLINE
                       );
        }

        ~INetSession()
        {
            InternetCloseHandle(m_handle);
        }

        HINTERNET m_handle;
    } session;

   return session.m_handle;
}

// this class needn't be exported
class /*WXDLLIMPEXP_NET */ wxWinINetInputStream : public wxInputStream
{
public:
    wxWinINetInputStream(HINTERNET hFile=0);
    ~wxWinINetInputStream();

    void Attach(HINTERNET hFile);

    wxFileOffset SeekI( wxFileOffset WXUNUSED(pos), wxSeekMode WXUNUSED(mode) )
        { return -1; }
    wxFileOffset TellI() const
        { return -1; }

protected:
    void SetError(wxStreamError err) { m_lasterror=err; }
    HINTERNET m_hFile;
    size_t OnSysRead(void *buffer, size_t bufsize);

    DECLARE_NO_COPY_CLASS(wxWinINetInputStream)
};

size_t wxWinINetInputStream::OnSysRead(void *buffer, size_t bufsize)
{
    DWORD bytesread = 0;
    if ( !InternetReadFile(m_hFile, buffer, bufsize, &bytesread) )
    {
        DWORD lError = ::GetLastError();
        if ( lError != ERROR_SUCCESS )
            SetError(wxSTREAM_READ_ERROR);

        DWORD iError, bLength;
        InternetGetLastResponseInfo(&iError, NULL, &bLength);
        if ( bLength > 0 )
        {
            wxString errorString;
            InternetGetLastResponseInfo
            (
                &iError,
                wxStringBuffer(errorString, bLength),
                &bLength
            );

            wxLogError(wxT("Read failed with error %d: %s"),
                       iError, errorString);
        }
    }

    if ( bytesread == 0 )
    {
        SetError(wxSTREAM_EOF);
    }

    return bytesread;
}

wxWinINetInputStream::wxWinINetInputStream(HINTERNET hFile)
                    : m_hFile(hFile)
{
}

void wxWinINetInputStream::Attach(HINTERNET newHFile)
{
    wxCHECK_RET(m_hFile==NULL,
        wxT("cannot attach new stream when stream already exists"));
    m_hFile=newHFile;
    SetError(m_hFile!=NULL ? wxSTREAM_NO_ERROR : wxSTREAM_READ_ERROR);
}

wxWinINetInputStream::~wxWinINetInputStream()
{
    if ( m_hFile )
    {
        InternetCloseHandle(m_hFile);
        m_hFile=0;
    }
}

wxURLNativeImp *wxURL::CreateNativeImpObject()
{
    return new wxWinINetURL;
}

wxInputStream *wxWinINetURL::GetInputStream(wxURL *owner)
{
    DWORD service;
    if ( owner->GetScheme() == wxT("http") )
    {
        service = INTERNET_SERVICE_HTTP;
    }
    else if ( owner->GetScheme() == wxT("ftp") )
    {
        service = INTERNET_SERVICE_FTP;
    }
    else
    {
        // unknown protocol. Let wxURL try another method.
        return 0;
    }

    wxWinINetInputStream *newStream = new wxWinINetInputStream;
    HINTERNET newStreamHandle = InternetOpenUrl
                                (
                                    GetSessionHandle(),
                                    owner->GetURL(),
                                    NULL,
                                    0,
                                    INTERNET_FLAG_KEEP_CONNECTION |
                                    INTERNET_FLAG_PASSIVE,
                                    (DWORD_PTR)newStream
                                );
    newStream->Attach(newStreamHandle);

    return newStream;
}

#endif // wxUSE_URL_NATIVE

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费观看一区| 久久超级碰视频| 一区二区在线观看视频| 综合激情成人伊人| 亚洲色图在线播放| 亚洲精品高清在线观看| 亚洲综合视频在线| 亚洲午夜私人影院| 日本在线观看不卡视频| 蜜桃av一区二区三区电影| 免费观看日韩电影| 国产精品自拍网站| 大尺度一区二区| 色婷婷激情综合| 欧美日韩日日夜夜| 日韩视频在线永久播放| 久久蜜桃香蕉精品一区二区三区| 久久久久久日产精品| 国产欧美一区二区在线| 自拍偷拍亚洲欧美日韩| 夜夜嗨av一区二区三区中文字幕| 亚洲午夜影视影院在线观看| 日本欧美在线看| 国产成人av网站| 日本韩国精品一区二区在线观看| 欧美三级三级三级爽爽爽| 欧美精选一区二区| 久久看人人爽人人| 亚洲色图视频网| 天堂va蜜桃一区二区三区| 久久99热狠狠色一区二区| 福利视频网站一区二区三区| 欧美性生活久久| 精品国产3级a| 亚洲另类色综合网站| 天堂精品中文字幕在线| 国产在线国偷精品产拍免费yy| 972aa.com艺术欧美| 9191成人精品久久| 国产午夜精品久久久久久久 | 久久久精品免费网站| 国产精品污网站| 亚洲va在线va天堂| 成人午夜大片免费观看| 欧美视频在线观看一区二区| 久久这里都是精品| 亚洲一区二区三区四区在线| 精彩视频一区二区三区| 日本道免费精品一区二区三区| 欧美第一区第二区| 亚洲乱码国产乱码精品精98午夜| 久久精品国产成人一区二区三区| 成人app在线| 91麻豆精品国产91久久久久久| 亚洲欧美在线高清| 裸体歌舞表演一区二区| 91网上在线视频| 久久久91精品国产一区二区三区| 亚洲v中文字幕| 99国产精品99久久久久久| 精品久久久久久久人人人人传媒 | 久久99久久久欧美国产| 91精品91久久久中77777| 久久综合色天天久久综合图片| 亚洲777理论| 99久久99久久精品免费看蜜桃| 精品第一国产综合精品aⅴ| 亚洲亚洲人成综合网络| av成人老司机| 国产亚洲欧美激情| 麻豆国产欧美日韩综合精品二区| 欧美亚洲一区三区| 国产精品久久看| 国产福利精品导航| 欧美成人欧美edvon| 午夜在线电影亚洲一区| 日本韩国一区二区三区视频| 欧美极品aⅴ影院| 国产乱码精品一区二区三 | 亚洲成年人网站在线观看| 99精品视频一区| 国产日本一区二区| 国产精品主播直播| 欧美r级在线观看| 日韩成人一级大片| 91精品国产一区二区人妖| 亚洲第一福利一区| 欧美性受极品xxxx喷水| 亚洲美女偷拍久久| 91丨九色porny丨蝌蚪| 国产精品萝li| 成人97人人超碰人人99| 中文字幕国产精品一区二区| 国产精品一二三四区| 久久色.com| 国产一区二区三区| 久久久午夜电影| 国模无码大尺度一区二区三区 | 日产欧产美韩系列久久99| 欧美日韩国产bt| 日韩成人免费看| 日韩一区二区免费在线电影| 蜜臀久久99精品久久久久久9| 4438x成人网最大色成网站| 日本不卡123| 日韩欧美国产1| 国产一区视频网站| 欧美激情在线看| 99这里只有精品| 亚洲精品菠萝久久久久久久| 在线日韩av片| 日韩高清在线电影| 精品久久久久久久久久久久久久久久久| 久久国产精品区| 欧美高清在线一区| av电影一区二区| 亚洲成人激情社区| 欧美一区日韩一区| 极品少妇xxxx精品少妇| 久久嫩草精品久久久久| 成人av午夜电影| 樱桃视频在线观看一区| 欧美精三区欧美精三区| 精品一区二区三区在线播放| 久久久久青草大香线综合精品| 国产黄色成人av| 亚洲一区视频在线观看视频| 欧美一区二区免费| 国产成人av自拍| 亚洲免费观看在线视频| 中文字幕第一区| 欧美综合色免费| 久久精品国产亚洲高清剧情介绍| 久久综合色婷婷| 色老汉av一区二区三区| 青娱乐精品在线视频| 欧美国产日韩a欧美在线观看| 91在线观看下载| 蜜臀av国产精品久久久久| 国产精品久久久久久久裸模| 欧美精品在欧美一区二区少妇| 国产美女娇喘av呻吟久久| 一区二区视频免费在线观看| 日韩精品一区二区三区老鸭窝| av中文字幕不卡| 美女国产一区二区| 亚洲欧美偷拍三级| 精品入口麻豆88视频| 一本大道久久a久久精二百| 捆绑调教一区二区三区| 亚洲女同ⅹxx女同tv| www精品美女久久久tv| 91浏览器入口在线观看| 美女视频网站久久| 亚洲美女区一区| 久久夜色精品国产噜噜av| 欧美这里有精品| 国产福利一区二区三区视频在线| 亚洲一区二区三区激情| 亚洲国产精品av| 日韩一区二区免费视频| 色婷婷精品久久二区二区蜜臂av| 国产麻豆精品95视频| 亚洲6080在线| 亚洲麻豆国产自偷在线| 久久久www免费人成精品| 欧美日韩国产精品自在自线| 成人国产视频在线观看| 久久99九九99精品| 亚洲bt欧美bt精品| 亚洲三级电影全部在线观看高清| 精品奇米国产一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 在线看一区二区| 国产成人午夜视频| 久久狠狠亚洲综合| 五月天婷婷综合| 夜夜嗨av一区二区三区四季av| 欧美激情一区二区三区不卡| 日韩视频一区在线观看| 欧美影院一区二区三区| 99久久精品99国产精品| 国产69精品久久久久777| 美女在线一区二区| 石原莉奈在线亚洲二区| 亚洲一区二区在线视频| 亚洲精品国产品国语在线app| 国产精品区一区二区三区| 久久久久久久久久久久电影| 日韩一区二区视频| 在线电影欧美成精品| 欧美日韩高清在线| 色av一区二区| 91黄视频在线| 色综合欧美在线视频区| 91丨porny丨国产入口| www.亚洲在线| 成人激情文学综合网| av午夜精品一区二区三区| 99综合影院在线|