WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院软件开发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

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