当前位置:  技术问答>linux和unix

C语言开发linux下的图形界面程序

    来源: 互联网  发布时间:2016-02-28

    本文导语:  谁有:C语言开发linux下的图形界面程序的资料或经验介绍一下 注:不是在Linux下的windows里开发图形界面,是在命令行下开发独立的图形界面程序,就像用C开发DOS下的图形界面程序一样,要支持鼠标 | ...

谁有:C语言开发linux下的图形界面程序的资料或经验介绍一下

注:不是在Linux下的windows里开发图形界面,是在命令行下开发独立的图形界面程序,就像用C开发DOS下的图形界面程序一样,要支持鼠标

|
int ungetch()
这个函数将把字符ch送回输入缓冲区。
---------------------
int getstr(str)
int wgetstr(win,str)
int mvgetstr(y,x,str)
int mvwgetstr(win,y,x,str)
int wgetnstr(win,str,n)
这些函数的作用相当于对getch()进行一系列的调用,直到接收到一个新行。
行中的字符存放在str中(所以,在调用getstr(.)之前,不要忘记给字符指针
分配内存)。如果打开了回送,则字符串将被显示出来(使用noecho()可以关
闭回送)而用户的删除字符以及其他特殊字符也会被解释出来
-----------------
chty peinch(0
chty pewinch(win)
chty pemvinch(y,x)
chty pemvwinch(win,y,x)
这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe,
所以还包括了属性信息。这一信息可以使用常量A_*从字符中扩展得到。
-------------------
int scanw(fmt,...)
int wscanw(win,fmt,...)
int mvscanw(y,x,fmt,...)
int mvwscanw(win,y,x,fmt,...)
int vwscanw(win,fmt,va_list.)
----------------------------
输出选项
int idlok9win,bf)
void fdcok(win.bf)
这两个函数为窗口使能或者关闭终端的insert/delete特征(idlok(.)针对一
行,而idcok(.)则针对字符)。(注:idcok(.)尚未实现)
void immedok(win,bf)
bf设置为TRUE,则对窗口win的每一次改变都将导致物理屏幕的一次刷新。
这将使程序的性能降低,所以默认的值是FALSE。(注:此函数尚未实现)
int clearok(win,bf)
如果bf值为TRUE,则下一次调用wrefresh(win)时将会清除屏幕,
并完全地把它重新画一遍(就像用户在编辑器vi中按下Ctrl+L一样)。
int leaveok(win,bf)
默认的行为是,ncurses让物理光标停留在上次刷新窗口时的同一个位置上。
不使用光标的程序可以把leaveok(.)设置为TRUE,这样一般可以节省光标
移动所需要的时间。此外,ncurses将试图使终端光标不可见。
int nl()
int nonl()
这两个函数控制新行的平移。使用nl()可以打开平移,这样在回车时就会
平移到新的一行,在输出时就会走行。而nonl()可以把平移关上。
关上平移之后,ncurses做光标移动操作时速度就会快一些。
------------------------------
输入选项

int keypad(win,bf)
bf为TRUE,函数在等待输入时会使能用户终端的键盘上的小键盘。
ncurses将返回一个键代码,该代码在.h头文件中被定义为KEY_*宏,
它是针对小键盘上的功能键和方向键的。对于PC键盘来说,
这一点是非常有帮助的,因为这样用户就可以使能数字键和光标键。
int meta(win.bf)
bf为TRUE,从getch()返回的键代码将是完整的8位(最高位将不会被去掉)
int cbreak()
int nocbreak()
int crmode()
int nocrmode()
cbreak()和nocbreak()将把终端的CBREAK模式打开或关闭。如果CBREAK打开则程序就可以立刻使用读取的输入信息。如果CBREAK关闭,则输入将被缓存
起来,直到产生新的一行(注意:crmode()和nocrmode()只是为了提供向上兼容性,不要使用它们)
int raw()
int noraw()
这两个函数将把RAW模式打开或关闭。RAW与CBREAK相同,
它们的区别在于RAW模式不处理特殊字符。
int echo()
int noecho()
如果把echo()设置为TRUE,则用户所敲的输入将会回送并显示出来,
而noecho()则对此保持沉默。
int halfdelay(t)
此函数与cbreak()相似,但它要延迟t秒钟。
int nodelay(win,bf)
终端将被设置为非阻塞模式。如果没有任何输入则getch()将返回ERR,
否则如果设置为FALSE,则getch()将等待,直到用户按下某个键为止。
int timeout(t)
int wtimeout(win,t)
笔者提倡大家使用这两个函数,而不要使用halfdelay(t)和nodelay(win,bf)getch()的结果取决于t的值。如果t是正数,则读操作将被阻塞t毫秒;
如果t为零,则不发生任何阻塞;如果t是负数,则程序将阻塞,直到有输入为止
int notimeout(win,bf)
如果bf为TRUE,则getch()将使用一个特殊的定时器(一秒钟长)。到时间以后
再对以Esc等键打头的输入序列进行解释。
int typeahead(fd)
如果fd是-1,则不检查超前键击,否则ncurses将使用文件描述符fd来进行这些检查
int int rflush(win,bf)
当bf为TRUE时使能该函数。在终端上按下任意中断键(quit、break.)时,

|
ncurses:用于字符界面的程序
framebuffer:用于非X的图形界面程序

|
使用GTK以行啊

|
学习linux是在命令界面下好,还是windows界面下,特别是开发带图形界面的,都用什么工具呢?

|
QT_E就是帧缓冲机制的,/dev/fb0,1就是帧缓冲设备

|
qt minigui gtk 都可以吧。

|
sdl

|
人家说是在终端下,楼上两位没看清

|
恩 果然

|
我转一份,一起学习吧:
scounix下curses编程函数说明
#include 
-------------------------------------------------------- 
INDDW*curscr:当前屏幕
WINDOW *stdscr:标准屏幕
int LINES:终端上的行数
int COLS:终端上的列数
bool TRUE:真标志,1
bool FALSE:假标志,0
int ERR:错误标志,-1
int OK:OK标志,0
---------------------------------------------
win:WINDOW *
bf:bool
ch:chty pe
str:char *
chstr:chty pe*
fmt:char *
否则:int 
---------------------------------------------
初始化
WINDOW *initscr()
SCREEN*newterm(char *type, FILE *outfd, FILE *infd)
对用户访问的每个终端都应该调用newterm
t y p e是终端的名称,包括在$ T E R M中(如ansi, xterm, vt100等等)
SCREEN*set_term(SCREEN *new)
用户可以切换当前终端。所有的函数都将在设置的当前终端上起作用。
int endwin()
退出程序之前,关闭所有打开的窗口。
之后还可以调用refresh(),
int isendwin()
ifendwin()->refresh(),TRUE,|FALSE。
-----------------------
WINDOW *newwin(nlines,ncols,begy,begx)
begy和begx是窗口左上角的坐标。nlines是一个整数,
存放着行的数目,而ncols,存放着列的数目。
所有的参数设置为零,则打开的窗口的大小将与屏幕的大小相同。
int delwin(win)
它删除窗口win。如果存在子窗口,以前先要删除这些子窗口。这个函数将
释放win所占据的所有资源。在调用endwin()之前用户应该删除所有的窗口
int mvwin(win,by,bx)
它将把窗口移到坐标(by,bx)处。如果把窗口移出屏幕边界的范围,则ERR
WINDOW *subwin(origwin,nlines,ncols,begy,begx)
它返回一个位于origwin窗口中间的子窗口。如果用户改变这两个窗口
(origwin或者那个新窗口)中的一个,则这种改变将会同时反映到这两
个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin)
begx和begy是相对于屏幕的,而不是相对于origwin的。
WINDOW *derwin(origwin,nlines,ncols,begy,begx)
此函数与subwin(.)相同,只不过这里的begx和begy是相对于origwin的,而不是相对于屏幕的。
mvderwin(win,y,x)
此函数将把win移到父窗口内。(注意:此函数尚未实现)。
WINDOW *dupwin(win)
此函数复制窗口win。
int overlay(win1,win2)
将把win1中的所有文本拷贝到win2中,但是不拷贝空格。
int overwrite(win1,win2)
也是做文本拷贝工作的函数,但它拷贝空格。
int copywin(win1,win2,sminrow,smincol,dminrow,
dmincol,dmaxrow,dmaxcol,overlay)
它所做的工作与overlay(.)和overwrite(.)相似,但是该函数还可以让程序员选择拷贝窗口的哪个区域。
int addch(ch)
int waddch(win,ch)
int mvaddch(y,x,ch)
int mvwaddch(win,y,x,ch)
----------------
int addstr(str)
int addnstr(str,n)
int waddstr(win,str)
int waddnstr(win,str,n)
int mvaddstr(y,x,str)
int mvaddnstr(y,x,str,n)
int mvwaddstr(win,y,x,str)
int mvwaddnstr(win,y,x,str,n)
-----------------------------
int addchstr(chstr)
int addchnsrtr(chstr,n)
int waddchstr(win,chstr)
int waddchnstr(win,chstr,n)
int mvaddchstr(y,x,chstr)
int mvaddchnstr(y,x,chstr,n)
int mvwaddchstr(win,y,x,chstr)
int mvwaddchnstr(win,y,x,chstr,n)
*****chstr是指向ch type数组的一个指针。*****
---------------------------
int echochar (ch)
int wechochar (win,ch)
---------------------------

|
int printw(fmt,..)
int wprintw(win.fmt,....)
int mvprintw(y,x,fmt,...)
int mvwprntw(win,y,x,fmt,..)
---------------------------
int insch(c)
int winsch(win,c)
int mvinsch(y,x,c)
int mvwinsch9win,y,x,c)
这些函数把字符ch插入到光标的左边,
光标后面的所有字符则向右移动一个位置。
在这一行最右端的字符可能会丢失。
---------------------------
int insert()
int winsert(win)
在当前行的上方插入一个空行(最底下的一行将被丢失)。
---------------------------
int insdelin(n)
int winsdelln(win,n)
如果n为正数,则这些函数将在适当的窗口的当前光标上方插入n行
(这样一来最底下的n行将丢失);如果n为负数,则光标下面的n行将被删除,
余下的行将上升,顶替它们的位置。这些函数将在当前光标的左边插入str
(字符的个数不能超过一行的限度)。在光标右边的字符将右移,如果到达行
尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动
到的坐标,n是要插入的字符的数目(如果n为0则插入整个字符串)。
---------------------------
int insstr(str)
int insnstr(str,n)
int winsstr(win,str)
int winsnstr(win,str,n)
int mvinsstr9y,x,str)
int mvinsnstr(y,x,str,n)
int mvwinsstr(win,y,x,str)
int mvwinsnstr(win,y,x,str,n)
这些函数将在当前光标的左边插入str(字符的个数不能超过一行的限度)。
在光标右边的字符将右移,如果到达行尾,则字符将丢失,光标位置不变。
y和x是指在插入str以前先要把光标移动到的坐标,n是要插入的字符的数目
(如果n为0则插入整个字符串)。
---------------------------
int delch()
int wdelch(win)
int mvdelch(y,x)
int mvwdelch(win,y,x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。
y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面所有的其他行都向上移动一个位置。
此外,屏幕最底下的一行将被清除。
-----------------------------
方框和直线

int border(ls,rs,ts,bs,tl,tr,bl,br)
int wborder(win,ls,rs,ts,bs,tl,tr,bl,br)
int box(win,vert,hor)
这些函数在窗口的边界(或者win的边界)画上方框。在下面的表格中,
读者将可以看到字符,以及它们的默认值。当用零去调用box(.)时将
会用到这些默认值。在下面的图中读者可以看到方框中字符的位置
-------------
int vline9ch,n)
int wvline(win,ch,n)
int hline(ch,n)
int whline(win,ch,n)
这些函数将从当前光标位置开始画一条水平线或者垂直线。
ch是画线所使用的字符,n是要画的字符的个数,光标位置并不移动。
--------------------------
void bkgdset(ch)
void wbkgdset(win,ch)
这两个函数设置窗口或者屏幕的背景字符和属性。ch的属性将和窗口中
所有非空格的字符的属性进行OR操作。背景是窗口的一部分,
将不会随着滚动、输入或输出而改变
int bkgd(ch)
int wbkgd(win,ch)
---------------------------------
int getch()
int wgetch()
int mvgetch(y,x)
int mvwgetch(win,y,x)
getch()将从终端读取输入,读取的方式取决于是否设置了延迟模式。
如果设置了延迟模式,则getch()将一直等待,直到用户按下一个键为止;
如果没有设置延迟模式,则它将返回输入缓冲区中的数据,如果输入缓冲区
为空,则它将返回ERR。mvgetch(.)和mvwgetch(.)首先把光标移动到位置
(y,x)上。名称中有w字母的函数将从与窗口win相关的终端读取输入,
getch()和mvgetch(.)则从屏幕相关的终端读取。如果使能了keypad(.)
在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文件中被
定义为KEY_*宏。如果用户按下Esc键(它可能会是某个组合功能键的第
一个键),则ncurses将启动一个否则就返回功能键的值。(如果需要的话,
可以使用notimeout()来关闭第二个定时器

|
你说的需求我还是不大懂 是运行setup 后出现的配置窗口那样的程序么?

    
 
 

您可能感兴趣的文章:

  • 求用Java语言写成的图形的各种变换、特效等的程序代码的网址???或对图形的特效有何独特的见解,也可发表一下。
  • 矢量图形描述语言 Asymptote
  • 图形脚本语言 Sikuli
  • 图形编程语言 Box
  • ubuntu下C语言图形编程
  • 前端预处理器语言图形编译工具 Koala App
  • 哪位大虾有UNIX下c语言的图形编程--curses.h 函式库的中文文档?
  • 安装Linux,界面一直停留在选择语言的界面
  • C语言界面开发用什么
  • 如何在linux下用c语言编写文本界面,不是在x-window下
  • 关于ubuntu字符界面系统console显示多国语言
  • 类似于Shell界面下setup命令的文本模式菜单用C语言如何实现
  • linux下C语言屏幕界面
  • 用户界面的领域专用语言 Visage
  • linux下怎么用C语言开发界面程序?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问如何在C语言中嵌入的shell脚本中获得C语言程序中定义的某个变量
  • c语言基于libpcap实现一个抓包程序过程
  • 有人用过centos吗?请问在centos下怎么在终端运行C语言程序或者JAVA程序?
  • 据说这是史上最变态的6个C语言Hello, World程序
  • 程序设计语言 Objeck
  • unix下用什么语言编应用程序?(急)
  • 如何将C语言代码转换为应用程序(也就是编译)
  • C语言程序库 LibU
  • 请问高级程序员有没有考java语言的?
  • Linux 中用java语言写串口程序,提示找不到串口
  • 请问unix终端的光条式菜单程序是用什么语言开发的?谢谢
  • linux下用c语言写的程序,其中可以使用STL模板吗?先谢谢各位
  • java语言实现监控程序 iis7站长之家
  • c语言实现程序互斥问题 急.....
  • linux下,简单c语言程序
  • 求一个在Linux下运行的C语言小程序.
  • linux 桌面应用程序和web应用程序编写常用的语言
  • java语言实现监控程序
  • 请教:想用c语言编写能使浏览器启动的一个程序?
  • linux C语言 获取当前程序运行时路径
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • PHP编程语言介绍及安装测试方法
  • C语言中间语言 CIL
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3