#pragma once #include "../pch/pch.h" #include class CUpdateWnd : public CWindowWnd, public INotifyUI, public IMessageFilterUI { public: LPCTSTR GetWindowClassName() const { return _T("UIUpdateFrame"); }; UINT GetClassStyle() const { return UI_CLASSSTYLE_DIALOG; }; void OnFinalMessage(HWND /*hWnd*/) { //m_pm.RemovePreMessageFilter(this); delete this; }; void InitData(std::string url, std::string dir) { m_url = url; m_dir = dir; } void Init(); void Notify(TNotifyUI& msg); LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled); LRESULT OnRefresh(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnDownloadFinish(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); std::string GetFileNameFormUrl(std::string url); static size_t nousecb(char* buffer, size_t x, size_t y, void* userdata); double getDownloadFileLength(std::string url); void Run(); static size_t my_write_func(void* ptr, size_t size, size_t nmemb, FILE* stream); static int my_progress_func(void* progress_data, double t, /* dltotal */ double d, /* dlnow */ double ultotal, double ulnow); public: CPaintManagerUI m_pm; string m_dir;//目录名 std::string m_filepath; //完成文件在本地的路径名 CURL* m_curl;//libcurl句柄 double m_downloadFileLength;//服务器文件长度 int m_resumeByte;//本地已下载的文件长度 FILE* m_outfile;//文件指针 std::string m_url;//下载地址 static double m_Percent; };