break; case 16: for (i=0; i<16; i++) { j=i % 4; if (j == 0) { k++; } panels[i]->SetWindowPos(NULL,j * 160,k * 130,159,129,SWP_NOZORDER); panels[i]->ShowWindow(SW_SHOW); } m_Expanded=false; break; } Invalidate(); }
4.画面全屏显示 需注意播放窗口全屏后,就不能够通过GetDlgItem(int ctrlid)获取到该STATIC控件句柄了
全屏
- private:
- int ActiveCtrlHandle;
- CPlayStatic *panels[16];
-
- bool m_Expanded;
- bool m_enterFull;
- BOOL m_bFullScreen;
- WINDOWPLACEMENT _temppl;
//处理用户鼠标双击面板事件
- void CRealPlayDlg::DoDbClick(CWnd *current)
- {
-
- if (m_bFullScreen)
- {
-
- current->SetParent(this);
- current->ModifyStyle(WS_POPUP, WS_CHILD);
- ::SetWindowPos(current->GetSafeHwnd(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
-
-
-
- current->SetWindowPlacement(&_temppl);
- m_bFullScreen = FALSE;
- }
- else
- {
-
- if (m_Expanded)
- {
-
- if (ActiveCtrlHandle != -1)
- {
- if (m_enterFull)
- {
-
-
- int cx=GetSystemMetrics(SM_CXSCREEN);
- int cy=GetSystemMetrics(SM_CYSCREEN);
- current->GetWindowPlacement(&_temppl);
- current->SetParent(NULL);
- current->SetFocus();
- current->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | WS_EX_TOPMOST);
- current->ModifyStyle(WS_CHILD, WS_POPUP);
- current->MoveWindow(0, 0, cx, cy);
- m_bFullScreen = TRUE;
- }
- else
- {
- ArrangeWindow();
- }
- m_enterFull = !m_enterFull;
- }
- else
- {
- ArrangeWindow();
- }
- }
- else
- {
-
- for (int i=0; i<16; i++)
- {
- if (i != currentSel)
- {
- panels[i]->ShowWindow(SW_HIDE);
- }
- else
- {
- panels[i]->MoveWindow(0,0,640,520);
- m_Expanded=true;
- }
- }
- }
- }
- Invalidate();
- }
5.如果ActiveX控件要使用其它第三方的ActiveX,需在InitInstance()方法中添加AfxEnableControlContainer(); 否则会造成第三方控件无法显示,控件创建出错
6.ActiveX在网页中使用
需使用object标签,其classid具体值可在odl文件中找到,一般在文件最后,不要弄错,否则将会造成控件无法成功创建; odl文件中包含了控件的所有属性,方法以及事件;使用如下
- <object id="ocx1" height="520" width="640"
- classid="clsid:D55EFD59-8482-4486-9FDE-669EFAC4221B">
- </object>
若JavaScript想调用控件的方法,可以这样ocx1.RealPlay();调用控件的RealPlay方法
7.相关参考文章
使用MFC开发ActiveX控件全过程
ActiveX的设计
在ActiveX控件中引入窗体技术
如何将MFC ActiveX控件标记为安全
将ActiveX控件标记为脚本安全和初始化安全
ActiveX控件数字签名的实现
ActiveX安全:改进和最佳实践[MSDN]
JavaScript 响应 ActiveX 事件
ActiveX组件与JavaScript交互
javascript脚本中定义的参数数组,如何在VC++中访问
IExpress压缩CAB文件及制作安装程序所开发的小工具
Web发布cab文件打包的ActiveX控件总结
制作cab包,参考inf文件
(peterzb) |