All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
理解C#,3.0新特性之Extension方法浅议_.net资料_编程技术
PHP结合MySQL初级网站编程教程_[PHP教程]
MySQL处理同时存在order,by,和,limit,语句时出现的bug_mssql学习_编程技术
SQL循序渐进(22)EXISTS,和,ALL_[SQL,Server教程]
LINQ体验(1)——Visual,Studio,2008新特性_[Asp.Net教程]
ADO.NET,2.0:如何排除错误信息_.net资料_编程技术
关于ASP.NET2.0,中的用户控件编程使用_.net资料_编程技术
asp.net2.0生成一个复杂的验证码,背景随机,字体随机,中英文数字随机_[Asp.Net教程]
人工生命—群集智能—蚁群算法js版_JavaScript技术_编程技术
ASP.NET页面数据导出到Excel或Word_[Asp.Net教程]
Reading number is top 10 pictures
Household design of gorgeous series
梦幻的风景
西游四格漫画(五)
Fierce chengdu woman, street rape man
教你22句话
如果我是导演...
9.3阅兵全景图1-抗战老兵和英雄连队梯队
最2B的公司制度
So beauty, will let you spray blood7
BingBingFan apple dew point photo gallery4
Download software ranking
Such love down(擒爱记)
jdk1.5
Tram sex maniac 2 (H) rar bag11
Prostitutes diary
功夫熊猫2(上集)
Take off clothes to survival
Professional killers2 for Android
Tram sex maniac 2 (H) rar bag14
Tram sex maniac 2 (H) rar bag1
linux初级教程
qq published in(发表于) 2014/7/9 22:38:44 Edit(编辑)
visual c++中ActiveX控件创建实例

visual c++中ActiveX控件创建实例

visual c++中ActiveX控件创建实例

ActiveX控件创建实例

为了巩固上节所学的内容,在本节中,将讲述ActiveX控件ExEdit的制作过程。ExEdit是一个简单具有阴影和回车更换Tab顺序功能的文本框,本书由于篇幅有限,仅添加了一个设置阴影颜色的Shadow属性和文本框的更改事件OnChange。下面介绍其步骤。

(1)首先,利用App Wizard建立一个基于MFC ActiveX Control Wizard的工程,在Preject name文本框中输入要建立工程的名称“ExEdit”,如图1所示。



图1 建立一个基于MFC ActiveX Control Wizard的应用程序

(2)单击“OK”按钮,进入“MFC ActiveX ControlWizard -step1 of 2”对话框,在此对话框中,读者不需要更改任何设置,单击【Next】按钮,进入“MFC ActiveX ControlWizard- step 2 of 2”对话框。

(3)在“MFC ActiveX ControlWizard-step 2 of 2”对话框中,将“Has an'About'Box”复选框的对号去掉,单击“Finish”按钮,工程建立完成。

(4)在介绍代码编写之前,还是先分析一下控件的功能。

具有文本框的编辑功能。

具有阴影。

具有设置阴影颜色的属性Shadow。

具有文本框的更改事件OnChange。

具有回车将焦点移动到下一个控件的功能。

(5)前面已经讲过,代表控件本身的类是COleControl的派生类,在本例中,是CExEditCtrl类,所以多数操作都是在这个类中完成的。读者可以将控件当成一个容器,可以在其中添加任何通用控件。

(6)首先,为项目添加一个全局变量CEdit m_Edit,这个对象代表了文本框。

(7)在CExEditCtrl的OnCreate中对创建m_Edit对象,并进行初始化。

为了巩固上节所学的内容,在本节中,将讲述ActiveX控件ExEdit的制作过程。ExEdit是一个简单具有阴影和功能的文本框,本书由于篇幅有限,仅添加了一个设置阴影颜色的Shadow属性和文本框的更改事件OnChange。下面介绍其步骤。

(1)首先,利用App Wizard建立一个基于MFC ActiveX Control Wizard的工程,在Preject name文本框中输入要建立工程的名称“ExEdit”,如图1所示。

程序代码如下。

int CExEditCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

……

CRect rect(1,1,100,24); //随便建立一个矩形

m_Edit.Create(WS_CHILD,rect,this,WM_USER+9999); //建立对象

m_Edit.ShowWindow(SW_SHOW); //显示

//调整客户区大小

CWnd* wnd=m_Edit.GetParent(); //找到控件

CRect rcBounds,rcClient

wnd->GetClientRect(&rcBounds);

rcClient.left=rcBounds.left+1; //留出边线区域或阴影区域

rcClient.top=rcBounds.top+1;

rcClient.right=rcBounds.right-4;

rcClient.bottom=rcBounds.bottom-4;

m_Edit.MoveWindow(&rcClient); //调整大小

……

}

m_Edit建立完成后就可以绘制控件窗口了。

void CExEditCtrl::OnDraw(

CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)

{

CRect rcFrame,rcShadow ;

//绘制阴影

rcShadow.top=rcBounds.top+4;

rcShadow.left=rcBounds.left+4;

rcShadow.bottom=rcBounds.bottom;

rcShadow.right=rcBounds.right;

CBrush brush;

brush.CreateSolidBrush(TranslateColor(Shadow,NULL));

pdc->FillRect(&rcShadow,&brush);

brush.DeleteObject();

//绘制边线

rcFrame.left=rcBounds.left;

rcFrame.top=rcBounds.top;

rcFrame.right=rcBounds.right-3;

rcFrame.bottom=rcBounds.bottom-3;

brush.CreateSolidBrush(RGB(255,255,255));

pdc->FillRect(&rcFrame,&brush);

brush.DeleteObject();

pdc->Draw3dRect(&rcFrame,RGB(0,0,0),RGB(0,0,0));

}

当用户按下回车时,将焦点移动到下一个控件上。

BOOL CExEditCtrl::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->hwnd==m_Edit.GetSafeHwnd() && pMsg->message==WM_KEYDOWN && pMsg-> wParam ==13)

pMsg->wParam=9; //回车更换Tab顺序

return COleControl::PreTranslateMessage(pMsg);

}

现在,控件的基本功能完成了。现在的控件是可以运行的,只是还没有控件的接口。

(8)为控件添加属性

OLE_COLOR CExEditCtrl::GetShadow()

{

return Shadow;

}

void CExEditCtrl::SetShadow(OLE_COLOR nNewValue)

{

Shadow=nNewValue;

SetModifiedFlag();

}

代码中Shadow为全局变量,其声明如下:



添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.