大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

时间:2022-03-19 08:53:05
大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

41 个解决方案

#1


Linux下C没有问题,可以看看VIM的源码,
Windows下必须是C++,像MFC自带的编辑控件,实现起来比较容易。

#2


cmd的编辑器比gui麻烦多了,上个纯c的简单例子
#include <stdlib.h>
#include <iup.h>

int main(int argc, char **argv)
{
  Ihandle *dlg, *multitext, *vbox;

  IupOpen(&argc, &argv);

  multitext = IupText(NULL);
  vbox = IupVbox(
    multitext,
    NULL);
  IupSetAttribute(multitext, "MULTILINE", "YES");
  IupSetAttribute(multitext, "EXPAND", "YES");

  dlg = IupDialog(vbox);
  IupSetAttribute(dlg, "TITLE", "Simple Notepad");
  IupSetAttribute(dlg, "SIZE", "QUARTERxQUARTER");

  IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
  IupSetAttribute(dlg, "USERSIZE", NULL);

  IupMainLoop();

  IupClose();
  return EXIT_SUCCESS;
}

用的也是纯c的gui库iup

#3


c做界面的话去看看gtk

#4


Windows 下的 Raw 控制台代码,需要调用 控制台API
DOS下的 Raw 控制台代码 可以调用 Bios 中断(0x10),DOS 中断(0x21)
总之,Raw 控制台,需要依赖 系统服务,API 
C,C++标准库,不能提供很好的支持。

#5


你需要先考虑清楚,是用系统的图形库,还是第三方图形库,或者自己写图形库。

#6


参考Notepad++源代码 ?

#7


引用 5 楼 super_admi 的回复:
你需要先考虑清楚,是用系统的图形库,还是第三方图形库,或者自己写图形库。



第三方图形库吧

#8


引用 2 楼 ynsenyu 的回复:
cmd的编辑器比gui麻烦多了,上个纯c的简单例子
#include <stdlib.h>
#include <iup.h>

int main(int argc, char **argv)
{
  Ihandle *dlg, *multitext, *vbox;

  IupOpen(&argc, &argv);

  multitext = IupText(NULL);
  vbox = IupVbox(
    multitext,
    NULL);
  IupSetAttribute(multitext, "MULTILINE", "YES");
  IupSetAttribute(multitext, "EXPAND", "YES");

  dlg = IupDialog(vbox);
  IupSetAttribute(dlg, "TITLE", "Simple Notepad");
  IupSetAttribute(dlg, "SIZE", "QUARTERxQUARTER");

  IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
  IupSetAttribute(dlg, "USERSIZE", NULL);

  IupMainLoop();

  IupClose();
  return EXIT_SUCCESS;
}

用的也是纯c的gui库iup



这是系统API吗?

#9


引用 4 楼 lm_whales 的回复:
Windows 下的 Raw 控制台代码,需要调用 控制台API
DOS下的 Raw 控制台代码 可以调用 Bios 中断(0x10),DOS 中断(0x21)
总之,Raw 控制台,需要依赖 系统服务,API 
C,C++标准库,不能提供很好的支持。



我可以用DirectX来做图形库吗?

#10


控制台做这个啊,应该可以吧,不过和控制台的初衷,相违背了啊
还是要先得到控制台窗口的DC
然后就和普通窗口一样了吧,没玩过

#11


引用 10 楼 lm_whales 的回复:
控制台做这个啊,应该可以吧,不过和控制台的初衷,相违背了啊
还是要先得到控制台窗口的DC
然后就和普通窗口一样了吧,没玩过



不好意思,我没表达清楚,我不是要在控制台下,只是做一个普通的GUI程序就行了,在Windows下的

#12


C可以用 API 
C++可以用 MFC

#13


其他 像QT

#14


引用 12 楼 lm_whales 的回复:
C可以用 API 
C++可以用 MFC



请问Windows下C用API实现会很复杂吗?

#15


有了MFC不是很想深入学习API的,
都去用MFC了。毕竟爱偷懒是人的天性

#16


用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写

#17


引用 16 楼 lm_whales 的回复:
用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

#18


《C语言课程设计案例精编》有个编辑器实例,不过DOS的已经不推荐了。
Windows界面,还是C++ Builder、QT或者C#吧。

#19


引用 17 楼 yyxgs 的回复:
Quote: 引用 16 楼 lm_whales 的回复:

用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。

#20


引用 18 楼 u010165006 的回复:
《C语言课程设计案例精编》有个编辑器实例,不过DOS的已经不推荐了。
Windows界面,还是C++ Builder、QT或者C#吧。


纯C可以用QT吗?

#21


引用 19 楼 u010165006 的回复:
Quote: 引用 17 楼 yyxgs 的回复:

Quote: 引用 16 楼 lm_whales 的回复:

用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?

#22


引用 21 楼 yyxgs 的回复:
Quote: 引用 19 楼 u010165006 的回复:

Quote: 引用 17 楼 yyxgs 的回复:


刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?


对的,C++是一个必攻的中途岛,然后可以分支。

#23


引用 22 楼 u010165006 的回复:
Quote: 引用 21 楼 yyxgs 的回复:

Quote: 引用 19 楼 u010165006 的回复:

Quote: 引用 17 楼 yyxgs 的回复:


刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?


对的,C++是一个必攻的中途岛,然后可以分支。



明白了。

#24


我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

#25


引用 24 楼 shinerise 的回复:
我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。

#26


引用 24 楼 shinerise 的回复:
我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。



那确实厉害!

#27


引用 25 楼 u010165006 的回复:
Quote: 引用 24 楼 shinerise 的回复:

我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。



转眼就到Windows时代了,我是Windows时代的时候出生了,不了解DOS,但是磁盘操作系统应该很强大吧?

#28


只会写控制台,不会做界面,

#29


引用 27 楼 yyxgs 的回复:
Quote: 引用 25 楼 u010165006 的回复:

Quote: 引用 24 楼 shinerise 的回复:

我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。



转眼就到Windows时代了,我是Windows时代的时候出生了,不了解DOS,但是磁盘操作系统应该很强大吧?

DOS现在看来很简陋了。

#30


楼主可以MFC或者Win32程序,基本上都是拖拽控件,需要你写的部分很少涉及到C++的知识。如果楼主完全用C实现例如楼主距离的Directx,写起来比较费时而已。

#31


会不会C++啊,会的话用Qt写界面很简单的。

#32


引用 30 楼 galiniur0u 的回复:
楼主可以MFC或者Win32程序,基本上都是拖拽控件,需要你写的部分很少涉及到C++的知识。如果楼主完全用C实现例如楼主距离的Directx,写起来比较费时而已。



谢谢指导

#33


引用 31 楼 qq1134993111 的回复:
会不会C++啊,会的话用Qt写界面很简单的。



不会...

#34


我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#35


引用 34 楼 zhao4zhong1 的回复:
我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

#36


引用 35 楼 yyxgs 的回复:
Quote: 引用 34 楼 zhao4zhong1 的回复:

我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

睁眼说瞎话!
https://notepad-plus-plus.org/zh/

#37


引用 36 楼 zhao4zhong1 的回复:
Quote: 引用 35 楼 yyxgs 的回复:

Quote: 引用 34 楼 zhao4zhong1 的回复:

我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

睁眼说瞎话!
https://notepad-plus-plus.org/zh/



不好意思,从没下载过源码,我在你给的官网地址上下载了一隔压缩包,源代码在哪额。。
大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#38


师傅领进门,以后修行得咋样,就得看徒弟的主观能动性了。

#39


推荐使用Source Insight软件查看大型项目的源代码。

#40


老赵的蹭分计划完败于楼主 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#41


引用 40 楼 ynsenyu 的回复:
老赵的蹭分计划完败于楼主 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

你知道得太多了!啪——!啊——!

#1


Linux下C没有问题,可以看看VIM的源码,
Windows下必须是C++,像MFC自带的编辑控件,实现起来比较容易。

#2


cmd的编辑器比gui麻烦多了,上个纯c的简单例子
#include <stdlib.h>
#include <iup.h>

int main(int argc, char **argv)
{
  Ihandle *dlg, *multitext, *vbox;

  IupOpen(&argc, &argv);

  multitext = IupText(NULL);
  vbox = IupVbox(
    multitext,
    NULL);
  IupSetAttribute(multitext, "MULTILINE", "YES");
  IupSetAttribute(multitext, "EXPAND", "YES");

  dlg = IupDialog(vbox);
  IupSetAttribute(dlg, "TITLE", "Simple Notepad");
  IupSetAttribute(dlg, "SIZE", "QUARTERxQUARTER");

  IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
  IupSetAttribute(dlg, "USERSIZE", NULL);

  IupMainLoop();

  IupClose();
  return EXIT_SUCCESS;
}

用的也是纯c的gui库iup

#3


c做界面的话去看看gtk

#4


Windows 下的 Raw 控制台代码,需要调用 控制台API
DOS下的 Raw 控制台代码 可以调用 Bios 中断(0x10),DOS 中断(0x21)
总之,Raw 控制台,需要依赖 系统服务,API 
C,C++标准库,不能提供很好的支持。

#5


你需要先考虑清楚,是用系统的图形库,还是第三方图形库,或者自己写图形库。

#6


参考Notepad++源代码 ?

#7


引用 5 楼 super_admi 的回复:
你需要先考虑清楚,是用系统的图形库,还是第三方图形库,或者自己写图形库。



第三方图形库吧

#8


引用 2 楼 ynsenyu 的回复:
cmd的编辑器比gui麻烦多了,上个纯c的简单例子
#include <stdlib.h>
#include <iup.h>

int main(int argc, char **argv)
{
  Ihandle *dlg, *multitext, *vbox;

  IupOpen(&argc, &argv);

  multitext = IupText(NULL);
  vbox = IupVbox(
    multitext,
    NULL);
  IupSetAttribute(multitext, "MULTILINE", "YES");
  IupSetAttribute(multitext, "EXPAND", "YES");

  dlg = IupDialog(vbox);
  IupSetAttribute(dlg, "TITLE", "Simple Notepad");
  IupSetAttribute(dlg, "SIZE", "QUARTERxQUARTER");

  IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
  IupSetAttribute(dlg, "USERSIZE", NULL);

  IupMainLoop();

  IupClose();
  return EXIT_SUCCESS;
}

用的也是纯c的gui库iup



这是系统API吗?

#9


引用 4 楼 lm_whales 的回复:
Windows 下的 Raw 控制台代码,需要调用 控制台API
DOS下的 Raw 控制台代码 可以调用 Bios 中断(0x10),DOS 中断(0x21)
总之,Raw 控制台,需要依赖 系统服务,API 
C,C++标准库,不能提供很好的支持。



我可以用DirectX来做图形库吗?

#10


控制台做这个啊,应该可以吧,不过和控制台的初衷,相违背了啊
还是要先得到控制台窗口的DC
然后就和普通窗口一样了吧,没玩过

#11


引用 10 楼 lm_whales 的回复:
控制台做这个啊,应该可以吧,不过和控制台的初衷,相违背了啊
还是要先得到控制台窗口的DC
然后就和普通窗口一样了吧,没玩过



不好意思,我没表达清楚,我不是要在控制台下,只是做一个普通的GUI程序就行了,在Windows下的

#12


C可以用 API 
C++可以用 MFC

#13


其他 像QT

#14


引用 12 楼 lm_whales 的回复:
C可以用 API 
C++可以用 MFC



请问Windows下C用API实现会很复杂吗?

#15


有了MFC不是很想深入学习API的,
都去用MFC了。毕竟爱偷懒是人的天性

#16


用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写

#17


引用 16 楼 lm_whales 的回复:
用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

#18


《C语言课程设计案例精编》有个编辑器实例,不过DOS的已经不推荐了。
Windows界面,还是C++ Builder、QT或者C#吧。

#19


引用 17 楼 yyxgs 的回复:
Quote: 引用 16 楼 lm_whales 的回复:

用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。

#20


引用 18 楼 u010165006 的回复:
《C语言课程设计案例精编》有个编辑器实例,不过DOS的已经不推荐了。
Windows界面,还是C++ Builder、QT或者C#吧。


纯C可以用QT吗?

#21


引用 19 楼 u010165006 的回复:
Quote: 引用 17 楼 yyxgs 的回复:

Quote: 引用 16 楼 lm_whales 的回复:

用API写代码编辑器,或者文本编辑器,要用到一些控件
建立窗口的代码,可以让VC自动生成,其他要靠自己编写了
Windows Win32 程序,就是 窗口程序,完全可以用 C写



刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?

#22


引用 21 楼 yyxgs 的回复:
Quote: 引用 19 楼 u010165006 的回复:

Quote: 引用 17 楼 yyxgs 的回复:


刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?


对的,C++是一个必攻的中途岛,然后可以分支。

#23


引用 22 楼 u010165006 的回复:
Quote: 引用 21 楼 yyxgs 的回复:

Quote: 引用 19 楼 u010165006 的回复:

Quote: 引用 17 楼 yyxgs 的回复:


刚看了下Windows程序设计(第5版),给跪了,请问要用MFC是不是要先学C++呢?

C++ Builder的VCL、Visual C++的MFC、QT都是一种类库,是基于C++的,是面向对象的。C语言没有类。



好吧,那也就是说要想用QT,前提也要会C++?


对的,C++是一个必攻的中途岛,然后可以分支。



明白了。

#24


我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

#25


引用 24 楼 shinerise 的回复:
我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。

#26


引用 24 楼 shinerise 的回复:
我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。



那确实厉害!

#27


引用 25 楼 u010165006 的回复:
Quote: 引用 24 楼 shinerise 的回复:

我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。



转眼就到Windows时代了,我是Windows时代的时候出生了,不了解DOS,但是磁盘操作系统应该很强大吧?

#28


只会写控制台,不会做界面,

#29


引用 27 楼 yyxgs 的回复:
Quote: 引用 25 楼 u010165006 的回复:

Quote: 引用 24 楼 shinerise 的回复:

我大学的时候一个NB师兄用纯C写了一个DOS下的编辑器,类似于TC那样,非常漂亮,支持自定义的汇编代码格式整理。非常N B。那时还是win98的时代。

DOS下写个下拉菜单界面都很不容易。



转眼就到Windows时代了,我是Windows时代的时候出生了,不了解DOS,但是磁盘操作系统应该很强大吧?

DOS现在看来很简陋了。

#30


楼主可以MFC或者Win32程序,基本上都是拖拽控件,需要你写的部分很少涉及到C++的知识。如果楼主完全用C实现例如楼主距离的Directx,写起来比较费时而已。

#31


会不会C++啊,会的话用Qt写界面很简单的。

#32


引用 30 楼 galiniur0u 的回复:
楼主可以MFC或者Win32程序,基本上都是拖拽控件,需要你写的部分很少涉及到C++的知识。如果楼主完全用C实现例如楼主距离的Directx,写起来比较费时而已。



谢谢指导

#33


引用 31 楼 qq1134993111 的回复:
会不会C++啊,会的话用Qt写界面很简单的。



不会...

#34


我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#35


引用 34 楼 zhao4zhong1 的回复:
我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

#36


引用 35 楼 yyxgs 的回复:
Quote: 引用 34 楼 zhao4zhong1 的回复:

我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

睁眼说瞎话!
https://notepad-plus-plus.org/zh/

#37


引用 36 楼 zhao4zhong1 的回复:
Quote: 引用 35 楼 yyxgs 的回复:

Quote: 引用 34 楼 zhao4zhong1 的回复:

我觉得楼主听#6楼说的就够了。 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!



是吗?我觉得还是34楼的好...
好像源代码是java的吧?

睁眼说瞎话!
https://notepad-plus-plus.org/zh/



不好意思,从没下载过源码,我在你给的官网地址上下载了一隔压缩包,源代码在哪额。。
大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#38


师傅领进门,以后修行得咋样,就得看徒弟的主观能动性了。

#39


推荐使用Source Insight软件查看大型项目的源代码。

#40


老赵的蹭分计划完败于楼主 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

#41


引用 40 楼 ynsenyu 的回复:
老赵的蹭分计划完败于楼主 大家好,我想用纯C编写一个代码编辑器,可是目前我只会写控制台,不会做界面,请问高手能不能给我一个思路,谢谢!

你知道得太多了!啪——!啊——!