1. 前言
最近需要學習wxWidgets,看了看書,還是比較通俗易懂的。本博客根據書籍《使用wxwidgets進行跨平臺程序開發》第三章3.3 過濾某個事件的案例進行編寫的。
2. 正文
2.1 創建項目
暫時略過,網上有講如何配置環境和創建項目的教程,本文不使用界面編輯器,全代碼。
2.2 生成一個新類MyTextCtrl,繼承自wxTextCtrl
MyTextCtrl 頭文件
#ifndef MYTEXTCTRL_H
#define MYTEXTCTRL_H
#include <wx/wx.h>
class MyTextCtrl : public wxTextCtrl
{
public:
MyTextCtrl();
virtual ~MyTextCtrl();
//聲明處理事件的函數
void OnChar(wxKeyEvent& event);
protected:
private:
//聲明事件表
DECLARE_EVENT_TABLE()
};
#endif // MYTEXTCTRL_H
MyTextCtrl cpp文件
#include "MyTextCtrl.h"
// 初始化事件表
BEGIN_EVENT_TABLE(MyTextCtrl,wxTextCtrl)
// 綁定鍵盤按下的事件
EVT_KEY_DOWN(MyTextCtrl::OnChar)
END_EVENT_TABLE()
MyTextCtrl::MyTextCtrl()
{
//ctor
}
MyTextCtrl::~MyTextCtrl()
{
//dtor
}
// 鍵盤按下的事件
void MyTextCtrl::OnChar(wxKeyEvent& event)
{
//如果是字母
if(wxIsalpha(event.GetKeyCode()))
{
//繼續尋找父類的事件表
event.Skip();
}else
{
//獲取按鍵值
int code = event.GetKeyCode();
wxString msg = wxString::Format(wxT("%d"),code);
wxMessageBox(msg,wxT("過濾"));
//放棄,事件將不會處理
event.Skip(false);
// 書中的這個方法不知道什麼意思
//wxBell();
}
}
2.3 在主窗口上添加MyTextCtrl控件
3. 結尾
最後發現第一個數字總是能出現在編輯框中,不知道爲什麼。
下文地址:https://blog.csdn.net/q893332169/article/details/102462457