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安装文件_上

  • 2009年10月28日 21:06
  • 11.37MB
  • 下载

WTL起步-玩转图形界面

  • 2010年05月12日 11:57
  • 846KB
  • 下载

ubuntu下codeblocks个别设置(改字体/终端)

原文地址:ubuntu下codeblocks个别设置(改字体/终端)作者:隐藏_悲伤 装了codeblocks后觉得默认终端的很不和谐~查了下发现可以改的: 1)Settings->Environ...

WTL起步-玩转图形界面.pdf

  • 2012年05月17日 19:01
  • 1.69MB
  • 下载

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

codeblocks是一种非常有名的开源IDE,在windows下最好用的IDE非Visual Studio莫属,但是在linux下,个人认为codeblocks是最好用的IDE,下面来讲一下我在ub...

Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤

1、  打开新立得包管理器,搜索JDK,选择openjdk-6-jdk安装; 2、  打开Ubuntu软件中心,搜索Eclipse,选择Eclipse集成开发环境,安装; 3、  打开Eclips...

ubuntu 下codeblocks的相关配置

1.先把编译环境,C库、C++库和Boost库装好,如下: sudoapt-get install build-essential * 有可能安装 build-essential后gdb就已经安装...

ubuntu下opencv的IDE——codeblocks

ubuntu下codeblocks中opencv的配置

ubuntu下codeblocks opencv2.4.9配置

一.安装 CodeBlocks 安装 codeblocks [plain] view plaincopyprint? # apt-get install codebloc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ubuntu下codeblocks起步(六)-上
举报原因:
原因补充:

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