MFC OCX 控件事件的添加和处理

1、控件的事件一般都是由对外的接口引发到,这里定一个接口先:

该接口有一个字符串参数,表示调用者将传入一个字符串,传进来后,我们将取得字符串的长度。

2、添加事件:

事件应该是属于窗口的,所以在Ctrl类上单击右键-》添加:

3、添加一个事件“hello”:

该事件的参数是刚才那个字符串处理的结果,这里是long型。

4、在接口实现里调用事件函数:

[cpp] view plaincopy
 
  1. // COcxEventCtrl 消息处理程序  
  2.   
  3. LONG COcxEventCtrl::MyInterface(LPCTSTR strValue)  
  4. {  
  5.     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  6.     CString str = strValue;  
  7.     int len = str.GetLength();  
  8.     hello(len);  
  9.     return 0;  
  10. }  

 

事件函数的名字就是事件名称,参数就是在添加事件时候设置的参数。这里我们计算了字符串的长度,然后把结果给了事件函数。控件里面要做到就做完了。

5、响应事件:

新建一个对话框项目,添加你做好的控件,并为其关联一个变量;然后添加一个按钮,在按钮点击消息里,调用控件的对外接口,这里就一个接口:

[cpp] view plaincopy
 
  1. void COcxEventTestDlg::OnBnClickedButton1()  
  2. {  
  3.     m_OcxEvent.MyInterface(L"hello world !");  
  4.       
  5. }  

这里我们传入了" hello world  ! "。接口函数调用后就会引发我们定义的事件。

在控件上单击右键,选择添加事件处理:

在实现代码里,添加如下内容:

[cpp] view plaincopy
 
  1. void COcxEventTestDlg::helloOcxeventctrl1(long len)  
  2. {  
  3.     CString str;  
  4.     str.Format(_T("%d"),len);  
  5.     AfxMessageBox(str);  
  6. }  

这里消息响应函数传出了一个值,它就是计算出来的长度,我们把它弹出来看看:

10个字母+2个空格+一个感叹号 = 13.   OK了。

posted @ 2014-12-17 14:10  QQ76211822  阅读(4256)  评论(0编辑  收藏  举报