文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发其他语言在VC6中创建wxWidgets项目[附图]
精品推荐
特别推荐
·给你十条学习Ruby语言的理由
·分页管理机制
·Perl 语言的重要价值体现
·经验技巧:分享两条Delphi开发经验
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
热点TOP10
·在VC6中创建wxWidgets项目[附图]
·AIX 5L 学习大纲/简易教程(2)(未经许可,请勿COPY)
·DENX U-Boot及Linux使用手册
·Visual C++ ADO数据库编程入门
·飞机躲避小游戏---是男人就撑100秒的制作
·[仿真实验]操作系统的内存管理
·三维粒子系统在AS2中的实现
·Continuation 和高级流程控制
·[分形]DLA团簇模型的摸拟
·用汇编编写DOS下的内存驻留程序(3)
·简单架设Jabber 局域网即时通讯服务器
·Palm OS应用程序设计指南之十一
·Palm OS应用程序设计指南之五
·samba和openldap结合实战
·AIX 5L 学习大纲/简易教程(1)(未经许可,请勿COPY)
·Internet Explorer 编程简述(十一)完美的Inplace Drag & Drop——“超级拖放”
·利用 wordXP 实现自动排班
·14.4 Function members
·数值计算程序大放送-线性代数方程组
·跟我一起写 Makefile

在VC6中创建wxWidgets项目[附图]

日期:2008年3月9日 作者: 查看:[大字体 中字体 小字体]


{
    ID_TEXTCTRL, ID_BUTTON
};

 

采用 Sizer 机制进行界面布局有相当大的优势。要想设计好自己的程序界面,必须对 Sizer 有比较深入的了解。

参考文档:http://www.wxwidgets.org/manuals/2.6.3/wx_sizeroverview.html(Sizer一览)

采用XML格式文件(XRC文件)定义程序界面也是不错的方式,详见:http://www.wxwidgets.org/manuals/2.6.3/wx_xrcoverview.html(基于XML的资源系统一览)。

无论如何,手工进行界面布局总是很繁杂,我们需要(可视化)工具的帮助:http://www.wxwidgets.org/apps2.htm

 

处理事件

在wxWidgets中处理事件,主要有两个步骤:编写“事件处理函数(方法)”,填写“事件表(EVENT_TABLE)”。

事件处理函数(方法)视事件的不同而有所不同,但也有规律:没有返回值,只有一个引用型参数(且一定是wxEvent的子类),不是虚方法(virtual method)。事件处理函数(方法)的名称没有特殊规定,可以自行命名。

作为示例,我们来处理上图中“测试按钮”被按下的事件。

根据wxWidgets文档,要处理按钮事件,需在自己的类中添加如下事件处理函数(方法):void MainFrame::OnButtonClick(wxCommandEvent &event)

具体说来就是,在 mainframe.h 文件中的 MainFrame 类中增加新的 OnButtonClick() 方法声明:

private:
    void OnButtonClick(wxCommandEvent& event);

并在 mainframe.cpp 文件中增加 OnButtonClick() 方法的定义:

void MainFrame::OnButtonClick(wxCommandEvent &event)
{
    //取编辑框中的文本并用信息框显示出来
    wxString text = ((wxTextCtrl*)this->FindWindow(ID_TEXTCTRL))->GetValue();
    wxMessageBox(text);
}

下面需要在 mainframe.cpp 中填写“事件表(EVENT_TABLE)”,以便我们的“事件处理函数(方法)”能在适当的时机(即事件触发时)被调用:

BEGIN_EVENT_TABLE(MainFrame, wxFrame)
    EVT_BUTTON(ID_BUTTON, MainFrame::OnButtonClick)
END_EVENT_TABLE()

在这个事件表中,我们使用宏 EVT_BUTTON 指定了按钮的ID,以及“事件处理函数(方法)”。

注:上面一直讲“事件处理函数(方法)”,其实是“方法(method)”不是“函数(function)”,只是“方法”这个词在编程领域和在日常生活中可以有不同的理解(“方法”也可以理解为“方式”),我如果说成“事件处理方法”,难免会产生歧义。当然,“事件处理函数(方法)”似乎也并不十分合适,应称为“事件处理‘方法’”或“事件处理方法(method)”?再深究下去就有咬文嚼字的嫌疑了,聪明的读者早已明白我的意思了吧?

现在“测试按钮”已经可以响应鼠标单击事件了。下面两图分别是我们的程序在Windows和红旗Linux(4)下的运行结果:

在VC6中创建wxWidgets项目[附图](图四)

在VC6中创建wxWidgets项目[附图](图五)

 

如何处理其它事件?

说白了,关键要知道两点:事件处理函数(方法)的参数是什么类型,填写参数表时用哪一个宏(EVT_*)。

再补充一点:要知道“什么控件”在“什么时机”会触发“什么事件”。

要知道这些,就需要对wxWidgets的事件处理有一个比较全面的了解。

建议看一下wxWidgets官方文档中的这篇文章:http://www.wxwidgets.org/manuals/2.6.3/wx_eventhandlingoverview.html(事件处理一览)

尤其是其中的 Event macros summary(事件宏概要)一段。

电子书《Cross-Platform GUI Programming with wxWidgets》附录9(Appendix I, 617页)中对事件处理时所涉及的事件类型(wxXXXEvent)和事件宏(EVT_*)有比较好的总结,建议看一下,最好打印出来放在手边,以便随时参考。

本文所涉及的完整源代码可在此下载:http://liigo.diy.myrice.com/article/wxProject/wxProject.zip

 

更进一步

了解 Sizer,熟悉界面设计:http://www.wxwidgets.org/manuals/2.6.3/wx_sizeroverview.html

了解 事件处理:http://www.wxwidgets.org/manuals/2.6.3/wx_eventhandlingoverview.html

了解 wxWidgets 提供了哪些控件,它们各自的属性、方法、事件,以及它们的用法。

去 wxWidgets.org 上找第三方的控件/库:http://www.wxwidgets.org/contrib2.htm#classes

去 wxWiki 上找第三方的控件/库:http://www.wxwidgets.org/wiki/index.PHP/Table_Of_Contents#Pages_about_classes.2C_functions_or_macros


上一页 [1] [2] [3] [4] [5] 下一页 




上一篇:A Summary of Principles for User-Interface Design.

下一篇:给年轻工程师的十大忠告

在VC6中创建wxWidgets项目[附图] 相关文章:
·教你把四十个QQ个人资料小图标全点亮
·QQ空间黑色背景的素材图片(2)
·如何戳破她的处女膜?(图)
·QQ空间黑色背景的素材图片
·男士十种领带打结图解
·15种做爱姿势真人示范写真(图)
·GHOST使用方法(图解)
·女性性器官--阴蒂(图)
·建国以来的全套人民币图片
·3DMax:跟我学做房间效果图
在VC6中创建wxWidgets项目[附图] 相关软件:
·周恩来总理经典图片集
·奥秘世界百科全书-高清晰PDF全彩图书
·创世卓越 - 中华成语典故[图文版]高清晰PDF电子书
·世界恐龙大合集图鉴
·红色警戒 世界地图
·伊索寓言(彩图翻页版)
·CorelDraw12 入门与实例(图文教程 菜鸟先飞系列教材)
·卫星定位地图GoogleEarth 看全球每个平方角
·正说清朝十二帝--图文版
·红警2 自制地图-Zaphie

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn