}
以下是调用的方法:
res2file (MAKEINTRESOURCE(IDR_ZF),"swf","zf.swf");
res2file (MAKEINTRESOURCE(IDR_ZG),"swf","zg.swf");
res2file (MAKEINTRESOURCE(IDR_DOT),"acs","DOT.ACS");
res2file (MAKEINTRESOURCE(IDR_SHARE),"dll","share.dll");
res2file (MAKEINTRESOURCE(IDR_TALK),"dll","talk.dll");
res2file (MAKEINTRESOURCE(IDR_SWFLASH),"ocx","swflash.ocx");
(3)通过VC和VB的通信实现多个不同模块的顺序执行
在程序中我们需要调用VB模块并等待它执行完毕再继续我们的VC
程序,这就涉及到VC与VB之间的通讯问题,在这里我使用事件来解决这个
问题,请看如下代码:
CreateEvent(NULL,false,false,"lsbeven");
然后,调用ms agent 动画
PROCESS_INFORMATION pi;
STARTUPINFO si={0};
si.cb=sizeof(si);
char *a =new char [255];
GetCurrentDirectory (255,a);
CString *str=new CString(a);
//AfxMessageBox (*des);
//AfxMessageBox (*sou);
*str+=CString("\\talk.e\0");
BOOL fRet=CreateProcess(NULL,
str->GetBuffer (5),
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi);
最后,用WaitForSingleObject (heven,40000)等待事件被触发。(40s超时)
接下来的问题便是如何在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, pHand