WEB开发网
开发学院软件开发VC VC中利用FLASH制作图声并茂的动画程序 阅读

VC中利用FLASH制作图声并茂的动画程序

 2010-06-29 20:41:24 来源:WEB开发网   
核心提示:接下来的问题便是如何在VB中完成执行后触发这个事件,由于在vb中使用API很复杂,VC中利用FLASH制作图声并茂的动画程序(3),为了提供简单起见我用vc做了share.dll实现setvalue,然后在VB中进行调用来激活事件,于是另开独立的窗口来显示flash,void TransparentWnd::OnTim

接下来的问题便是如何在VB中完成执行后触发这个事件。由于在vb中使用API很复杂,为了提供简单起见我用vc做了share.dll实现setvalue,然后在VB中进行调用来激活事件。在setvalue中调用如下两个函数来激活事件。

OpenEvent(DWORD dwAccess,//存取方式
BOOL bInheritHandle,//是否能被继承
LPCTSTR lpName)//名字
SetEvent (HANDLE hEvent);

Vb中用变量锁方法实现在未出来提示“点我呀!”前对左键点击的无效,在显示完提示后,当用户点击就调用setvalue来激活事件。

Agent1_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
If b ==ture
   Then setvalue
Endif

(4)FLASH的播放,并实现避免右键菜单的弹出

1. 控键注册: HMODULE  hmod=LoadLibrary ("swflash.ocx");
FARPROC  p=GetProcAddress (hmod,"DllRegisterServer");
(*p)();

2.在工程中插入 flash 控件。由于在不规则窗口中在进行flash控件的支持会使程序过于不清晰。于是另开独立的窗口来显示flash。void TransparentWnd::OnTimer(UINT nIDEvent)
{
 switch (nIDEvent)
 {
  case 1:
  {
    KillTimer (nIDEvent);
    DoChange(MAKEINTRESOURCE(IDB_MAIN2));
    //创建视,作为默认视
    if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
        CRect(260, 30,630, 370), this, AFX_IDW_PANE_FIRST, NULL))
        TRACE0("Failed to create view window\n");
  CenterWindow ();
  ShowWindow (SW_SHOW);
  }
  break;
  default: break;
 }
}
BOOL TransparentWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
  if(m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
    return TRUE;//如果是command消息则视类先处理。
  return CWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void TransparentWnd::OnSetFocus(CWnd* pOldWnd)
{
  //如果有视类则视类获得焦点。
  if(m_wndView.m_hWnd !=NULL)
    m_wndView.SetFocus();
}
下面在CchildView中定义
CShockwaveFlash myflash;
///改变窗口特征
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
  if (!CWnd::PreCreateWindow(cs))
    return FALSE;
  cs.dwExStyle |= WS_EX_CLIENTEDGE;
  cs.style &= ~WS_BORDER;
  cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
    ::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOWTEXT), NULL);
  return TRUE;
}
BOOL CChildView::OnEraseBkgnd(CDC* pDC)
{
  return TRUE;//不让window自动刷屏
}
//下面进入控制部分
int CChildView ::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
  if(CWnd::OnCreate(lpCreateStruct)==-1)
    return -1;
  myflash.Create(NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,0,0), this, 1024);
  SetTimer (1,0,NULL);
  SetTimer (2,12000,NULL);
  CRect m_rect;
  GetClientRect (&m_rect );
  myflash.MoveWindow (&m_rect);//使flash 控件占满整个视区域
  return 0;
}
char *a = new char [512];
GetCurrentDirectory (100,a);
CString *s=new CString(a);
myflash.LoadMovie (0,*s+CString("\\zf.swf"));//这里一定要为全路径
myflash.Play();//播放FLASH动画

(5)两个高级话题

上一页  1 2 3 4  下一页

Tags:VC 利用 FLASH

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接