• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在ActiveX控件中引入窗体出错

在ActiveX控件中引入窗体出错

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了activex控件下载xp,activex控件下载,activex控件,activex控件被阻止,activex控件官方下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在ActiveX控件中引入窗体出错
描述:

一、引入Dialog技术
---- 下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下:
创建一新的MFC ActiveX ControlWizard项目,取名为Hello,其他用缺省选项;
在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话框上放自己的控件;
为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承;
确认在HelloCtrl.h中已加入语句#include "HelloDialog.h",为CHelloCtrl类添加成员变量CHelloDialog m_helloDialog;
用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoHello(),外部名亦为DoHello;
void CHelloCtrl::DoHello()
{ 
      // 显示对话框m_helloDialog.DoModal();
}
---- 可以用ActiveX Control Test Container测试Hello Control的DoHello方法。
---- 下面介绍在制作ActiveX控件时引入无模式对话框技术,制作步骤如下:
在上面工作的基础上,用ClassWizard为CHelloCtrl添加WM_CREATE的处理函数OnCreate,在此创建无模式对话框;
修改DoHello代码,在此显示对话框;
int CHelloCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;        
// 创建对话框
m_helloDialog.Create(IDD_HELLODIALOG);
return 0;
}
void CHelloCtrl::DoHello()
{        // 显示对话框
m_helloDialog.ShowWindow(SW_SHOW);
     }
---- 下面介绍制作以对话框作为界面的ActiveX控件技术,制作步骤如下:
在上面工作的基础上,设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog Frame、Title Bar:unchecked;设置More Style页为Visible:checked;Control:checked;设置Extended Styles页为Static Edge:checked;
在CHelloCtrl::OnCreate中写入m_helloDialog.Create(IDD_HELLODIALOG,this)语句;
在CHelloCtrl::OnDraw中写入m_helloDialog.MoveWindow(rcBounds,TRUE);
int CHelloCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;        // 创建对话框 
  m_helloDialog.Create(IDD_HELLODIALOG,this);
return 0;
}
void CHelloCtrl::OnDraw(CDC* pdc, constCRect& rcBounds, const CRect& rcInvalid)
{        // 定位Hello对话框
m_helloDialog.MoveWindow(rcBounds,TRUE);
}
----二、引入FormView技术
---- 下面介绍在制作ActiveX控件时引入FormView技术,制作步骤如下:
在上面工作的基础上,在ResourceView页中新增一对话框资源,命名为IDD_HELLOFORMVIEW,可以在对话框上放自己的控件;
设置对话框资源IDD_HELLODIALOG属性的Style页为Style:Child、Border:Dialog Frame、Title Bar:unchecked;设置More Style页为Visible:checked;Control:checked;设置Extended Styles页为Static Edge:checked;
为对话框资源IDD_HELLOFORMVIEW创建新类CHelloFormView,从CFormView继承;
在HelloFormView.h中将CHelloFormView的构造函数CHelloFormView()和析构函数virtual ~CHelloFormView()从protected改为public;
在HelloFormView.h中对CHelloFormView类加入public friend class CHelloCtrl;
确认在HelloCtrl.h中已加入语句#include "HelloFormView.h",为CHelloCtrl类添加成员变量CHelloFormView m_helloFormView;
修改CHelloCtrl::OnCreate函数,在此创建m_helloFormView;
修改DoHello代码,在此显示FormView;
int CHelloCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;     // 创建FormView
m_helloFormView.Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL);
return 0;
}
void CHelloCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){        // 定位Hello对话框
        m_helloFormView.MoveWindow(rcBounds,TRUE);
      }
依上法,结果 制作以对话框作为界面的ActiveX控件,在测试容器中可用,在实际的MFC applicaton 中引入时就出错
如果用Formview的话,测试容器中引入时就出错,
不知是何原因,望解答,
如果有人按上法做而未出错,请把源程序发到ccstop@163.com,请注明msdn ID,以便给分


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 讨论一下activex方面的经典书目!
  • 紧急求助:关于ActiveX控件的使用问题!!
  • 在ActiveX控件中使用多线程后Fire事件的问题
  • 可以在ActiveX控件下的Dialog画曲线图吗
  • 怎么才能获得微软Activex控件的帮助信息呢
  • 如何在单文档中使用ActiveX控件那?
  • Activex,参数传入的汉字在英文系统下为乱码
  • 这样得Activex问题大家以前碰到么?
  • 嵌在网页里的ACTIVEX控件不能销毁的问题。
  • 又是关于ActiveX控件下载的问题,希望大家都来讨论一下!!!!

相关文章

  • 2017-06-04 关于msado15idl的问题
  • 2017-06-05 什么时候必须CoSetProxyBlanket,否则COM调用流程会失败?
  • 2017-06-04 用VC实现光盘刻录
  • 2017-06-05 MSCOM串口通信控件使用遇到一个问题
  • 2017-06-04 请问有关ATL注册的问题
  • 2017-06-05 dll中如何使用消息?
  • 2017-06-05 两周没有试成功,求助高手!!!
  • 2017-06-04 如何在NSIS中调用DLL
  • 2017-06-04 HELP!vb编写一个将要在web中被引用的OCX控件,程序怎么得到web用<param>指定的参数!
  • 2017-06-04 为什么我添加ACTIVEX控件,窗体不能显示了呢?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请教COM高手
    • 向高手请教关于ocx方面的几个问题
    • 在VC中如何调用C语言函数(内详)
    • 怎样让程序退出后,将该程序进程删除干净?
    • 有谁知道Word的命令格式(程序与Word通过DDE进行通讯)?谢谢!
    • VC中DLL被VB语言调用问题。
    • 一个ATL组件编译完,交给客户程序调用,需要拷贝h文件过去么?
    • 用Detours来HookAPI时,如何去Hook不同DLL中的同名的API呢
    • 用VC如何实现增加API的功能
    • dll导出对话框问题:照搬照抄若的祸

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有