分享
 
 
 

JSLIU 的 wxWindows 入门

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

JSLIU 的 wxWindows 入门

Programming with wxWindows

by 刘锦宪

学习所需的背景知识

1.

已经会用 C++ 写些简单程序的人, 并对 OOP (Object-Oriented Programming) 有基本了解.

2.

知道如何设定编译器, 以及如何连结产生一个可执行档, 如果你写的程序在编译时一直出现 link error 或是

cannot find xxxx.h 这类的讯息, 而你自己无法解决这种问题, 代表你目前不适合学 wxWindows(甚至 MFC,

或其它的 framework).

1 - 什么是 wxWindows?

wxWindows 是一套 C++ 的 GUI framework, 相类似的产品是 Microsoft 的 MFC, 或是以前 Borland 的 OWL, 以及 Trolltech 的 QT 都是相同性质的产品.

不同的是, wxWindows 是 GNU 的 license, 在使用上完全免费, 在我用过了几种 framework 中, 我认为 wxWindows 是比较方便与架构清楚的一套产品, 我与朋友试过的平台计有: MS Windows 95/98, 2000. XFree86(X-Windows) with Linux, KDE/GNOME, 以及 MacOS-X.

wxWindows 已知已经 porting 的 OS 或环境计有:

MS Windows. (Windows 95,98,NT, Windows 2000, Windows XP, WinCE)

OS/2

MacOS

X-Windows X11

X-Windows Motif

X-Windows GTK+

MGL

Nano-X

MicroWindows

wxWindows 相当 clear, 就像以前 Borland 的 OWL 2.0 一样, 所有的 code 都是 C++ standard, MFC 也不错, 但感觉复杂多了, 一个原因是 MFC 已被扩充得太大, 但如果你会 MFC 或 OWL, 那么学 wxWindows 是相当简单轻松的.

与一些 RAD toos 或 frameworks 不同, wxWindows, MFC, OWL 在系统建构(implement)时适合 Bottom-Up, 而不是许多人习惯的 Top-Down.

另一套常被人提起的 QT, 我认为该产品最差的地方是要你用一个 QT 的 pre-processor (MOC), 将你的 code 转译之后再给 C++ compiler 使用.

这份教学文件以 MS Visual C++ 为例, 当然你也可以使用其它或是免费的 C++ compiler, 像是:

Compilers

OS or Platform

cygwin GNU C++

MS Windows

Borland C++ 5.X

MS Windows

GNU C++

Unix X-Windows/GTK+ /Motif

WATCOM C++

MS Windows, OS/2

wxWindows的官方网站是: www.wxWindows.org , 最新的 wxWindows 消息都可在上面找到.

2 . 如何安装 wxWindows?

由于 wxWindows 不是 C++ compiler 内建的 library, 在安装时需要手动处理一些事宜, 在 MS Windows 下安装后要注意 .dll 与 .lib 的 link 与 path 设定.

在 linux 下安装请多利用 .rpm 安装, 安装完成会自动把 .so 与 .lib 置入系统目录, 其它问题请见:

www.wxWindows.org

我们的教程将以 MS Visual C/C++ 6.0 为 C++ 编译器, 使用的 wxWindows 版本是 2.2.9.

3. 第一个 wxWindows 程序

用 wxWindows 开启窗口向世界说 hello 吧!

先看看程序执行结果, 这就是我们要做的第一个程序:

接着看看程序内容, 共两个档案: helloworld.h 与 helloworld.cpp

第一个是 helloworld.h

// ================================================================================

// filename helloworld.h

// ================================================================================

#ifndef _HELLOWORLD_H

#define _HELLOWORLD_H

#include "wx\wx.h"

// ====================

// main application class.

// ====================

class HelloWorldApplication : public wxApp

{

public:

// Init Event.

virtual bool OnInit();

};

#endif

第二个是 helloworld.cpp

// ================================================================================

// filename helloworld.cpp

// ================================================================================

#include "helloworld.h"

// ====================

// 以下这行类似是设定进入(entry class), 告诉 compiler and wxWindows,

// 这个 class 是 main class.

// ====================

IMPLEMENT_APP(HelloWorldApplication)

// ====================

// initialization.

// ====================

bool HelloWorldApplication::OnInit()

{

wxFrame *frame;

frame = new wxFrame( NULL,-1, "Hello World 1!", wxPoint(50, 50), wxSize(450, 300));

frame->Show(TRUE);

return TRUE;

}

流程解析:

我们在程序中写了这一行:

IMPLEMENT_APP(HelloWorldApplication)

主程序的所在 class 将是 HelloWorldApplication , 进入后会自动呼叫 OnInit() ,

所以我们在 OnInit(), 填入了一些程序代码, 这些程序代码的目的很简单: 开个 frame 而已.

若不开 Frame, 则程序还是可以执行, 只是我们无法看到窗口, 但程序实际是在背景跑,

如果是在 MS Windows 下, 可以用[工作管理员]看到[应用程序]或[处理程序]中, 程序是在执行

却没有窗口.

底下这行程序:

frame = new wxFrame( NULL,-1, "Hello World 1!", wxPoint(50, 50), wxSize(450, 300));

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有