云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > VC++控件开发教程(实用)

VC++控件开发教程(实用)

  • 62 次阅读
  • 3 次下载
  • 2025/5/28 1:31:12

图7 对属性、方法的测试

图8 设置了属性后的控件

对于控件属性的添加,在MFC ClassWizard对话框的ActiveX Events页中通过\Event…\按钮弹出如图9所示的\事件添加对话框。与方法、属性的添加类似,在External name组合框中可以输入要添加的自定义事件名称,也可以从下拉列表选择库存事件。Implementation项将根据所要添加的事件类型而自动设置Stock或Custom选项。ActiveX

图9 事件的添加

dispinterface _DSample68Events {

properties:

// Event interface has no properties methods:

// NOTE - ClassWizard will maintain event information here. // Use extreme caution when editing this section. //{{AFX_ODL_EVENT(CSample68Ctrl) [id(1)] void MsgOut();

//}}AFX_ODL_EVE// Dispatch and event IDs public: enum {

//{{AFX_DISP_ID(CSample68Ctrl) ……

eventidMsgOut = 1L, //}}AFX_DISP_ID }; ……

BEGIN_EVENT_MAP(CSample68Ctrl, COleControl) //{{AFX_EVENT_MAP(CSample68Ctrl)

EVENT_CUSTOM(\//}}AFX_EVENT_MAP END_EVENT_MAP()

上述代码添加了一个MsgOut的自定义事件,可以在通过调用FireMsgOut()来激发。下面对Message属性的OnMessageChanged()消息响应函数进行修改,每当Message属性内容被更改都会调用该函数,在该函数中调用此前添加的MessageLen()方法以确定更改后的Message属性的字符串长度,在长度大于10时调用FireMsgOut()触发MsgOut事件:

void CSample68Ctrl::OnMessageChanged() { InvalidateControl(); if (MessageLen() >= 10) FireMsgOut(); SetModifiedFlag(); }

图10 选择要记录的事件

在用ActiveX Control Test Container对刚添加的事件进行测试时,首先通过\菜单下的\…\菜单项弹出如图10所示的对话框,并从\属性页中选中要跟踪记录的事件。当通过Invoke Methods对话框设置Message属性的内容超过10个字符后,位于程序框架下方的分割视图将记录控件所触发的MsgOut事件(如图11所示)。

图11 对事件的测试

实现属性表

属性表是ActiveX控件所特有的一种技术,可以在包容器程序处于设计阶段时为其提供

一个可视化的人机交互界面,并可以通过其对控件的自定义属性和库存属性进行设置。在用向导生成程序框架的同时即已经生成了一个空的用于管理自定义属性的属性页。在代码上通过控件类实现文件中的属性页ID表对其进行维护: BEGIN_PROPPAGEIDS(CSample68Ctrl, 1) PROPPAGEID(CSample68PropPage::guid) END_PROPPAGEIDS(CSample68Ctrl)

这里的CSample68PropPage类是从COlePropertyPage派生出来的,而

COlePropertyPage的基类又是CDialog,因此不难发现CSample68PropPage与通常的对话框类是比较相似的。可以象处理对话框一样在资源视图中为缺省的属性页添加与自定义属性相关的交互用控件,并通过ClassWizard将这些控件与类成员变量建立绑定关系。但是有一点不同,就是在绑定成员变量时还要与控件中的相应属性建立起对应关系。如图12所示,在Optional property name组合框中输入自定义属性名或是直接从下拉列表选择库存属性名,ClassWizard向导将在属性页类的DoDataExchange()函数中添加控件、变量和属性的绑定代码:

void CSample68PropPage::DoDataExchange(CDataExchange* pDX) { //{{AFX_DATA_MAP(CSample68PropPage) DDP_Text(pDX, IDC_MESSAGE, m_sMessage, _T(\ DDX_Text(pDX, IDC_MESSAGE, m_sMessage); DDP_Text(pDX, IDC_TITLE, m_sCaption, _T(\ DDX_Text(pDX, IDC_TITLE, m_sCaption); DDP_Text(pDX, IDC_XPOS, m_nXPos, _T(\ DDX_Text(pDX, IDC_XPOS, m_nXPos); DDP_Text(pDX, IDC_YPOS, m_nYPos, _T(\ DDX_Text(pDX, IDC_YPOS, m_nYPos); //}}AFX_DATA_MAP DDP_PostProcessing(pDX); }

搜索更多关于: VC++控件开发教程(实用) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

图7 对属性、方法的测试 图8 设置了属性后的控件 对于控件属性的添加,在MFC ClassWizard对话框的ActiveX Events页中通过\Event…\按钮弹出如图9所示的\事件添加对话框。与方法、属性的添加类似,在External name组合框中可以输入要添加的自定义事件名称,也可以从下拉列表选择库存事件。Implementation项将根据所要添加的事件类型而自动设置Stock或Custom选项。ActiveX 图9 事件的添加 dispinterface _DSample68Events { properties: // Event interface has no properties methods: <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com