在一个对话框中使用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); //调用原来的窗口过程
}
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); //调用原来的窗口过程
}
估计是wndproc不对。建议右键在对话框的pretranslatemessage里屏蔽。
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);