ubuntu下codeblocks起步(六)-上

原创 2007年10月06日 23:54:00

ubuntu下codeblocks起步-按键响应


关于跨平台程序设计,下面是一网友说的一段话:

“跨平台也没有想象中的简单,所谓跨平台是通过大量的宏和条件编译实现的,很多类的数据和成员函数不是每个平台下都相同的,就连事件也是不同的平台各不一致,并且没有模拟实现。界面构件也没有模拟实现,这个平台有的别的平台没有。

例如指定的字体颜色常量比如wxLIGHT_GREY,在windows底下非常正常,转到GTK+2环境中简直暗淡得可以。还有许多,所以其跨平台的前提是你非常精通各个平台,在每个平台上都有相当经验,你才能在写代码之前非常明确的知道要注意什么,什么能写什么不能写。比如非windows平台的环境中窗体(wxFrame)本身就很有可能没有焦点的概念,捕抓不到键盘消息,要用wxPanel才可以。”

对于“非windows平台的环境中窗体(wxFrame)本身就很有可能没有焦点的概念”,我在ubuntu上实验过, wxFrame确实捕获不到按键消息。或是水平有限,没有发现,如果哪位大虾知道,还望指点小弟一二。:-) 所以本文的按键响应也是通过wxPanel来实现的。

下面的这个程序和上一篇文章(http://blog.csdn.net/Q_Jizi/archive/2007/10/05/1812062.aspx)的原理类似,只不过是通过键盘来控制物体的运动。


新建wxWidgets工程的Frame应用,方法如上篇文章。


向窗体中拖入一个wxPanel控件。

 

分别建立wxPanel控件的EVT_PAINT和EVT_KEY_DOWN事件的响应函数OnPanel1Paint和OnPanel1KeyDown函数。

修改Main.h文件:

为Frame类添加两个成员变量

private:

wxBitmap m_bmp;

wxPoint move;


打来Main.cpp文件,在frame的构造函数中初始化这两个变量:

m_bmp.LoadFile( _T("./bitmap1.bmp"),wxBITMAP_TYPE_BMP); //装载图片

move.x=70;

move.y=70; //设置图片的初始位置

下面是OnPanel1Paint函数:

void keyboardFrame::OnPanel1Paint(wxPaintEvent& event)

{


wxPaintDC dc(Panel1);

//因为要在 Panel1上显示图片,所以此处不是获得this的,而是 Panel1的

dc.DrawBitmap(m_bmp, move.x, move.y, true); //显示图片

}

OnPanel1KeyDown函数:

void keyboardFrame::OnPanel1KeyDown(wxKeyEvent& event)

{

long keycode;

keycode = event.GetKeyCode(); //获得键值

switch (keycode)

{

case WXK_LEFT:

move.x=move.x-5;

break;

case WXK_RIGHT:

move.x=move.x+5;

break;

case WXK_UP:

move.y=move.y-5;

break;

case WXK_DOWN:

move.y=move.y+5;

break;

}

Refresh();

Update(); //记住,此处Refresh()和Update()要一起用

}

此部分请参见:

http://www.wxwidgets.org/manuals/2.8.0/wx_wxkeyevent.html

http://www.wxwidgets.org/manuals/2.8.0/wx_keycodes.html#keycodes

最后别忘了头文件要

#include <wx/wx.h>

#include <wx/panel.h>

编译运行

 


这样,就可以通过上下左右键来控制“狮子”的运动了。其他的按键处理也类似。

在下一篇,我转载了一篇组合键响应,应该是在windows下实现的,因为在ubuntu下codeblocks的wxDialog类也不能接收按键响应。但原理和在windows下是一样的拉,只是在wxPanel类上实现就可以了。

ubuntu下codeblocks起步(六)-下

ubuntu下codeblocks起步-按键响应原创:http://blog.csdn.net/sendltd/archive/2007/08/27/1761...
  • Q_Jizi
  • Q_Jizi
  • 2007年10月06日 23:57
  • 929

ubuntu安装codeblocks无法编译及更换输出终端

1.安装codeblocks之后,编绎不了程序,报错: g++/gcc: not found 因为编绎器,调试器未安装完全。 sudo apt-get install build-essential ...
  • zhidetian
  • zhidetian
  • 2016年07月13日 10:42
  • 555

ubuntu下codeblocks起步(七)-上

  ubuntu下codeblocks起步-图形绘制计算机技术发展到现在,图形图像技术伴随其走过了大部分的历程。成为计算机技术的一个重要分支。而且应用越来越广泛,已渗透到各行各业。随着多媒体技术的发...
  • Q_Jizi
  • Q_Jizi
  • 2007年10月10日 18:28
  • 1606

ubuntu下codeblocks起步(五)-上

ubuntu下codeblocks起步-鼠标响应
  • Q_Jizi
  • Q_Jizi
  • 2007年10月05日 16:06
  • 1488

ubuntu下codeblocks起步(补充篇)-上

CodeBlocks在windows下安装   CodeBlocks的安装是很简单的,以下是我的安装步骤:                       ①、下载 codeblocks-1.0rc2_m...
  • Q_Jizi
  • Q_Jizi
  • 2007年12月22日 14:12
  • 1790

ubuntu下codeblocks起步(九)-上

ubuntu下codeblocks起步(九)-bmp位图 BMP文件格式分析 要对bmp位图文件编程首先要知道bmp文件的文件格式。在程序设计的...
  • Q_Jizi
  • Q_Jizi
  • 2007年10月31日 11:36
  • 1331

Ubuntu下codeblocks安装配置方法及opencv配置方法

codeblocks是一种非常有名的开源IDE,在windows下最好用的IDE非Visual Studio莫属,但是在linux下,个人认为codeblocks是最好用的IDE,下面来讲一下我在ub...
  • lhanchao
  • lhanchao
  • 2016年12月02日 23:27
  • 2817

ubuntu下如何安装codeblocks集成开发环境

codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦。 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如...
  • mydo
  • mydo
  • 2015年04月11日 19:29
  • 3096

ubuntu上codeblocks的默认安装路径

/usr/share/codeblocks /usr/share 放置共享文件的地方, 安装的应用程序都在这里,比如cmake, gdb,...
  • wohuiluanshuo
  • wohuiluanshuo
  • 2015年10月26日 10:01
  • 362

ubuntu下codeblocks起步(三)

  • Q_Jizi
  • Q_Jizi
  • 2007年10月01日 00:50
  • 2879
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ubuntu下codeblocks起步(六)-上
举报原因:
原因补充:

(最多只允许输入30个字)