AX简单学习笔记

创建MFC ActiveX控件,一路默认生成,切换到类视图
C**App        基类:COleControlModule   控件实例的初始化和撤销

C**Ctrl       基类:COleControl         控件窗口的创建、更新及消息处理
C**PropPage   基类:COlePropertyPage    控件属性页的设置及与实际属性值的交换

为了能看到控件的功能,改写C**Ctrl类的OnDraw函数
添加 pdc->TextOut(10,rcBounds.CenterPoint().y,_T("这是测试"));
VS提供了ActiveX测试工具TstCon32.exe,在VS的那个目录下需要自己编译,编译时还要将slu属性某个地方改为win32,win7下还要改下工程属性的UAC配置,打开工具选择EDIT菜单下的Insert New Control,在弹出的对话框中找到我们编译的(我们编译时这个控件已经被自动注册了,要想在其他开发环境中使用该控件,必须先注册,“regsvr32 ...\***.ocx”)。


ActiveX控件包含两种事件,一种是库存(stock)事件,即系统定义的事件;另一种是自定义事件(custom)。
1.Stock事件
类资源视图,在C**Ctrl上点击右键添加事件,添加DblClick事件,编译生成后,用工具测试,在控件上用鼠标双击就会看到下面打印出了双击消息。
2.Custom事件
添加事件,先选择一个常用的然后改下名字ClickIn,选择自定义,右面内部名称填写FireClickIn,为C**Ctrl类添加成员函数,判断当前点是否在控件界面所绘制的圆或椭圆内

BOOL CtestCtrl::InCircle(CPoint &point)
{
	CRect rc;
	GetClientRect(rc);//获取控件矩形
	double a=(rc.right-rc.left)/2;
	double b=(rc.bottom-rc.top)/2;
	double x=point.x-(rc.left+rc.right)/2;
	double y=point.y-(rc.top+rc.bottom)/2;
	return ((x*x)/(a*a)+(y*y)/(b*b)<=1);
}

在C**Ctrl类中添加自定义事件的触发代码,即为类添加WM_LBUTTONDOWN的消息处理函数
if (InCircle(point))
	{
		FireClickIn();
	}

最后用工具测试


添加属性:
1.系统属性
2.自定义属性
调用ActiveX控件
1.在MFC程序中调用
先注册我们自己创建的ActiveX控件,然后在对话框窗口上点右键插入ActiveX控件,编译运行后就可以看到该控件的效果了。
2.Web页面调用ActiveX控件
为了使用ActiveX控件,最好将开发好的ActiveX控件重新注册到Windows的系统目录。启动TstCon32.exe FILE Register Controls选择后注册
示例HTML代码
<HTML>
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>
<OBJECT ID="test" WIDTH=200 HEIGHT=150
CLASSID="CLSID:CF86E697-8F8F-43C7-A202-8A2F93BC4F5A">
</OBJECT>
</BODY>
</HTML>
CLASSID这个值可以在工程的idl文件中找到


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值