1、控件的事件一般都是由對外的接口引發到,這里定一個接口先:
該接口有一個字符串參數,表示調用者將傳入一個字符串,傳進來后,我們將取得字符串的長度。
2、添加事件:
事件應該是屬於窗口的,所以在Ctrl類上單擊右鍵-》添加:
3、添加一個事件“hello”:
該事件的參數是剛才那個字符串處理的結果,這里是long型。
4、在接口實現里調用事件函數:
- // COcxEventCtrl 消息處理程序
- LONG COcxEventCtrl::MyInterface(LPCTSTR strValue)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- CString str = strValue;
- int len = str.GetLength();
- hello(len);
- return 0;
- }
事件函數的名字就是事件名稱,參數就是在添加事件時候設置的參數。這里我們計算了字符串的長度,然后把結果給了事件函數。控件里面要做到就做完了。
5、響應事件:
新建一個對話框項目,添加你做好的控件,並為其關聯一個變量;然后添加一個按鈕,在按鈕點擊消息里,調用控件的對外接口,這里就一個接口:
- void COcxEventTestDlg::OnBnClickedButton1()
- {
- m_OcxEvent.MyInterface(L"hello world !");
- }
這里我們傳入了" hello world ! "。接口函數調用后就會引發我們定義的事件。
在控件上單擊右鍵,選擇添加事件處理:
在實現代碼里,添加如下內容:
- void COcxEventTestDlg::helloOcxeventctrl1(long len)
- {
- CString str;
- str.Format(_T("%d"),len);
- AfxMessageBox(str);
- }
這里消息響應函數傳出了一個值,它就是計算出來的長度,我們把它彈出來看看:
10個字母+2個空格+一個感嘆號 = 13. OK了。