CUpdateWnd.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #pragma once
  2. #include "../pch/pch.h"
  3. #include <curl/curl.h>
  4. class CUpdateWnd : public CWindowWnd, public INotifyUI, public IMessageFilterUI
  5. {
  6. public:
  7. LPCTSTR GetWindowClassName() const
  8. {
  9. return _T("UIUpdateFrame");
  10. };
  11. UINT GetClassStyle() const
  12. {
  13. return UI_CLASSSTYLE_DIALOG;
  14. };
  15. void OnFinalMessage(HWND /*hWnd*/)
  16. {
  17. //m_pm.RemovePreMessageFilter(this);
  18. delete this;
  19. };
  20. void InitData(std::string url, std::string dir)
  21. {
  22. m_url = url;
  23. m_dir = dir;
  24. }
  25. void Init();
  26. void Notify(TNotifyUI& msg);
  27. LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  28. LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  29. LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  30. LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  31. LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  32. LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  33. LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  34. LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  35. LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  36. LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
  37. LRESULT OnRefresh(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  38. LRESULT OnDownloadFinish(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  39. std::string GetFileNameFormUrl(std::string url);
  40. static size_t nousecb(char* buffer, size_t x, size_t y, void* userdata);
  41. double getDownloadFileLength(std::string url);
  42. void Run();
  43. static size_t my_write_func(void* ptr, size_t size, size_t nmemb, FILE* stream);
  44. static int my_progress_func(void* progress_data,
  45. double t, /* dltotal */
  46. double d, /* dlnow */
  47. double ultotal,
  48. double ulnow);
  49. public:
  50. CPaintManagerUI m_pm;
  51. string m_dir;//目录名
  52. std::string m_filepath; //完成文件在本地的路径名
  53. CURL* m_curl;//libcurl句柄
  54. double m_downloadFileLength;//服务器文件长度
  55. int m_resumeByte;//本地已下载的文件长度
  56. FILE* m_outfile;//文件指针
  57. std::string m_url;//下载地址
  58. static double m_Percent;
  59. };