在C中编写GUI应用程序时需要帮助

时间:2009-11-18 05:55:45

标签: c user-interface

我想编写一个基于GUI的独立应用程序,用于管理来自一家大公司的最受欢迎的企业中间件产品之一。但是这家大公司已经拥有了一个免费的管理工具。 但是,自从它在java / Eclipse平台上编写以来,我猜它是非常慢的。

我想为Windows编写一个非常快速响应的GUI工具。

我没有太多的Windows编程经验,所以我可以在Windows上使用什么库(最好是开源)来完成工作。

注意:我需要用C语言编写,而不是C ++,但如果我没有任何选择,我想我可以用C ++做。 所以我基本上需要用C语言编写一个带有一些优秀GUI库的GUI应用程序。

请帮帮我。

感谢。

编辑:我不知道OOP,不喜欢使用它。

编辑:所以我的选择归结为Win32API和Qt。 我的要求是一个简单的GUI,没什么特别的。我将使用简单的窗口,按钮和菜单。但我可能需要做一些处理,这意味着GUI不应占用太多资源。 基于此,我正在考虑使用Win32 API,即使我不得不承担痛苦,希望能够满足用户。

10 个答案:

答案 0 :(得分:6)

  自写完以来,它非常慢   在java / Eclipse平台上。

您确定这是应用程序缓慢的原因吗?我不是 Java的粉丝,但在你得出任何结论之前,你确定了吗? 用c编写软件会让它显着加快速度吗?可能是那个 由于不受GUI程序员控制的原因,应用程序很慢, 例如数据库缓慢或网络延迟不良。

另外,我不是故意在这里粗鲁,而是

  

我想写一个非常快速的响应   用于Windows的GUI工具。

  

我没有太多经验   为Windows编程

互不矛盾?

答案 1 :(得分:5)

如果您想编写C GUI应用程序,请坚持Win32GTK+

Win32非常快,并且可以让您访问Windows可用的所有内容。看看this tutorial

GTK +非常易于使用,跨平台,并提供大量额外功能。首先下载all-in-one bundle,然后转到教程和the documentation

就个人而言,如果您需要快速响应的GUI,我建议您直接转到Python,并且只需要包含一些较低级别的内容。

答案 2 :(得分:2)

为什么要限制自己使用C? Windows Forms和WPF以及SIlverLight都是可行的UI框架,它们具有响应性并且拥有大量的书籍。有一个原因,你无法找到有关用C语言编写GUI应用程序的更多信息 - 人们不这样做。

答案 3 :(得分:2)

对于普通C,跨平台,原生外观,简单,可编写脚本的UI,我建议看看IUP:http://www.tecgraf.puc-rio.br/iup/

答案 4 :(得分:1)

如果你真的必须使用C,那么你可以使用GTK+。否则,我建议使用像QTwxWidgets这样的C ++库。但是,据说我仍然认为构建.NET(Windows窗体或WPF)解决方案更为可取。它们应该提供比Java / Swing更好的UI体验。

答案 5 :(得分:1)

大多数GUI工具包都是用C ++编写的,因此限制自己使用C会限制你的选择。跨平台并用C语言编写的一个选项是GTK;它最初用于X,但也是runs on Windows

编辑:当然,您可以直接针对Windows API(以前称为Win32)本身进行编程。对于简单的GUI,它不是太糟糕。

答案 6 :(得分:1)

如果您真的想在C中执行此操作,则可以使用Win32 API。但它正在与它合作。面向对象的变体也不是更好,但它消除了一些痛苦(MFC)。

答案 7 :(得分:1)

我强烈建议您将C ++与Qt库结合使用,Qt库既可以是跨平台的,也可以是开源的(LGPL)。 C ++ Qt GUI应用程序与本机Win32应用程序一样快,尽管它们需要更多内存。而且你甚至无法开始比较生产力的提高 - Qt是一个很棒的库,非常适合用于GUI编程,还有许多其他有用的工具。

答案 8 :(得分:0)

GUI组件很好地映射到面向对象的范例。使用C进行GUI应用程序是一个坏主意,我一直在那里,用C ++以一个适当的OO方式做这件事更加容易。当然你可以用C做OO,但至少可以说是丑陋的。

答案 9 :(得分:0)

在我看来,您需要的GUI框架才能真正完成您构建的应用程序的设计。

对于C / C ++中的普通GUI,Win32为具有良好响应时间的体面应用程序提供了足够的控件。

您应该关注的是如何根据模块执行的时间使其成为多线程。

考虑这个小例子:您的GUI中有一个DataBase连接监视,每秒都会进行探测。另一个模块可能正在向其他应用程序发送一些大文件。现在,如果应用程序是单线程的,那么您的GUI必然会出现响应问题。如果由于某些网络/数据库问题导致数据库连接速度非常慢,则无论选择何种GUI框架或硬件,您的应用程序都将挂起,如果它是单线程应用程序。

但是如果你编写了一个好的设计并为GUI处理和其他线程分配了一个单独的线程来处理后台任务,那么你将获得非常好的GUI响应。这样,您可以在后台执行其他任务,并在获取通知时更新GUI。请记住,它不会神奇地发生,您需要同步线程并更新GUI。

此外,避免为每个任务创建线程。您需要检查可能需要更多时间的事情,例如发送大文件或更快的任务,如检查/读取是否存在配置文件。

通过使用第三方GUI框架,您可以增加应用程序中的依赖关系,并且需要在主应用程序中运送其他dll等。 win32的东西很漂亮。