我想用 C 语言开发一个有操作界面的程序,就像一些通用 exe 程序一样,网上有没有好的资料示例可学习?

2021-01-20 19:04:45 +08:00
 Tlin

就跟普通的 PC 程序一样,能够安装在电脑上,上面有一些操作按钮、输入框等等

6940 次点击
所在节点    C
69 条回复
azcvcza
2021-01-21 10:17:45 +08:00
gtk 写得人蛋疼
LokiSharp
2021-01-21 10:19:24 +08:00
GUI 直接 C# .net 吧
zengming00
2021-01-21 10:33:28 +08:00
SDL 是个不错的跨平台库,用 C 语言写也很简单,只是很多组件都没有
zjsxwc
2021-01-21 10:35:56 +08:00
c++ 的不少,
c 的就少了,资料多的只有 gtk 了,

当然也可以用 win32api 自己撸界面,就是特别麻烦



还有一些奇葩手段,比如嵌入 tcl/tk, python 自带的 tkinter 估计是这种操作
http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15612-s97/class/wallace/project/src/et/doc/ET.html#H0002
zjsxwc
2021-01-21 10:36:20 +08:00
nnnToTnnn
2021-01-21 13:40:49 +08:00
@zwy100e72 #30L

C 确实是做 UI 的最佳选择之一。UI 分为很多页面。 细分领域

1. 网页
2. Window 平台
3. Linux 平台
4. Mac 平台
5. 安卓平台
6. IOS 平台
7. 可穿戴设备(手环,手表,智能眼镜)
8. 智能家居设备(例如 冰箱,空调,还有洗衣机)

C 语言可能在其他领域里面没有写的快。 但是 C 是唯一一个覆盖所有领域的 UI 界面。

并且 C 是唯一一个在所有领域中能保证你程序运行高效的语言,无天花板( PS:天花板取决于你的技术能力)

-----------

如果只是说做 UI,你随便举个语言看能不能做到以下几点 。 居然说 C 不是做 UI 的最佳选择之一,我认为如果真的是为了做 UI,那么 C 才是最佳的选择之一。
Kasumi20
2021-01-21 13:45:30 +08:00
Dialog
nnnToTnnn
2021-01-21 13:46:42 +08:00
厉害点的项目就是 gnome 系列产品,你可以了解下 GTK 的项目,基本上每个都是大作
guochao
2021-01-21 13:48:40 +08:00
C 可以做 UI,但是 C 没有类型导致有些东西做起来没有那么方便,比如说继承啊什么的,就很难搞。

然后 UI 分两类吧,你要是想用其他人写好的绘制的控件,目前我看到的勉勉强强能跨平台的,就是 gtk 。像楼上说的用 api 撸,比如说 win32 api 或者 x server 的,可以是可以,没必要。其他的库,不跨平台的,我也没看到有啥更好的选择。

如果是打算搞自绘 UI,那可以用 SDL2 或者类似的 SDK 。比如说就用 SDL2,或者用 glfw+opengl 。这也是一条路。但是就是看起来不是那么 native 。

如果你打算写写 c++,或者写写 c 风格的 c++,那选择就多了,无论是 MFC 还是 Qt 还是 wx 还是什么其他的,做界面都好说。
guochao
2021-01-21 13:50:27 +08:00
另外也可以考虑写命令行下的 UI,比如说 ncurses,c 和 python 都有,也挺好使的。
James369
2021-01-21 13:52:32 +08:00
@nnnToTnnn 你写了这么多平台,估计也就嵌入式会用 C 来做 UI 的吧。
不建议用 C 来做 UI,比如事件驱动,多态都不好表现
nnnToTnnn
2021-01-21 14:10:33 +08:00
@James369 #51 并不是,看情况,嵌入式首选 C, 其他平台基本上都是混合开发,例如 GTK 的 webkit + html .

如果只是小工具不复杂,那么基本上就是 GTK , 安卓和 ios 平台也是差不多的做法。


HTML 网页在布局上面有很大优势。
ysc3839
2021-01-21 15:31:36 +08:00
@nnnToTnnn #46 C 语言没法覆盖 macOS 和 iOS,因为这两个系统提供的 API 都是基于 Objective-C 的,没法绕开 objc 相关的特性。
相反,Windows 的 WinRT API 还是基于 COM 的,COM 的底层 ABI 是函数指针,C 语言仍然可以调用。
bignullnull
2021-01-21 15:33:10 +08:00
SDL2,近期在研究用 C 写游戏
aneostart173
2021-01-21 16:03:00 +08:00
C 本来就不是写 GUI 用的。硬要写也没问题,那是非常痛苦。另外写 GUI 本身也是分很多层次,比如一个按钮都要自己绘制的话,相当于你先写了个 GUI 库。
edwinxe2v
2021-01-21 16:56:46 +08:00
做 GUI,用 FreePascal 快得多,也是跨平台的: https://www.lazarus-ide.org/
zfzyk
2021-01-21 16:57:39 +08:00
直接易语言
songer
2021-01-21 17:12:41 +08:00
iup 原生控件,windows 下就是 win api , Linux 下就是 GTK
lingo
2021-01-21 17:46:15 +08:00
python 的 tk 。。。

之前想尝试用 go,就很难受。
weiqk
2021-01-21 20:30:45 +08:00
忘本的程序员真多,你们写的代码影响到别人的国家安全了还不知道反思么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX