在一个对话框中使用3个 shockwave 控件 每一个shockwave播放一个flash, 当反复执行打开和关闭对话框,有时候初始化部分就会出错,下面是对话框初始化时代码
         CString strfilepath1 = CBETTER->m_strWorkDir + "\\Flash\\YL.swf";
m_flash1.LoadMovie(0, strfilepath1);
m_flash1.Play();
Sleep(10);
CString strfilepath2 = CBETTER->m_strWorkDir + "\\Flash\\XGQX.swf";
m_flash2.LoadMovie(0, strfilepath2);
m_flash2.Play();
Sleep(10);
CString strfilepath3 = CBETTER->m_strWorkDir + "\\Flash\\SSJG.swf";
m_flash3.LoadMovie(0, strfilepath3);
m_flash3.Play();
Sleep(10);
WndProc1 = ::SetWindowLong(m_flash1.GetSafeHwnd(), GWL_WNDPROC, (LONG)MyProc1);
WndProc2 = ::SetWindowLong(m_flash2.GetSafeHwnd(), GWL_WNDPROC, (LONG)MyProc2);
WndProc3 = ::SetWindowLong(m_flash3.GetSafeHwnd(), GWL_WNDPROC, (LONG)MyProc3);
LONG WndProc1 = NULL;
LONG MyProc1(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if(msg == WM_RBUTTONDOWN)     // 屏蔽右键
return 0;
return CallWindowProc((WNDPROC)WndProc1, hwnd, msg, wParam, lParam); //调用原来的窗口过程
}
LONG WndProc2 = NULL;
LONG MyProc2(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if(msg == WM_RBUTTONDOWN)     // 屏蔽右键
return 0;
return CallWindowProc((WNDPROC)WndProc2, hwnd, msg, wParam, lParam); //调用原来的窗口过程
}
LONG WndProc3 = NULL;
LONG MyProc3(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if(msg == WM_RBUTTONDOWN)     // 屏蔽右键
return 0;
return CallWindowProc((WNDPROC)WndProc3, hwnd, msg, wParam, lParam); //调用原来的窗口过程
}

解决方案 »

  1.   

    这个代码有问题吧?wndproc怎么先用了才声明?
    估计是wndproc不对。建议右键在对话框的pretranslatemessage里屏蔽。
      

  2.   

    我把wndproc注释掉了 只用下面代码也出错CString strfilepath1 = CBETTER->m_strWorkDir + "\\Flash\\YL.swf";
    m_flash1.LoadMovie(0, strfilepath1);
    m_flash1.Play();
    Sleep(10);
    CString strfilepath2 = CBETTER->m_strWorkDir + "\\Flash\\XGQX.swf";
    m_flash2.LoadMovie(0, strfilepath2);
    m_flash2.Play();
    Sleep(10);
    CString strfilepath3 = CBETTER->m_strWorkDir + "\\Flash\\SSJG.swf";
    m_flash3.LoadMovie(0, strfilepath3);
    m_flash3.Play();
    Sleep(10);
      

  3.   

    用SetMovie也不行 还是出错
      

  4.   

    会不会是flash本身的bug你些个html在ie里同时打开这3个movie,反复刷新下看看。