wxWidget常用事件及宏参考.docx
- 文档编号:6177472
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:62.74KB
wxWidget常用事件及宏参考.docx
《wxWidget常用事件及宏参考.docx》由会员分享,可在线阅读,更多相关《wxWidget常用事件及宏参考.docx(18页珍藏版)》请在冰豆网上搜索。
wxWidget常用事件及宏参考
一、整体框架:
1、一个继承自wxApp的类,类中至少一个返回值为bool的虚函数:
OnInit()作为程序入口函数。
返回值为真,则wxWidgets开始进入事件循环,接受输入事件并进行处理。
返回值为假,则释放已经分配的资源,结束程序的运行。
2、一个继承自wxFrame的类,此类负责整个窗口的布局。
定义一些事件处理函数,以及对事件绑定的宏声明。
3、类事件列表:
BEGIN_EVENT_TABLE()...END_EVENT_TABLE(),对事件和处理事件的函数进行绑定。
4、程序入口类指定宏:
IMPLEMENT_App();
5、DECLARE_App();
二、程序执行的一般过程
1、根据不同OS平台,不同的入口函数调用(由wxWidgets内部提供),初始化自己的数据结构,为一-4中指定的类创建一个实例。
2、wxWidgets调用实例中的OnInit(),而OnInit()又创建一个一-2类的一个实例。
3、一-2中的构造函数创建一个窗口,并为之加上图标,菜单和工具栏等。
4、OnInit()显示主窗体并返回真。
5、wxWidgets进入事件循环,等待并处理事件。
说明:
事件由用户触发,处理事件的方法由类事件列表绑定,处理过程由用户定义。
附:
1、wxT宏,类似于_T(),_()处理编码兼容性问题。
2、事件表有动态和静态,以上宏中指定的为静态的。
一、事件表的创建和事件的处理过程
1、静态事件表的创建过程:
(1)、定义一个直接或者间接继承自wxEvtHandler的类。
(2)、定义想处理事件的事件处理函数。
(3)、在DECLARE_EVENT_TABLE中声明事件表。
(4)、在.cpp中用BEGIN_EVENT_TABLE和END_EVENT_TABLE实现一个事件表。
(5)、在事件表中加入事件宏,来实现事件到事件处理过程的映射。
2、事件处理函数的形式
(1)、返回值为void。
(2)、都不是虚函数。
(3)、一个事件对象做为参数。
3、事件处理过程
(1)、需要递归查找类事件表的是:
wxCommandEvent以及直接或者间接继承此事件的事件。
(2)、不能传递给父窗口处理的事件:
wxActivate,wxCloseEvent,wxEraseEvent,wxFocu-
sEvent,wxKeyEvent,wxIdleEvent,wxInitDialogEvent,wxJoystickEvent,wxMenuEvent,
wxMouseEvent,wxMoveEvent,wxPaintEvent,wxQueryLayoutInfoEvent,wxSizeEvent,
wxScrollWinEvent,wxSysColourChangedEvent。
原因在于这些事件只对本窗口有意义。
二、事件的过滤
以上为处理按钮单击事件的过程,由此可知:
通过这种方法可以改变本地控件的默认行为,方法是继承一个父控件的继承类,在事件表中使用事件映射宏过滤不想要的事件。
文本框只接受"a"~"z"和"A"~"Z"的输入:
viewplaincopytoclipboard
1voidMyTextCtrl:
:
OnChar(wxKeyEvent&event)
2{
3if(wxIsalpha(event.KeyCode()))
4{
5//这些按键在可以接受的范围,所以按照正常的流程处理
6event.Skip();
7}
8else
9{
10//这些事件不再我们可以接受的范围,所以不用调用函数Skip
11//由于事件表已经匹配并且没有调用函数Skip,所以事件处理
12//过程不会再继续匹配别的事件表,而是认为时间处理已经结束。
13wxBell();
14}
15}
[cpp:
nogutter]viewplaincopy
16voidMyTextCtrl:
:
OnChar(wxKeyEvent&event)
17{
18if(wxIsalpha(event.KeyCode()))
19{
20//这些按键在可以接受的范围,所以按照正常的流程处理
21event.Skip();
22}
23else
24{
25//这些事件不再我们可以接受的范围,所以不用调用函数Skip
26//由于事件表已经匹配并且没有调用函数Skip,所以事件处理
27//过程不会再继续匹配别的事件表,而是认为时间处理已经结束。
28wxBell();
29}
30}
三、事件表的挂载
正在理解。
。
。
四、动态事件的处理方法
也就是运行期改变事件表的映射关系。
两个有关动态事件处理的API:
wxEvtHandler:
:
Connect和wxEvtHandler:
:
Disconnect,一般不用手动调用wxEvtHandler:
:
Disconnect,窗口类被释放的时候自动被调用。
举例:
viewplaincopytoclipboard
31classMyFrame:
publicwxFrame
32{
33public:
34MyFrame(constwxString&title);
35voidOnQuit(wxCommandEvent&event);
36voidOnAbout(wxCommandEvent&event);
37protected:
38private:
39//DECLARE_EVENT_TABLE()已经被注释掉了!
40};
[cpp:
nogutter]viewplaincopy
41classMyFrame:
publicwxFrame
42{
43public:
44MyFrame(constwxString&title);
45voidOnQuit(wxCommandEvent&event);
46voidOnAbout(wxCommandEvent&event);
47protected:
48private:
49//DECLARE_EVENT_TABLE()已经被注释掉了!
50};
五、窗口标示符
窗口标识符是在事件系统中用来唯一确定窗口的整数。
事实上,在整个应用程序的范围内,窗口标识符不必一定是唯一的,而只要在某个固定的上下文(比如说,在一个frame窗口和它的所有子窗口)内是唯一的就可以了。
举例来说:
你可以在无数个对话框中使用wxID_OK这个标识符,只要在某个对话框内不要重复使用就可以了。
wxWidgets自动创建的标识符是总是一个负数,所以永远不会和用户定义的窗口标识符重复,用户定义的窗口标识符只能是正整数。
标识符名称
描述
wxID_ANY
让wxWidgets自动产生一个标识符
wxID_LOWEST
最小的系统标识符值(4999)
wxID_HIGHEST
最大的系统标识符值(5999)
wxID_OPEN
打开文件
wxID_CLOSE
关闭窗口
wxID_NEW
新建窗口文件或者文档
wxID_SAVE
保存文件
wxID_SAVEAS
文件另存为(应该弹出文件位置对话框)
wxID_REVERT
恢复文件在磁盘上的状态
wxID_EXIT
退出应用程序
wxID_UNDO
撤消最近一次操作
wxID_REDO
重复最近一次操作
wxID_HELP
帮助(例如对话框上的帮助按钮可以用这个标识符)
wxID_PRINT
打印
wxID_PRINT_SETUP
打印设置
wxID_PREVIEW
打印预览
wxID_ABOUT
显示一个用来描述整个程序的对话框
wxID_HELP_CONTENTS
显示上下文帮助
wxID_HELP_COMMANDS
显示应用程序命令
wxID_HELP_PROCEDURES
显示应用程序过程
wxID_HELP_CONTEXT
未使用
wxID_CUT
剪切
wxID_COPY
复制到剪贴板
wxID_PASTE
粘贴
wxID_CLEAR
清除
wxID_FIND
查找
wxID_DUPLICATE
复制
wxID_SELECTALL
全选
wxID_DELETE
删除
wxID_REPLACE
覆盖
wxID_REPLACE_ALL
全部覆盖
wxID_PROPERTIES
查看属性
wxID_VIEW_DETAILS
列表框中的按照详细信息方式显示
wxID_VIEW_LARGEICONS
列表框按照大图标的方式显示
wxID_VIEW_SMALLICONS
列表框中按照小图标的方式显示
wxID_VIEW_LIST
列表框中按照列表的的方式显示
wxID_VIEW_SORTDATE
按照日期排序
wxID_VIEW_SORTNAME
按照名称排序
wxID_VIEW_SORTSIZE
按照大小排序
wxID_VIEW_SORTTYPE
按照类型排序
wxID_FILE1towxID_FILE9
显示最近使用的文件
wxID_OK
确定
wxID_CANCEL
取消
wxID_APPLY
应用变更
wxID_YES
YES
wxID_NO
No
wxID_STATIC
静态文本或者静态图片可以用这个标识符
wxID_FORWARD
向前
wxID_BACKWARD
向后
wxID_DEFAULT
恢复默认设置
wxID_MORE
显示更多选项
wxID_SETUP
显示一个设置对话框
wxID_RESET
重置所有选项
wxID_CONTEXT_HELP
显示上下文帮助
wxID_YESTOALL
全部选是
wxID_NOTOALL
全部选否
wxID_ABORT
中止当前操作
wxID_RETRY
重试
wxID_IGNORE
忽略错误
wxID_UP
向上
wxID_DOWN
向下
wxID_HOME
首页
wxID_REFRESH
刷新
wxID_STOP
停止正在进行的操作
wxID_INDEX
显示一个索引
wxID_BOLD
加粗显示
wxID_ITALIC
斜体显示
wxID_JUSTIFY_CENTER
居中
wxID_JUSTIFY_FILL
格式
wxID_JUSTIFY_RIGHT
右对齐
wxID_JUSTIFY_LEFT
左对齐
wxID_UNDERLINE
下划线
wxID_INDENT
缩进
wxID_UNINDENT
反缩进
wxID_ZOOM_100
放大到100%
wxID_ZOOM_FIT
缩放到整页
wxID_ZOOM_IN
放大
wxID_ZOOM_OUT
缩小
wxID_UNDELETE
反删除
wxID_REVERT_TO_SAVED
恢复到上次保存的状态
为了避免你自己定义的标识符和这些预定义的标识符重复,你可以使用大于wxID_HIGHEST的标识符或者小于wxID_LOWEST的标识符。
六、自定义事件
理解中。
。
。
命令事件
∙
∙wxEVT_COMMAND_BUTTON_CLICKED,1
∙wxEVT_COMMAND_CHECKBOX_CLICKED,2
∙wxEVT_COMMAND_CHOICE_SELECTED,3
∙wxEVT_COMMAND_LISTBOX_SELECTED,4
∙wxEVT_COMMAND_LISTBOX_DOUBLECLICKED,5
∙wxEVT_COMMAND_CHECKLISTBOX_TOGGLED,6
∙
∙以下这一段事件ID由于版本更新,已经移到了
∙
∙#ifWXWIN_COMPATIBILITY_EVENT_TYPES
∙wxEVT_COMMAND_TEXT_UPDATED,7
∙wxEVT_COMMAND_TEXT_ENTER,8
∙wxEVT_COMMAND_TEXT_URL,13
∙wxEVT_COMMAND_TEXT_MAXLEN,14
∙#endif//WXWIN_COMPATIBILITY_EVENT_TYPES
∙
∙wxEVT_COMMAND_MENU_SELECTED,9
∙wxEVT_COMMAND_SLIDER_UPDATED,10
∙wxEVT_COMMAND_RADIOBOX_SELECTED,11
∙wxEVT_COMMAND_RADIOBUTTON_SELECTED,12
∙
∙wxEVT_COMMAND_SCROLLBAR_UPDATED现在已废弃不用,转而使用wxEVT_SCROLL。
∙
∙wxEVT_COMMAND_SCROLLBAR_UPDATED,13
∙wxEVT_COMMAND_VLBOX_SELECTED,14
∙wxEVT_COMMAND_COMBOBOX_SELECTED,15
∙wxEVT_COMMAND_TOOL_RCLICKED,16
∙wxEVT_COMMAND_TOOL_ENTER,17
∙wxEVT_COMMAND_SPINCTRL_UPDATED,18
∙
∙
∙以下两个事件也被废弃了//Socketsandtimerssendevents,too
∙
∙DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE,wxEVT_SOCKET,50)
∙wxEVT_TIMER,80
∙
∙
∙·鼠标事件
∙
∙
∙wxEVT_LEFT_DOWN,100
∙wxEVT_LEFT_UP,101
∙wxEVT_MIDDLE_DOWN,102
∙wxEVT_MIDDLE_UP,103
∙wxEVT_RIGHT_DOWN,104
∙wxEVT_RIGHT_UP,105
∙wxEVT_MOTION,106
∙wxEVT_ENTER_WINDOW,107
∙wxEVT_LEAVE_WINDOW,108
∙wxEVT_LEFT_DCLICK,109
∙wxEVT_MIDDLE_DCLICK,110
∙wxEVT_RIGHT_DCLICK,111
∙wxEVT_SET_FOCUS,112
∙wxEVT_KILL_FOCUS,113
∙wxEVT_CHILD_FOCUS,114
∙wxEVT_MOUSEWHEEL,115
∙
∙
∙·非客户区(Non-client)鼠标事件
∙
∙
∙wxEVT_NC_LEFT_DOWN,200
∙wxEVT_NC_LEFT_UP,201
∙wxEVT_NC_MIDDLE_DOWN,202
∙wxEVT_NC_MIDDLE_UP,203
∙wxEVT_NC_RIGHT_DOWN,204
∙wxEVT_NC_RIGHT_UP,205
∙wxEVT_NC_MOTION,206
∙wxEVT_NC_ENTER_WINDOW,207
∙wxEVT_NC_LEAVE_WINDOW,208
∙wxEVT_NC_LEFT_DCLICK,209
∙wxEVT_NC_MIDDLE_DCLICK,210
∙wxEVT_NC_RIGHT_DCLICK,211
∙
∙
∙·字符输入事件
∙
∙wxEVT_CHAR,212
∙wxEVT_CHAR_HOOK,213
∙wxEVT_NAVIGATION_KEY,214
∙wxEVT_KEY_DOWN,215
∙wxEVT_KEY_UP,216
∙#ifwxUSE_HOTKEY
∙wxEVT_HOTKEY,217
∙#endif
∙
∙
∙·设置焦点(Cursor)事件
∙
∙
∙wxEVT_SET_CURSOR,230
∙
∙
∙·来自wxScrollBar控件和wxSlider控件的滚动事件
∙
∙wxEVT_SCROLL_TOP,300
∙wxEVT_SCROLL_BOTTOM,301
∙wxEVT_SCROLL_LINEUP,302
∙wxEVT_SCROLL_LINEDOWN,303
∙wxEVT_SCROLL_PAGEUP,304
∙wxEVT_SCROLL_PAGEDOWN,305
∙wxEVT_SCROLL_THUMBTRACK,306
∙wxEVT_SCROLL_THUMBRELEASE,307
∙wxEVT_SCROLL_CHANGED,308
∙
∙
∙·来自wxWindow的滚动事件
∙
∙
∙wxEVT_SCROLLWIN_TOP,320
∙wxEVT_SCROLLWIN_BOTTOM,321
∙wxEVT_SCROLLWIN_LINEUP,322
∙wxEVT_SCROLLWIN_LINEDOWN,323
∙wxEVT_SCROLLWIN_PAGEUP,324
∙wxEVT_SCROLLWIN_PAGEDOWN,325
∙wxEVT_SCROLLWIN_THUMBTRACK,326
∙wxEVT_SCROLLWIN_THUMBRELEASE,327
∙
∙
∙·系统事件
∙
∙
∙wxEVT_SIZE,400
∙wxEVT_MOVE,401
∙wxEVT_CLOSE_WINDOW,402
∙wxEVT_END_SESSION,403
∙wxEVT_QUERY_END_SESSION,404
∙wxEVT_ACTIVATE_APP,405
∙406..408被用于苹果公司PowerPC上,这里没有列出。
如果想查看这些事件,可去看
∙wxEVT_ACTIVATE,409
∙wxEVT_CREATE,410
∙wxEVT_DESTROY,411
∙wxEVT_SHOW,412
∙wxEVT_ICONIZE,413
∙wxEVT_MAXIMIZE,414
∙wxEVT_MOUSE_CAPTURE_CHANGED,415
∙wxEVT_MOUSE_CAPTURE_LOST,416
∙wxEVT_PAINT,417
∙wxEVT_ERASE_BACKGROUND,418
∙wxEVT_NC_PAINT,419
∙wxEVT_PAINT_ICON,420
∙wxEVT_MENU_OPEN,421
∙wxEVT_MENU_CLOSE,422
∙wxEVT_MENU_HIGHLIGHT,423
∙wxEVT_CONTEXT_MENU,424
∙wxEVT_SYS_COLOUR_CHANGED,425
∙wxEVT_DISPLAY_CHANGED,426
∙wxEVT_SETTING_CHANGED,427
∙wxEVT_QUERY_NEW_PALETTE,428
∙wxEVT_PALETTE_CHANGED,429
∙wxEVT_JOY_BUTTON_DOWN,430
∙wxEVT_JOY_BUTTON_UP,431
∙wxEVT_JOY_MOVE,432
∙wxEVT_JOY_ZMOVE,433
∙wxEVT_DROP_FILES,434
∙wxEVT_DRAW_ITEM,435
∙wxEVT_MEASURE_ITEM,436
∙wxEVT_COMPARE_ITEM,437
∙wxEVT_INIT_DIALOG,438
∙wxEVT_IDLE,439
∙wxEVT_UPDATE_UI,440
∙wxEVT_SIZING,441
∙wxEVT_MOVING,442
∙wxEVT_HIBERNATE,443
∙
∙
∙·剪贴板事件
∙
∙
∙wxEVT_COMMAND_TEXT_COPY,444
∙wxEVT_COMMAND_TEXT_CUT,445
∙wxEVT_COMMAND_TEXT_PASTE,446
∙
∙
∙·通用命令事件(注意,一个Click事件是比buttondown/up优先级更高的。
∙
∙
∙wxEVT_COMMAND_LEFT_CLICK,500
∙wxEVT_COMMAND_LEFT_DCLICK,501
∙wxEVT_COMMAND_RIGHT_CLICK,502
∙wxEVT_COMMAND_RIGHT_DCLICK,503
∙wxEVT_COMMAND_SET_FOCUS,504
∙wxEVT_COMMAND_KILL_FOCUS,505
∙wxEVT_COMMAND_ENTER,506
∙
∙
∙·帮助事件
∙
∙
∙wxEVT_HELP,1050
∙wxEVT_DETAILED_HELP,1051
∙
∙
∙以下两个事件是等价的
∙
∙
∙wxEVT_COMMAND_TOOL_CLICKEDwxEVT_COMMAND_MENU_SELECTED
∙
∙
∙事件手柄列表
∙wxCommandEventHandler
∙
∙wxScrollEventHandler
∙
∙wxScrollWinEventHandler
∙
∙wxSizeEventHandler
∙
∙wxMoveEventHandler
∙
∙wxPaintEventHandler
∙
∙wxNcPaintEventHandler
∙
∙wxEraseEventHandler
∙
∙wxMouseEventHandler
∙
∙wxCharEventHandler
∙
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wxWidget 常用 事件 参考