zoukankan      html  css  js  c++  java
  • c++中的回调

    一:设置一个函数指针,在需要使用的时候调用

    #include <iostream>
    typedef void (__stdcall *DownloadCallback)(const char *pURL,bool OK);
    void DownLoadFile(const char *pURL,DownloadCallback callback)
    {
        std::cout<<"downloading..."<<pURL<<""<<std::endl;
        callback(pURL,true);
    }
    void __stdcall onDownloadFinished(const char* pURL,bool bOK)
    {
        std::cout<<"onDownloadFinished..."<<pURL<<"   status:"<<bOK<<std::endl;
    }
    int main()
    {
        DownLoadFile("http://wwww.baidu.com",onDownloadFinished);
        system("pause");
        return 0;
    }
     
    二:Sink的本质是你按照对方要求实现一个C++接口,然后把你实现的接口设置给对方,对方需要触发事件时调用该接口。上面下载文件的需求,如果用Sink实现,代码如下:
    #include<iostream>
    class IDownloadSink
    {
    public: 
        virtual void OnDownloadFinished(const char *pURL,bool bOK) = 0;
    };

    class CMyDownloader
    {
    public: 
        CMyDownloader (IDownloadSink *pSink)
            :m_pSink(pSink)
        {

        }

        void DownloadFile(const char* pURL)
        {
            std::cout<<"downloading..."<<pURL<<""<<std::endl;
            if(m_pSink!=NULL)
            {
                m_pSink->OnDownloadFinished(pURL,true);
            }
        }

    private:
        IDownloadSink *m_pSink;
    };


    class CMyFile:public IDownloadSink
    {
    public: 
        void download()
        {
            CMyDownloader downloader(this);
            downloader.DownloadFile("www.baidu.com");
        }

        virtual void OnDownloadFinished(const char *pURL,bool bOK)
        {
            std::cout<<"onDownloadFinished..."<<pURL<<"   status:"<<bOK<<std::endl;
        }
    };

    void main()
    {
        CMyFile *file = new CMyFile();
        file->download();

        system("pause");
    }
     
     
     
     
     
     
  • 相关阅读:
    Delphi中DLL初始化和退出处理
    03003_Http响应
    雷林鹏分享:CSS 属性 选择器
    雷林鹏分享:CSS 媒体类型
    雷林鹏分享:CSS 图像拼合技术
    雷林鹏分享:CSS 图像透明/不透明
    雷林鹏分享:CSS 图片廊
    雷林鹏分享:CSS 提示工具(Tooltip)
    雷林鹏分享:CSS 下拉菜单
    雷林鹏分享:CSS 导航栏
  • 原文地址:https://www.cnblogs.com/jobs1/p/10790768.html
Copyright © 2011-2022 走看看