雨路IT
当前位置:首页 » it资讯

BCB高手请进!

八月 23rd, 2007 by admin



#ifndef   _player_h_  
  #define   _player_h_  
   
  /*----------------------------------------------------------------------  
  |               includes  
  +---------------------------------------------------------------------*/  
  #include   "xaudio.h"  
  #include   "control.h"  
  #include   "decoder.h"  
   
  /*----------------------------------------------------------------------  
  |               constants  
  +---------------------------------------------------------------------*/  
  #define   xa_player_mode_output_auto_close_on_stop                 0x0001  
  ...  
   
  /*----------------------------------------------------------------------  
  |               types  
  +---------------------------------------------------------------------*/  
  typedef   struct   {  
          const   char       *name;  
          const   void       *data;  
          unsigned   long   size;  
  }   xa_playerargument;  
   
  ...  
  /*----------------------------------------------------------------------  
  |               prototypes  
  +---------------------------------------------------------------------*/  
  #ifdef   __cplusplus  
  extern   "c"   {  
  #endif  
   
  extern   int   xa_export   player_new(xa_control   **control,    
  const   xa_controlarguments   *control_args);  
  extern   int   xa_export   player_new_ext(xa_control   **control,    
  const   xa_controlarguments   *control_args,    
  const   xa_playerarguments   *player_args);  
  extern   int   xa_export   player_delete(xa_control   *control);  
  extern   int   xa_export   player_set_priority(xa_control   *control,   int   priority);  
  extern   int   xa_export   player_get_priority(xa_control   *control);  
   
  #ifdef   __cplusplus  
  }  
   
  #define   xa_cmsend   control_message_send  
   
  class   xa_player   {  
  public:  
          xa_control   *control;  
          xa_player()   {  
                  control   =   (xa_control   *)0;  
          }  
          virtual   ~xa_player()   {  
                  if   (control)   player_delete(control);  
          }  
          int   setpriority(int   priority)   {  
                  return   player_set_priority(control,   priority);  
          }  
          ....  
          virtual   int   run(xa_controlarguments   *control_args)   {  
                  int   status;  
                  status   =   player_new(&control,   control_args);  
                  if   (status)   control   =   (xa_control   *)0;  
                  return   status;  
          }  
          virtual   int   run(xa_controlarguments   *control_args,   xa_playerarguments   *player_args)   {  
                  int   status;  
                  status   =   player_new_ext(&control,   control_args,   player_args);  
                  if   (status)   control   =   (xa_control   *)0;  
                  return   status;  
          }  
          virtual   void   processmessage(xa_message   *message)   {  
                  switch   (message->code)   {  
                      case   xa_msg_notify_ready:  
                          onnotifyready();  
                          break;  
   
                      case   xa_msg_notify_ack:  
                          onnotifyack(message->data.ack);  
                          break;  
   
                      ...  
                      default:  
                          break;  
                  }  
          }  
   
  protected:  
          virtual   void   onnotifyready()   {};  
          virtual   void   onnotifyack(int   command)   {};  
          virtual   void   onnotifynack(xa_nackinfo   *info)   {};  
          virtual   void   onnotifypong(unsigned   long   tag)   {};  
          .....  
  };  
   
  #endif   /*   __cplusplus   */  
   
  #endif   /*   _player_h_   */  
   
   
  上面的类该如何调用呢?  
  vc是这样的:  
  class   xaudioplayer   :   public   xa_player  
  {  
  public:  
                          xaudioplayer(hinstance   instance);  
                          xaudioplayer(hinstance   instance,   xa_playerarguments   *args);  
        virtual   ~xaudioplayer();  
   
  protected:  
          void             init();  
          hwnd             m_hiddenwindow;  
  hinstance   m_instance;  
          tchar         *m_classname;  
  };  
   
  在bcb里应该如何呢?  
 

.

参考文章:

  • 过量女性荷尔蒙污染英国河流 公鱼变性成母鱼
  • T618的N大硬伤,放弃T618的理由
  • 让我们一起来进步—亚洲CI网站站长蒋…
  • SUPER PICK OF THE WORLD—Newwebpic…
  • 风雨过后就见彩虹—设计联盟站长贺敏…
  • 病菌滋生温床 洗衣机内筒细菌需警惕
  • 3300音乐手机
  • 中国UI设计网站长郝晓伟访谈
  • 吴高远、蔡文胜和庞升东的网络传奇
  • VeryCD:我们要做1999年的GOOGLE
  • 网友回答:

    Posted in noname. Edit

    发表评论