UiPlayVideo.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 播放video窗口
  3. // Copyright : Kingsoft 2003
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2003-7-14
  6. ------------------------------------------------------------------------------------------
  7. *****************************************************************************************/
  8. #pragma once
  9. #include "../Elem/WndWindow.h"
  10. #include "......KLVideoKLVideo.h"
  11. typedef u8 (*KLVideoSoundFn)(void PTR4* dd);
  12. typedef HKLVIDEO (*KLVideoOpenFn)(const char PTR4* name,u32 flags, void PTR4* hWnd);
  13. typedef void (*KLVideoCloseFn)(HKLVIDEO bnk);
  14. typedef u32 (*KLVideoWaitFn)(HKLVIDEO bnk);
  15. typedef void (*KLVideoToBufferFn)(HKLVIDEO bnk,void PTR4* buf,u32 left,u32 top,u32 Pitch,u32 destheight,u32 Flags);
  16. typedef u32 (*KLVideoDoFrameFn)(HKLVIDEO bnk);
  17. typedef void (*KLVideoNextFrameFn)(HKLVIDEO bnk);
  18. typedef void (*KLVideoSetSndVolumeFn)(HKLVIDEO bnk,u32 nVolume);
  19. typedef void (*KLVideoSndtrackFn)(u32 track);
  20. typedef u32 (*KLVideoGetCurrentFrameFn)(HKLVIDEO bnk);
  21. class KUiPlayVideo : protected KWndWindow
  22. {
  23. public:
  24. //----界面面板统一的接口函数----
  25. static KUiPlayVideo* OpenWindow(); //打开窗口,返回唯一的一个类对象实例
  26. static void CloseWindow(bool bDestroy); //关闭窗口,同时可以选则是否删除对象实例
  27. static void LoadScheme(const char* pszSettingFile, const char* pszSection); //载入界面方案
  28. void Setting(bool bProcessInput, bool bCloseWhenOver,
  29. KWndWindow* pCaller, unsigned int uParam = 0);
  30. int OpenVideo(const char* pszVideoFile);
  31. void CloseVideo(bool bFinished = true);
  32. void SetPosition(int nLeft, int nTop); //设置窗口位置,相对坐标
  33. void SetSize(int nWidth, int nHeight); //设置窗口大小
  34. KUiPlayVideo();
  35. private:
  36. //活动函数
  37. void Breathe();
  38. //输入处理消息以及一些特定窗口消息的响应
  39. int WndProc(unsigned int uMsg, unsigned int uParam, int nParam);
  40. //绘制
  41. void PaintWindow();
  42. //初始化
  43. int Initialize();
  44. //关闭
  45. void Terminate();
  46. //播放结束
  47. void OnPlayFinished();
  48. ~KUiPlayVideo() {}
  49. private:
  50. static KUiPlayVideo* m_pSelf;
  51. KWndWindow* m_pCaller;
  52. unsigned int m_uCallerParam;
  53. bool m_bProcessInput;
  54. bool m_bCloseWhenOver;
  55. bool m_bInitialized;
  56. HKLVIDEO   m_bnk; //正在播放的Video句柄
  57. HMODULE   m_hVideoDll; //KLVideo.dll的模块句柄
  58. KLVideoSoundFn            m_KLVideoSoundFn;
  59.     KLVideoSndtrackFn         m_KLVideoSndtrackFn;
  60.     KLVideoOpenFn             m_KLVideoOpen;
  61.     KLVideoCloseFn            m_KLVideoClose;
  62.     KLVideoWaitFn             m_KLVideoWait;
  63.     KLVideoToBufferFn         m_KLVideoToBuffer;
  64.     KLVideoDoFrameFn          m_KLVideoDoFrame;
  65.     KLVideoNextFrameFn        m_KLVideoNextFrame;
  66. KLVideoGetCurrentFrameFn  m_KLVideoGetCurrentFrame;
  67. KLVideoSetSndVolumeFn   m_KLVideoSetSoundVolume;
  68. char   m_szBitmapName[16];
  69. unsigned int   m_uBitmapId;
  70. short   m_uBitmapIsPosition;
  71. int m_nBlackWidth;
  72. int m_nBlackHeight;
  73. int m_nbAlreadyPaintBlack;
  74. };