王朝网络
分享
 
 
 

如何开发跨平台GUI程序 (原创)

王朝other·作者佚名  2006-01-31
宽屏版  字体: |||超大  

如何开发跨平台GUI程序

作者:沈仁

本文主要介绍如何使用gtk和dev-c++ 来开发跨平台GUI程序。针对大多读者没有丰富的C/C++ 经验,作者使用教程式的指导,望对读者入门C/C++的GUI开发能有所帮助。

众所周知MFC已经成为Win32的核心开发库,而VC++作为开发平台已经从16位时代至今任独领风骚。Delphi,VB等语言虽然对于开发应用程序非常方便但是应用面相对有限。而.NET, Java平台比较侧重新功能,这是以牺牲程序的性能和减少低级语言功能作为代价的。C++语言仍然在各领域中发挥重要作用。使用微软的VC++对Win32来说是一个理想的IDE。目前Linux发展飞快,在桌面领域各种开发工具层出不穷。比较常见的C/C++库就是gtk。作为刚刚步入C++编程的人员来说作为学习平台gtk是一个很好的选择。

大多Linux发行版中已经包含了gtk,甚至glade。用户所要做的仅仅是用vi来编辑一个c文件:

#include <gtk/gtk.h>

int main( int argc,

char *argv[] )

{

GtkWidget *window;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_widget_show (window);

gtk_main ();

return 0;

}

使用gcc编译就可以了:

gcc base.c -o base ‘pkg-config --cflags --libs gtk+-2.0’

当然Windows用户不能直接使用VC++来编译。感谢SourceForge的Glade社区他们制作了LGPL许可的Glade (一个RAD工具),并包括了gtk2.0 for win32。在Windows上运行我们还需要更多Linux上的环境。同样是SourceForge的Dev-C++就能满足我们的需要。它包括了MinGW和一个IDE。

下载完以后我们应该看到硬盘上多了2个文件:

gtk-win32-devel-x.x.x-rc1.exe

devcpp-x.x.x.x_setup.exe

这些都是LGPL的软件,意味着你可以利用这些免费软件来商业开发。现在先安装devcpp,接着再是gtk,这样gtk的安装程序就能自动识别出devcpp,并且能够自动配置devcpp。

开发环境建立好了,现在可以进行最后配置。同样是上文的c文件,我们用Dev-C++建立一个空项目,建立c文件,粘贴代码,编译。如果没有通过说明编译器参数没有选对,请加上下面的参数,可以通过Projects:Options:Parameters打开:

Compiler:

-mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"

C++ Compiler:

-mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"

Linker:

-L"$(GTK_BASEPATH)/lib" -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv

然后按F9编译+运行,应该出现一个200x200的对话框,是不是和Linux下的结果一致呢?好了,现在你已经学会了跨平台GUI的开发基础!

作者注:如果大家希望的话我可以开辟一个系列。像Glade,STL都可以作为一个章节。不正确的地方请大家指教。转载请说明作者和出处。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝网络 版权所有