ubuntu下codeblocks起步(七)-中

原创 2007年10月10日 18:30:00

打开drawingMain.h文件,向drawingFrame类中添加如下成员变量:

private:

wxString m_UserColor; //记录所选择的画笔和画刷的颜色

wxString m_UserShape; //记录所选择的要画的图形


/*下面四个变量,在画直线时:m_SX和m_SY分别用于保存直线的起始坐标的x,y值,m_EX和m_EY用于保存直线的结束坐标值;在画椭圆时: m_SX和 m_SY用于保存椭圆的中心点坐标, m_EX和 m_EY分别用于保存椭圆的长轴和短轴;在画圆时: m_SX和 m_SY用于保存圆心坐标, m_EX保存半径。*/

int m_EY;

int m_EX;

int m_SY;

int m_SX;


wxPen pen; //画笔

wxBrush brush; //画刷


//下面两个变量用于将输入的wxString型数据转换为int型的

wxString str;

double temp;

头文件要#include <wx/brush.h>


打开MyDialog.h文件,修改MyDialog类如下(红色为修改的内容):

class MyDialog: public wxDialog

{

public:


MyDialog(wxWindow* parent,wxWindowID id=wxID_ANY,const wxPoint& pos=wxDefaultPosition,const wxSize& size=wxDefaultSize);

virtual ~MyDialog();


//(*Identifiers(MyDialog)

static const long ID_STATICTEXT1;

static const long ID_TEXTCTRL1;

static const long ID_TEXTCTRL2;

static const long ID_STATICTEXT2;

static const long ID_TEXTCTRL3;

static const long ID_TEXTCTRL4;

static const long ID_BUTTON1;

static const long ID_BUTTON2;

//*)


protected:


//(*Handlers(MyDialog)

void OnChanlClick(wxCommandEvent& event);

void OnOkClick(wxCommandEvent& event);

//*)

public:

//(*Declarations(MyDialog)

wxStaticText* StaticText1;

wxTextCtrl* m_StartX;

wxTextCtrl* m_StartY;

wxStaticText* StaticText2;

wxTextCtrl* m_EndX;

wxTextCtrl* m_EndY;

wxButton* Button1;

wxButton* Button2;

//*)

public:

bool IfOk;


DECLARE_EVENT_TABLE()

};

将wxTextCtrl设置为public类型,便于Frame访问;变量IfOk用于记录是否选择了此窗体,即是否选择画这种图形。


打开RangeDialog.h和CircleDialog.h,设置如上面的MyDialog.h

打开MyDialog窗体,为“退出”和“确定”按钮在MyDialog.cpp文件中添加响应事件:

void MyDialog::OnChanlClick(wxCommandEvent& event)

{

Close();

}


void MyDialog::OnOkClick(wxCommandEvent& event)

{

IfOk = TRUE;

Close();

}


RangeDialog和CircleDialog窗体做同样的操作。


打开drawingMain.cpp,在Frame类的构造函数中对drawingFrame类的新加成员变量进行初始化:

m_UserColor = _T("");

m_UserShape = _T("");

str = _T("");

temp = 0.0;


打开drawingFrame主窗体,为窗体的“颜色”和“画图”的子菜单选项添加响应函数:打开C::B左边management工作区的Resource选项卡,依次打开列表,找到“颜色”和“画图”菜单的子选项。

分别为子选项添加响应函数

为“颜色”菜单的子选项添加的函数如下:

void drawingFrame::OnRedSelected(wxCommandEvent& event)

{

m_UserColor = _T("红色"); //记录选中的为“红色”

pen = *wxRED_PEN; //定义红色画笔

brush = *wxRED_BRUSH; //定义红色画刷


Refresh(); //刷新窗体,实际是一个重构窗体的过程,在

Update(); //重构过程中重新调用OnPaint函数。

}


void drawingFrame::OnYelloSelected(wxCommandEvent& event)

{

m_UserColor = _T("灰色");

pen = *wxGREY_PEN;

brush = *wxGREY_BRUSH;


Refresh();

Update();

}


void drawingFrame::OnGreenSelected(wxCommandEvent& event)

{

m_UserColor = _T("绿色");

pen = *wxGREEN_PEN;

brush = *wxGREEN_BRUSH;


Refresh();

Update();

}


void drawingFrame::OnBlueSelected(wxCommandEvent& event)

{

m_UserColor = _T("黑色");

pen = *wxBLACK_PEN;

brush = *wxBLACK_BRUSH;


Refresh();

Update();

}

为“颜色”菜单的子选项添加的函数如下:

void drawingFrame::OnLineSelected(wxCommandEvent& event)

{

m_UserShape = _T("直线"); //记录选择的图形为直线

MyDialog LineDialog(this); //创建MyDialog类的对象

LineDialog.ShowModal(); //显示子窗体

//将子窗体中输入的内容转换为int型,具体方法在文章最后有一个讲解

str = (LineDialog.m_StartX)->GetValue();

str.ToDouble(&temp);

m_SX = int(temp);

str = (LineDialog.m_StartY)->GetValue();

str.ToDouble(&temp);

m_SY = int(temp);

str = (LineDialog.m_EndX)->GetValue();

str.ToDouble(&temp);

m_EX = int(temp);

str = (LineDialog.m_EndY)->GetValue();

str.ToDouble(&temp);

m_EY = int(temp);

if(LineDialog.IfOk == TRUE) //判断是否选择了直线

{

Refresh();

Update();

}

}


void drawingFrame::OnCircleSelected(wxCommandEvent& event)

{

m_UserShape = _T("圆");

CircleDialog MyCircleDialog(this);

MyCircleDialog.ShowModal();


str = (MyCircleDialog.TextCtrl1)->GetValue();

str.ToDouble(&temp);

m_SX = int(temp);

str = (MyCircleDialog.TextCtrl2)->GetValue();

str.ToDouble(&temp);

m_SY = int(temp);

str = (MyCircleDialog.TextCtrl3)->GetValue();

str.ToDouble(&temp);

m_EX = int(temp);

if(MyCircleDialog.IfOk == TRUE)

{

Refresh();

Update();

}

}


void drawingFrame::OnRangeSelected(wxCommandEvent& event)

{

m_UserShape = _T("椭圆");

RangeDialog MyRangeDialog(this);

MyRangeDialog.ShowModal();


str = (MyRangeDialog.TextCtrl1)->GetValue();

str.ToDouble(&temp);

m_SX = int(temp);

str = (MyRangeDialog.TextCtrl2)->GetValue();

str.ToDouble(&temp);

m_SY = int(temp);

str = (MyRangeDialog.TextCtrl3)->GetValue();

str.ToDouble(&temp);

m_EX = int(temp);

str = (MyRangeDialog.TextCtrl4)->GetValue();

str.ToDouble(&temp);

m_EY = int(temp);


if(MyRangeDialog.IfOk == TRUE)

{

Refresh();

Update();

}

}


void drawingFrame::OnSempleSelected(wxCommandEvent& event)

{

m_UserShape = _T("图形实例");

Refresh();

Update();

}

 

Ubuntu下安装CodeBlocks的正确姿势

如何在Ubuntu系统下正确安装CodeBlocks软件。网上的那些教程99%都是误人子弟!!!...
  • xinyunyishui
  • xinyunyishui
  • 2016年03月23日 22:32
  • 19781

ubuntu安装和配置codeblock

在 Ubuntu 操作中安装Code::Blocks 步骤如下: 安装步骤: 1.先把编译环境,C库、C++库和Boost库装好,如下: sudoapt-get install build-es...
  • u012978884
  • u012978884
  • 2014年01月04日 15:27
  • 2271

ubuntu 下 codeblocks 的使用 各种技巧

ubuntu下code blocks安装全过程&&codeblocks快捷键&&解决调试终端不能粘贴问题   (一)安装步骤:   1.先把编译环境,C库、C++库和Boost库装好,如下: ...
  • i_fuqiang
  • i_fuqiang
  • 2013年07月21日 19:10
  • 11351

WTL起步-玩转图形界面

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

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

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

ubuntu下codeblocks安装文件_上

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

学生信息管理系统,Ubuntu下Codeblocks+wxWidgets编程

  • 2014年06月01日 22:45
  • 711KB
  • 下载

ubuntu 系统中codeblocks 设置问题——解决编译找不到编译器路径,运行时出现permission denied情况

笨猪今天抽风,又玩起来codeblocks  ,这是自打长期使用ubuntu系统以来第一次使用codeblocks写程序。理所当然的在ubuntu的软件中心里下载了codeblocks 10.05 ,...
  • stormlovetao
  • stormlovetao
  • 2012年02月23日 20:44
  • 5875

ubuntu下 CodeBlocks的使用各种技巧

CodeBlocks快捷键&&解决调试终端不能粘贴问题 常用快捷键:   ==日常编辑==   • 按住Ctrl滚滚轮,代码的字体会随你心意变大变小。 • 在编辑区按住右键可拖动代码,...
  • piaocoder
  • piaocoder
  • 2016年03月15日 10:14
  • 418

ubuntu 下 codeblocks 的使用 各种技巧转自

转自:http://blog.csdn.net/i_fuqiang/article/details/9399909 ubuntu下code blocks安装全过程&&codeblocks快捷...
  • scliu12345
  • scliu12345
  • 2015年01月08日 21:55
  • 506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ubuntu下codeblocks起步(七)-中
举报原因:
原因补充:

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