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

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

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

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

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

请帮帮我。

谢谢。

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

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

如果您想编写C GUI应用程序,请坚持使用Win32或GTK + 。

Win32速度非常快,可以让您访问Windows可用的所有内容。 看一下本教程 。

GTK +非常易于使用,跨平台,并提供大量额外function。 首先下载一体化软件包 ,然后转到教程和文档 。

我个人建议你直接使用Python,如果你需要快速,响应迅速的GUI,只需要包含一些较低级别的东西。

它非常慢,因为它写在java / Eclipse平台上。

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

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

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

我没有太多的Windows编程经验

互不矛盾?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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