- 在CodeBolcks+wxWidgets下的C++编程教程——用向导创建一个wxWidgets项目(xTetris) - lexyao - 博客园
- 在CodeBolcks+wxWidgets+wxSmith下的C++编程教程——用向导创建一个wxWidgets项目(sTetris) - lexyao - 博客园
- 在CodeBolcks+Windows API下的C++编程教程——用向导创建一个Windows GUI项目(aTetris) - lexyao - 博客园
- 在CodeBolcks+Windows API下的C++面向对象的编程教程——用面向对象的方法改写用向导创建一个Windows GUI项目(oTetris) - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——用向导创建一个使用使用LCL和FCL组件的项目(pTetris) - lexyao - 博客园
使用向导新建一个wxWidgets程序(sTetris)
- 向导为我生成的项目文件sTetris与xTetris有什么不同
- 通过修改sTetris的代码实现与xTetris一致的视觉效果
- 使用wxSmith修改sTetris实现与xTetris一致的视觉效果
- 结束语
1.使用向导新建一个wxWidgets程序(sTetris)
在开始下面的内容之前,我假定你已经安装了CodeBlocks程序开发环境,配置了wxWidgets,测试使用CodeBlocks创建第一个程序成功编译运行,并且了解了C++语言的基础知识和使用wxWiddgets开发C++程序的知识。
如果你还有哪一方面没有做到,请阅读下面的文章:
- 体验Code::Blocks下的C++编程 - lexyao - 博客园:搭设Code::Blocks开发平台(安装)
- 在Windows下为CodeBlocks20.3安装、配置wxWidget3.2.6 - lexyao - 博客园:安装、编译、配置wxWidget,测试在CodeBlocks中使用wxWidget编写的第一个程序
- wxWidgets 跨平台 GUI 编程:系统地讲述使用wxWiddgets开发C++程序的知识
- C 语言教程 | 菜鸟教程:系统地讲述C语言编程的基础知识
- C++ 教程 | 菜鸟教程:系统地讲述C++语言编程的基础知识
在开始下面的内容之前,你还需要阅读我写的以下文章。在以下文章中有创建应用程序xTetris的全部内容,而本篇文章中创建应用程序sTetris的过程、解读、修改等都要与xTetris进行对比,认识二者的异同点。
在CodeBolcks+wxWidgets下的C++编程教程——用向导创建一个wxWidgets项目(xTetris) - lexyao - 博客园
使用向导新建一个wxWidgets程序的操作步骤如下:
第一步:打开新建项目向导
创建任何类型的项目在这一步的操作是相同的,后续就有差别了。有两种方法:
①主菜单:File->New->Projects
②点击Start Here页面中的Create New Project
第二步:在窗口中选择项目类型wxWidgets project
第三步、按向导的提示完成创建项目的过程
我重点介绍几个向导界面,没有介绍的向导页面你直接点击Next按钮就行了。
阅读下面的内容时重点关注与创建xTetris时不一样的地方。
向导页面①:
选择wxWidgets 3.2.x。选择哪一个版本要看你安装的是哪一个版本的wxWidgets 库文件,选择了你没有的版本,在编译你的程序时会因为找不到库文件而导致编译失败。
向导页面②:输入项目名称。将来你编译生成的exe应用程序将会使用这个名称。保存这个项目的文件夹也会默认使用这个名称,不过你可以在这个页面中修改保存项目文件的文件夹。
- 在项目名称栏中输入sTetris。将来编译生成的项目文件将会是sTetris.exe
- 将文件路径中自动添加的sTetris改为Tetris。修改之后保存创建的项目文件的文件夹将会是Tetris,而不是默认的sTetris
向导页面③:
在Preferred GUl Builder栏目中选择编写程序时构建GUI界面使用的方法。在这个项目中选择wxSmith,将来在项目中使用wxSmith构建GUI界面。
在Application Type栏目中选择应用程序的类型。在这个项目中选择Frame Based,也就是说要基于wxFrame创建你的应用程序的主界面。
向导页面④:
在wxWidgets Library Settings栏目中选择wxWidgets库文件的设置。
这是一组多选项,你可以选择其中的任意一个或多个,但你选择的必须是可用的。这一组选项中的每一个选项都对应着你编译wxWidgets库文件时使用的命令行参数。
由于我在编译wxWidgets库文件时的命令行参数使用了SHARED=0 MONOLITHIC=1 UNICODE=1,所以我必须选中wxWidgets is built as a monolithic library和Enable unicode,而不能选中Use wxWidgets DLL。
按向导完成项目创建后,在CodeBlocks左边的栏目中将会看到新创建项目所包含的文件。下图中显示了向导创建的项目中包含的文件的清单。
你可以在文件资源管理器中打开前面在“向导页面②”看到的保存项目文件的文件夹你会看到里面有向导创建的文件。
为了与今后将要创建的项目文件名称有区别,将向导生成的资源文件的文件名由resource.rc改为sTetris.rc。
修改文件名的操作方法是:
在CodeBlocks左边的栏目中要修改的文件名上点击鼠标右键,从弹出的菜单中选择“Rename file…”,输入新的文件名,点击[OK]按钮确认修改。
完成修改后你会发现CodeBlocks左边的栏目中的文件变成了新的文件名,文件资源管理器中的文件名也同步改变了。
在文件资源管理器中你看到了sTetris和xTetris两个项目的文件都放在了同一个文件夹中。在这个文件夹中还增加了一个名为wxsmith的文件夹,在这个文件夹中保存着sTetrisframe.wxs文件,这正是sTetris比xTetris多出的那个文件。
第四步、编译运行创建的项目
Code::Blocks工具栏中的编译运行按钮,就会执行编译过程。Code::Blocks下部的窗口中有两个选项卡,分别是编译日志和编译信息。如果编译出错,会在这里出现红色的错误信息。如果是代码错误,编译结束后,点击错误信息,代码窗口会跳转到出错的代码行。
只要不出现错误,编译链接完成后就会运行程序,出现你的应用程序运行后的主界面窗口。
以下是基于wxFrame创建的应用程序的主界面,这个例子中在向导的选择GUI构建方式时,选择了wxSmith。
2.向导为我生成的项目文件sTetris与xTetris有什么不同
同样是使用向导生成的项目,只是选择了不同的界面构建方法,生成的文件有什么不同呢?下面我们逐个看一看。在阅读下面的内容时,你可能需要打开介绍创建xTetris的那个网页,需要对照阅读,查看有什么异同点。
2.1 资源文件sTetris.rc
用鼠标双击Code Blocks左边列表中的文件名sTetris.rc,Code Blocks右边的编辑区内便显示出这个文件的内容。通过对比你会发现,sTetris.rc与xTetris.rc的内容完全相同。
aaaa ICON "wx/msw/std.ico"#include "wx/msw/wx.rc"
2.2 两个头文件sTetrisApp.h和sTetrisMain.h
yiyan.baidu.com/share/fLZbEgR7iB
yiyan.baidu.com/share/AAjtex5Cu0
yiyan.baidu.com/share/SA5pXVNwhD
yiyan.baidu.com/share/T6ZuzniIf3
yiyan.baidu.com/share/4mzW59B6wy
yiyan.baidu.com/share/GSUGjDyPL8
yiyan.baidu.com/share/t16nXcbYNh
yiyan.baidu.com/share/SaGDxsBNbe
yiyan.baidu.com/share/92XtSzYZKZ
yiyan.baidu.com/share/0Aoa7CxZer
yiyan.baidu.com/share/vgLtZLxoLj
yiyan.baidu.com/share/LTMYr3xZig
yiyan.baidu.com/share/bNpG9GpR8N
yiyan.baidu.com/share/EqIu8aOc2m
yiyan.baidu.com/share/xo6857U70c
yiyan.baidu.com/share/K6QdPd2Az3
yiyan.baidu.com/share/0YCB188OD4
yiyan.baidu.com/share/4HFwefBz3C
yiyan.baidu.com/share/OkT29ZdgcB
yiyan.baidu.com/share/VV35ZXydhV
yiyan.baidu.com/share/ao2CbHSka9
yiyan.baidu.com/share/SxhNL7PTpU
yiyan.baidu.com/share/rrYQGrY9ev
yiyan.baidu.com/share/OzK3NeE1LE
yiyan.baidu.com/share/zMX6cHQsGP
yiyan.baidu.com/share/W7IPqXk8cW
yiyan.baidu.com/share/qAW1EIcE3o
yiyan.baidu.com/share/h8U7GyYZEy
yiyan.baidu.com/share/QGtUA0XKbh
yiyan.baidu.com/share/zvYhvXDL9Y
yiyan.baidu.com/share/HTiDDIcQy1
yiyan.baidu.com/share/GlSXihmXhQ
yiyan.baidu.com/share/EW80jfg1eG
yiyan.baidu.com/share/GPUkEgy1BH
yiyan.baidu.com/share/YkGkcBmzel
yiyan.baidu.com/share/94yHhX8KGI
yiyan.baidu.com/share/bUgovx7ihb
yiyan.baidu.com/share/YFxCGOfbC5
yiyan.baidu.com/share/EYdV90OgCF
yiyan.baidu.com/share/G78dIKPhbC
yiyan.baidu.com/share/13MsLnDYiU
yiyan.baidu.com/share/08oCXMlfZf
yiyan.baidu.com/share/OgLM6lQ2ac
yiyan.baidu.com/share/fmkiDCG86G
yiyan.baidu.com/share/zAGpS5lGOS
yiyan.baidu.com/share/qhpOSWevcw
yiyan.baidu.com/share/Yd1Wq8ZnPp
yiyan.baidu.com/share/ugeZZlnAoM
yiyan.baidu.com/share/UsZ4sLi5w4
yiyan.baidu.com/share/GG4uGdvOeX
yiyan.baidu.com/share/4c3NZwQEmB
yiyan.baidu.com/share/Et92fBI2jo
yiyan.baidu.com/share/LLuyCNEsY1
yiyan.baidu.com/share/nZSmwhDbxg
yiyan.baidu.com/share/bptx3qAGdp
yiyan.baidu.com/share/WO1VBkGKu2
yiyan.baidu.com/share/4vz2Gz78hD
yiyan.baidu.com/share/asBh2XnNAm
yiyan.baidu.com/share/twol2OPpAB
yiyan.baidu.com/share/gjdhdM7W9F
yiyan.baidu.com/share/l3W0Vjn7dG
yiyan.baidu.com/share/YuVDDTRLUe
yiyan.baidu.com/share/EmhN9AG2RN
yiyan.baidu.com/share/FIoUoiCZY3
yiyan.baidu.com/share/gBNWyz2KAl
yiyan.baidu.com/share/0GF4NqL7hC
yiyan.baidu.com/share/0czPLgPpVw
yiyan.baidu.com/share/0KIIEBdK4I
yiyan.baidu.com/share/bBzyllHkcq
yiyan.baidu.com/share/UhelyKKQhK
yiyan.baidu.com/share/olvIG4sqLr
yiyan.baidu.com/share/qfg70bbGiL
yiyan.baidu.com/share/27r7aqu5rG
yiyan.baidu.com/share/S0YRVSWFhy
yiyan.baidu.com/share/OZxvETaxG2
yiyan.baidu.com/share/W2IdzEEbfq
yiyan.baidu.com/share/9o8Lhdn5Y2
yiyan.baidu.com/share/6WpCfmbsMc
yiyan.baidu.com/share/8vF50m3RPX
yiyan.baidu.com/share/LvjBzg9lHk
yiyan.baidu.com/share/jASNln1Ff1
yiyan.baidu.com/share/md9suUkpp8
yiyan.baidu.com/share/uCS1buKOdG
yiyan.baidu.com/share/P4XptCQDQN
yiyan.baidu.com/share/GYovOCwVze
yiyan.baidu.com/share/jLRUIYI3n3
yiyan.baidu.com/share/beqwpPXUbx
yiyan.baidu.com/share/gy0oD2wP2l
yiyan.baidu.com/share/GF8bovzgbt
yiyan.baidu.com/share/OXlBS5yIw8
yiyan.baidu.com/share/mdK8WRn90i
yiyan.baidu.com/share/R7EHw2M1K9
yiyan.baidu.com/share/MCRuDxv3ll
yiyan.baidu.com/share/1tWunZEY3R
yiyan.baidu.com/share/GmR1GzhXLg
yiyan.baidu.com/share/LqoiFWbqm0
yiyan.baidu.com/share/NxHy2eLcqY
yiyan.baidu.com/share/92B04MrF6Z
yiyan.baidu.com/share/7Ri3KHtn77
yiyan.baidu.com/share/jfvOXiO2LL
yiyan.baidu.com/share/53p3PxXv1C
yiyan.baidu.com/share/thBBOtnFbM
yiyan.baidu.com/share/24AgmLPYsT
yiyan.baidu.com/share/2mnbR3NISn
yiyan.baidu.com/share/cRLXbHCLQX
yiyan.baidu.com/share/LbS8HqANrM
yiyan.baidu.com/share/mtIBLaKlTm
yiyan.baidu.com/share/kYvhV3a8xR
yiyan.baidu.com/share/Kx4UU5EpeB
yiyan.baidu.com/share/0y91CyxAMd
yiyan.baidu.com/share/89WuacIziC
yiyan.baidu.com/share/Re29B757bp
yiyan.baidu.com/share/41SMWarv2W
yiyan.baidu.com/share/VLXdptaUot
yiyan.baidu.com/share/VqqpCXOFE9
yiyan.baidu.com/share/KkBvkFK1OO
yiyan.baidu.com/share/3AbAqv4Rm2
yiyan.baidu.com/share/iQXaWbZqWN
yiyan.baidu.com/share/B9uVhrThxb
yiyan.baidu.com/share/IP1N2PHwvB
yiyan.baidu.com/share/M12UWngVWz
yiyan.baidu.com/share/Iza21X7Lfr
yiyan.baidu.com/share/0GqVd3MpkR
yiyan.baidu.com/share/oE32F5FhdS
yiyan.baidu.com/share/6yWInc5yH5
yiyan.baidu.com/share/txaKweOHOV
yiyan.baidu.com/share/tpSUpfxsu2
yiyan.baidu.com/share/qBMjdhlP6z
yiyan.baidu.com/share/Fp99kO2qzb
yiyan.baidu.com/share/3xkIW59NnI
yiyan.baidu.com/share/Td2juCONbO
yiyan.baidu.com/share/ChhPxHLGjc
yiyan.baidu.com/share/8FZS8c3Z2d
yiyan.baidu.com/share/02G1AhYTdw
yiyan.baidu.com/share/OcTTmVIcsl
yiyan.baidu.com/share/Zsvr2rmKMa
yiyan.baidu.com/share/XEo2b4iHau
yiyan.baidu.com/share/sGHCglnO2E
yiyan.baidu.com/share/G287VqWo15
yiyan.baidu.com/share/lh8j5EhQgG
yiyan.baidu.com/share/0fCZOScZKe
yiyan.baidu.com/share/7kBGqlFUiE
yiyan.baidu.com/share/xN6Z9gfbQa
yiyan.baidu.com/share/BN4OKphd7w
yiyan.baidu.com/share/9RTFuPIzNc
yiyan.baidu.com/share/PNUpt26Gkl
yiyan.baidu.com/share/4gqlFaLvW1
yiyan.baidu.com/share/HiIVbpWmsW
yiyan.baidu.com/share/rptrBuyeS4
yiyan.baidu.com/share/bGP4d6VlDY
yiyan.baidu.com/share/xjYzv2REeg
yiyan.baidu.com/share/63Y73YgyoR
yiyan.baidu.com/share/DWOIswaQUd
yiyan.baidu.com/share/wGl7NhbsS1
yiyan.baidu.com/share/HQyCpdpZMc
yiyan.baidu.com/share/9I339H9H3Q
yiyan.baidu.com/share/2F69E5vX1s
yiyan.baidu.com/share/PqvNR93zux
yiyan.baidu.com/share/4GcGlOkbGT
yiyan.baidu.com/share/CXYYwHNMZ2
yiyan.baidu.com/share/GdV2pIbeEd
yiyan.baidu.com/share/9kWBOTuTKj
yiyan.baidu.com/share/sau1SWD9pT
yiyan.baidu.com/share/1te7AXMlVe
yiyan.baidu.com/share/TG7Uiz583m
yiyan.baidu.com/share/oUMmFlbLDG
yiyan.baidu.com/share/C0KpQ4YegC
yiyan.baidu.com/share/MajSUSyjfa
yiyan.baidu.com/share/faoGRUOmKh
yiyan.baidu.com/share/RhG68bycRa
yiyan.baidu.com/share/51ZlmcurGx
yiyan.baidu.com/share/5b55sodOTa
yiyan.baidu.com/share/cIxjAe1pyO
yiyan.baidu.com/share/WyKCrqsdWe
yiyan.baidu.com/share/ThiP5fc1nO
yiyan.baidu.com/share/wYU3SGjYuL
yiyan.baidu.com/share/DXq3O8FrbL
yiyan.baidu.com/share/v3CM5gLyhI
yiyan.baidu.com/share/EXGATKiWBO
yiyan.baidu.com/share/6UGbetNpIv
yiyan.baidu.com/share/s7fjGTrtfm
yiyan.baidu.com/share/SA9Px9eINt
yiyan.baidu.com/share/CfcKNkOAQL
yiyan.baidu.com/share/hqMGmMBA9S
yiyan.baidu.com/share/TPapFhHYGl
yiyan.baidu.com/share/UPd91coEwM
yiyan.baidu.com/share/IIfhEKGC4l
yiyan.baidu.com/share/hhofyo9pnK
yiyan.baidu.com/share/qulEX9bEGy
yiyan.baidu.com/share/f5yOaMqMt3
yiyan.baidu.com/share/zc1htRbIbh
yiyan.baidu.com/share/YcKwgDmgKt
yiyan.baidu.com/share/VzexNVsFXC
yiyan.baidu.com/share/wOIIu6YwNz
yiyan.baidu.com/share/bAe8lCHucz
yiyan.baidu.com/share/HwWj4NSrVx
yiyan.baidu.com/share/aymWzaWNYE
yiyan.baidu.com/share/mt5OyI80ND
yiyan.baidu.com/share/zxfzbU5Bxw
yiyan.baidu.com/share/5pUBRIazVb
yiyan.baidu.com/share/vSBf4p2Rfl
yiyan.baidu.com/share/VU27cezi5j
yiyan.baidu.com/share/Mu7G76l2zQ
yiyan.baidu.com/share/tKhHnqrkEd
yiyan.baidu.com/share/D1iz7UgbL7
yiyan.baidu.com/share/koCvPt5i5w
yiyan.baidu.com/share/pO48GARTvA
yiyan.baidu.com/share/hRNmBlXwGr
yiyan.baidu.com/share/ji9YkDcBK9
yiyan.baidu.com/share/HUHb1vQMDW
yiyan.baidu.com/share/qoDVNCOcFI
yiyan.baidu.com/share/OpPKbIOKFS
yiyan.baidu.com/share/q0DUYyDsgV
yiyan.baidu.com/share/vbS2sxEbvb
yiyan.baidu.com/share/pwW9ileZm9
yiyan.baidu.com/share/gde7nkIYTm
yiyan.baidu.com/share/4mnjltCviv
yiyan.baidu.com/share/BDBrbnP79g
yiyan.baidu.com/share/ZMmK7vj32k
yiyan.baidu.com/share/oxLinmzGfP
yiyan.baidu.com/share/SSezDlCBP0
yiyan.baidu.com/share/pS19YFPNoW
yiyan.baidu.com/share/f3C3Pc2OmT
yiyan.baidu.com/share/R7mIGfbA1U
yiyan.baidu.com/share/GIZ9YOBA8A
yiyan.baidu.com/share/GN0zsdm7eQ
yiyan.baidu.com/share/1XhTbGVhYo
yiyan.baidu.com/share/3naArh5Qh9
yiyan.baidu.com/share/hUG4EATBtI
yiyan.baidu.com/share/MFwi7QjDw3
yiyan.baidu.com/share/iES2vcXYIb
yiyan.baidu.com/share/mVrab3wSOr
yiyan.baidu.com/share/OGhuWaA4Oz
yiyan.baidu.com/share/T6u4QY7Tqw
yiyan.baidu.com/share/ptDm8ViW39
yiyan.baidu.com/share/vDjGlu6TMD
yiyan.baidu.com/share/R6bvDGpEGp
yiyan.baidu.com/share/Ovp0xXByyt
yiyan.baidu.com/share/cV5Z5Nkhk1
yiyan.baidu.com/share/RwDC5d4GuB
yiyan.baidu.com/share/biTz37hAwz
yiyan.baidu.com/share/gnaHgwpu3e
yiyan.baidu.com/share/OP18pzHDT5
yiyan.baidu.com/share/ZaDjAQfYnQ
yiyan.baidu.com/share/38KYODUCV0
yiyan.baidu.com/share/DjjkCj0GM3
yiyan.baidu.com/share/pALitidA7U
yiyan.baidu.com/share/d6lb6Nn8VQ
yiyan.baidu.com/share/dzmSjPN3sV
yiyan.baidu.com/share/UdU3eXPyar
yiyan.baidu.com/share/XNyTEeWHkC
yiyan.baidu.com/share/gA0NyCRnP7
yiyan.baidu.com/share/KIXPGXiSz2
yiyan.baidu.com/share/Ligw0ytoPS
yiyan.baidu.com/share/z9CggUIH4G
yiyan.baidu.com/share/PQL9Lv5bgT
yiyan.baidu.com/share/1D3qFRg7vw
yiyan.baidu.com/share/8FlP7MEqUP
yiyan.baidu.com/share/ISIzaa19GY
yiyan.baidu.com/share/cGL5hTugAz
yiyan.baidu.com/share/E3qpCMAvPG
yiyan.baidu.com/share/kRAVFPF6k1
yiyan.baidu.com/share/1ggkeFfD00
yiyan.baidu.com/share/7id0EHMWCz
yiyan.baidu.com/share/ujNoTHT8sl
yiyan.baidu.com/share/sqGRIb0F0I
yiyan.baidu.com/share/x3wBEPqmm5
yiyan.baidu.com/share/VG5SpZYIeU
yiyan.baidu.com/share/N8x3QkPVBi
yiyan.baidu.com/share/f6htLSjrQc
yiyan.baidu.com/share/PPYRjpVt6K
yiyan.baidu.com/share/YBBPn0vhnY
yiyan.baidu.com/share/G7BrvhVpih
yiyan.baidu.com/share/Ms2045OBuc
yiyan.baidu.com/share/cZmCKMc9vK
yiyan.baidu.com/share/xzuYIpCHrv
yiyan.baidu.com/share/GSc7n0dTMN
yiyan.baidu.com/share/X7SII3u2Qy
yiyan.baidu.com/share/nAGq66RR83
yiyan.baidu.com/share/Gn6aCdpZyb
yiyan.baidu.com/share/MBSCyiLO97
yiyan.baidu.com/share/rgLB9WGcDH
yiyan.baidu.com/share/x2D7FgvTVu
yiyan.baidu.com/share/yWvnBpVvC9
yiyan.baidu.com/share/QafWZCv5hS
yiyan.baidu.com/share/eGEizFXcYf
yiyan.baidu.com/share/MY9qimITe6
yiyan.baidu.com/share/AzyOB1gOsT
yiyan.baidu.com/share/XIZe7LHpEz
yiyan.baidu.com/share/799GWPEjGH
yiyan.baidu.com/share/EamRspXmmf
yiyan.baidu.com/share/3lPc3LxcGZ
yiyan.baidu.com/share/PGaO4UV6Sj
yiyan.baidu.com/share/kNCvmnwTGp
yiyan.baidu.com/share/mPem5WRLMW
yiyan.baidu.com/share/W4wS9DHtLq
yiyan.baidu.com/share/DcKlMncFbY
yiyan.baidu.com/share/IwA2TldzpH
yiyan.baidu.com/share/hMfrUFrBSc
yiyan.baidu.com/share/zHOgPW7fZx
yiyan.baidu.com/share/rtBjGtvxLj
yiyan.baidu.com/share/4cGlq8kTRh
yiyan.baidu.com/share/QjTpdYrdU3
yiyan.baidu.com/share/hj2b77vKVz
yiyan.baidu.com/share/kZqu7u6990
yiyan.baidu.com/share/EkgXm3qjqI
yiyan.baidu.com/share/BdRE6UgEmC
yiyan.baidu.com/share/D1iefAKzQm
yiyan.baidu.com/share/KEWLSxxTfG
yiyan.baidu.com/share/FSm17qT0LH
yiyan.baidu.com/share/bYZDlDAw3L
yiyan.baidu.com/share/gtPzyuw5tg
yiyan.baidu.com/share/FTHZFjanlL
yiyan.baidu.com/share/As8IF8HRge
yiyan.baidu.com/share/hD80Dur5Vl
yiyan.baidu.com/share/MKSMWcqNhd
yiyan.baidu.com/share/muGqAc7AZS
yiyan.baidu.com/share/YPUPGxA8TC
yiyan.baidu.com/share/E7MrzV6X7y
yiyan.baidu.com/share/EC3rEygvlz
yiyan.baidu.com/share/SCtBNA3q3I
yiyan.baidu.com/share/b33RGOyB7H
yiyan.baidu.com/share/kB9cfhU7jm
yiyan.baidu.com/share/piBQkRg4dk
yiyan.baidu.com/share/EvSVjWHcPC
yiyan.baidu.com/share/ZhYAH9VvZn
yiyan.baidu.com/share/UMgRtH2oHp
yiyan.baidu.com/share/NOAxjh8dCq
yiyan.baidu.com/share/Td6h5rBDUG
yiyan.baidu.com/share/s0XH0BkaZB
yiyan.baidu.com/share/tm7kTzwzvF
yiyan.baidu.com/share/lEQgG2UFgC
yiyan.baidu.com/share/wX6Opfcxqp
yiyan.baidu.com/share/RcD1pl4q0D
yiyan.baidu.com/share/GglNc3jmIY
yiyan.baidu.com/share/lDzLNgIyZ9
yiyan.baidu.com/share/qzVAKFFBEl
yiyan.baidu.com/share/ocMZtXOonh
yiyan.baidu.com/share/yOXM95jFAN
yiyan.baidu.com/share/j4D9jgXPFq
sTetrisApp.h文件的代码如下。通过对比你会发现,除了与项目名称中的s与x的差别,sTetris.h与xTetris.h的内容完全相同。
#ifndef STETRISAPP_H #define STETRISAPP_H#include <wx/app.h>class sTetrisApp : public wxApp {public:virtual bool OnInit(); };#endif // STETRISAPP_H
sTetrisMain.h文件的代码如下。通过对比你会发现,除了与项目名称中的s与x的差别,不一样的地方增加了许多。
- 都定义了构造函数和析构函数,构造函数的参数不同
- 事件处理函数数量不同,sTetrisMain.h中的事件处理函数被//(*Handlers(sTetrisFrame)……//*)括起来
- 定义作为组件ID的常数的数量和方式都不同,但效果一致,sTetrisMain.h中的常量被//(*Identifiers(sTetrisFrame)……//*)括起来
- sTetrisMain.h中增加了状态条组件的定义,还使用//(*Declarations(sTetrisFrame)……//*)括起来
- 定义事件表的宏DECLARE_EVENT_TABLE
#ifndef STETRISMAIN_H #define STETRISMAIN_H//(*Headers(sTetrisFrame) #include <wx/frame.h> #include <wx/menu.h> #include <wx/statusbr.h> //*)class sTetrisFrame: public wxFrame {public:sTetrisFrame(wxWindow* parent,wxWindowID id = -1);virtual ~sTetrisFrame();private://(*Handlers(sTetrisFrame)void OnQuit(wxCommandEvent& event);void OnAbout(wxCommandEvent& event);//*)//(*Identifiers(sTetrisFrame)static const long idMenuQuit;static const long idMenuAbout;static const long ID_STATUSBAR1;//*)//(*Declarations(sTetrisFrame)wxStatusBar* StatusBar1;//*)DECLARE_EVENT_TABLE() };#endif // STETRISMAIN_H
2.3 两个C++源代码文件sTetrisApp.cpp和sTetrisMain.cpp
sTetrisApp.cpp文件的代码如下。
通过对比你会发现,除了与项目名称中的s与x的差别,不一样的地方增加了许多。
- sTetrisApp.cpp没有设置主窗口标题和图标
- sTetrisApp::OnInit中的代码被//(*AppInitialize(sTetrisFrame)……//*)括起来
#include "sTetrisApp.h"//(*AppHeaders #include "sTetrisMain.h" #include <wx/image.h> //*)IMPLEMENT_APP(sTetrisApp);bool sTetrisApp::OnInit() {//(*AppInitializebool wxsOK = true;wxInitAllImageHandlers();if ( wxsOK ){sTetrisFrame* Frame = new sTetrisFrame(0);Frame->Show();SetTopWindow(Frame);}//*)return wxsOK;}
sTetrisMain.cpp文件的代码如下。
通过对比你会发现,除了与项目名称中的s与x的差别,不一样的地方增加了许多。
- 事件处理函数的连接方式不同
- 组件创建的方式有所不同
- 多出代码代码被//(*xxxxx(sTetrisFrame)……//*)括起来,其中的xxxxx代表不同的标识符
#include "sTetrisMain.h" #include <wx/msgdlg.h>//(*InternalHeaders(sTetrisFrame) #include <wx/intl.h> #include <wx/string.h> //*)//helper functions enum wxbuildinfoformat {short_f, long_f };wxString wxbuildinfo(wxbuildinfoformat format) {wxString wxbuild(wxVERSION_STRING);if (format == long_f ){ #if defined(__WXMSW__)wxbuild << _T("-Windows"); #elif defined(__UNIX__)wxbuild << _T("-Linux"); #endif#if wxUSE_UNICODEwxbuild << _T("-Unicode build"); #elsewxbuild << _T("-ANSI build"); #endif // wxUSE_UNICODE}return wxbuild;