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

unix下的c做图形界面。。。。。。。。

    来源: 互联网  发布时间:2015-01-23

    本文导语:  各位大狭,我想了解一下在unix平台下面,用c语言怎么做图形界面? 在dos下,c 有各种各样这样的库函数可以用。在unix下是不是也有啊? 另外,在unix下的c语言编程,一般用那种编译器? 幼稚问题,还是望赐教 ...

各位大狭,我想了解一下在unix平台下面,用c语言怎么做图形界面?
在dos下,c 有各种各样这样的库函数可以用。在unix下是不是也有啊?
另外,在unix下的c语言编程,一般用那种编译器?
幼稚问题,还是望赐教

|
UNIX一般使用X Window窗口系统,最初由MIT开发。
Linux有免费的XFree86
X Windows提供API,即Xlib,可以用来写窗口程序。
但用Xlib写X Window程序就象用Win32 API写Windows程序一样麻烦。
所以很多人用XToolkit或Motif。
这是传统的UNIX窗口应用程序。

|
#include     /* 引进 curses.h , 并自动引进stdio.h */ 


#define StartX  1                    /* 决定游标初始位置 */ 
#define StartY  1 

void initial(); 

void main(void) 

     int x=StartX;     /* 宣告 x,y 并设定其初值    */ 

     int y=StartY; 
     int ch;           /* 宣告 ch 为整数,配合 getch()使用   */ 


     initial();        /* 呼叫 initial(), 启动 curses 模式,  */ 

                       /* 并完成其它设定    */ 


     box(stdscr,'|','-');        /* 画方框    */ 


     attron(A_REVERSE);           /* 开启反白模式     */ 

    mvaddstr(0,20,"Curses Program"); /* 在 (20,0) 处输出反白字元  */ 

     attroff(A_REVERSE);               /* 关闭反白模式  */ 


     move(x,y);                        /* 将游标移至初始位置 */
     do {                              /* 以无限回圈不断等待输入  */ 

      ch=getch();                      /* 等待自键盘输入字元*/ 
      switch(ch) {                     /* 判断输入字元为何 */ 


         case KEY_UP: --y;             /* 判断是否"↑"键被按下 
     */ 

                      break; 
         case KEY_DOWN: ++y;           /* 判断是否"↓"键被按下 
     */ 

                      break; 
         case KEY_RIGHT: ++x;          /* 判断是否"→"键被按下 
     */ 

                      break; 
         case KEY_LEFT: --x;           /* 判断是否"←"键被按下 
     */ 

                      break; 
         case 'r':                    /* 判断是否 ENTER 键被按下 
     */ 

                   ++y; 
                   x=0; 
                   break; 
         case 't':                    /* 判断是否 TAB 键被按下 
     */ 

                   x+=7; 
                   break; 
         case 127:                     /* 判断是否 BACKSPACE 键被按下 
     */ 

                    mvaddch(y,--x,' ');/* delete 一个字元 
     */ 

                    break; 

         case 27: endwin();            /* 判断是否[ESC]键被按下 
     */ 

                  exit(1);             /* 结束 curses 模式 
     */ 

                                       /* 结束此程式 
     */ 


         default: 
                  addch(ch);           /* 如果不是特殊字元, 将此字元印 
出     */ 

                  x++; 
                  break; 
       } 
       move(y,x);                      /* 移动游标至现在位置 
     */ 

     } while (1); 
   } 

  void initial()                       /* 自定开启 curses 函式 
     */ 

  { 
      initscr(); 
      cbreak(); 
      nonl(); 
      noecho(); 
      intrflush(stdscr,FALSE); 
      keypad(stdscr,TRUE); 
      refresh(); 
   } 

建议你用www.google.com
收索一把 : unix 图形编程”,


|
以下是我很久前编写的
很多细节都忘记了
它运行于X-WINDOW上
 $ cc $1.c -lXm -lXt -lX11 -lsocket -o$1


#include
#include
#include
#include
#include
#include
#include
#include

#include"datebase.h"
#include"function.h"
#include"space.h"
#include"input.h"
#include"query.h"
#include"chang.h"
#include"help.h"
void down_pro(Widget w,XtPointer client,XtPointer call){
        exit(0);
        }

int main(int argc,char *argv){
 
 XtSetLanguageProc(NULL,NULL,NULL);
 toplevel=XtVaAppInitialize(&theApp,"Main",NULL,0,&argc,argv,NULL,NULL);
 one=XtVaCreateManagedWidget("One",xmBulletinBoardWidgetClass,
                               toplevel,
                              XmNallowOverlap,False,
                              XmNwidth, 750,
                              XmNheight, 510,
                             NULL);
/* MENU  area 0   menubar--------------------------------------------*/
 shell=XtVaCreateManagedWidget("X",
                                xmRowColumnWidgetClass,
                                one,
                                NULL);
 menubar=XmCreateMenuBar(shell,"menuBar",NULL,0);
 XtManageChild(menubar);
 filepane=XmCreatePulldownMenu(menubar,"pane",NULL,0);
 xmstr=XmStringCreateSimple("File");
 Filebutton=XtVaCreateManagedWidget("File",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,filepane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'F',
                                NULL);
 Filebutton1=XtVaCreateManagedWidget("Open",
                                xmPushButtonWidgetClass,
                                filepane,
                                NULL);
 xmstr=XmStringCreateSimple("F10");
 Filebutton2=XtVaCreateManagedWidget("Close",
                                xmPushButtonWidgetClass,
                                filepane,
                                XmNaccelerator,"F10",
                                XmNacceleratorText,xmstr,
                                NULL);
 XtAddCallback(Filebutton2,XmNactivateCallback,down_pro,NULL);
 /*FilesaveAsPane=XmCreatePulldownMenu(filepane,"save_as",NULL,0);
 Filebutton3=XtVaCreateManagedWidget("Save As",
                                xmCascadeButtonWidgetClass,
                                filepane,
                                XmNsubMenuId,FilesaveAsPane,
                                NULL);
 Filebutton4=XtVaCreateManagedWidget("MS Word",
                                xmPushButtonWidgetClass,
                                FilesaveAsPane,
                                NULL);
 Filebutton5=XtVaCreateManagedWidget("LaTeX",
                                xmPushButtonWidgetClass,FilesaveAsPane,
                                NULL);
 */
 querypane=XmCreatePulldownMenu(menubar,"pane",NULL,0);
 xmstr=XmStringCreateSimple("Query");
 Querybutton=XtVaCreateManagedWidget("query",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,querypane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'Q',
                                NULL);
 Queryname=XtVaCreateManagedWidget("Name",
                                xmPushButtonWidgetClass,
                                querypane,
                                NULL);
  XtAddCallback(Queryname,XmNactivateCallback,mainquery,NULL);                            
 Queryno=XtVaCreateManagedWidget("Number",
                                xmPushButtonWidgetClass,
                                querypane,
                                NULL);                             
 inputpane=XmCreatePulldownMenu(menubar,"pane",NULL,0);
 xmstr=XmStringCreateSimple("Input");
 Inputbutton=XtVaCreateManagedWidget("Input",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,inputpane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'I',
                                NULL);
Inputbutton1=XtVaCreateManagedWidget("Insert",
                                xmPushButtonWidgetClass,
                                inputpane,
                                NULL);   
                                                              
 changpane=XmCreatePulldownMenu(menubar,"pane",NULL,0);
 xmstr=XmStringCreateSimple("Chang");
 changbutton=XtVaCreateManagedWidget("Chang",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,changpane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'C',
                                NULL);
Changbutton1=XtVaCreateManagedWidget("Chang",
                                xmPushButtonWidgetClass,
                                changpane,
                                NULL);   
 XtAddCallback(Changbutton1,XmNactivateCallback,mainchang,NULL);       
 setuppane=XmCreatePulldownMenu(menubar,"pane",NULL,0);
 xmstr=XmStringCreateSimple("Setup");
 Setupbutton=XtVaCreateManagedWidget("Setup",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,setuppane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'S',
                                NULL);
Setuppasswd=XtVaCreateManagedWidget("Password",
                                xmPushButtonWidgetClass,
                                setuppane,
                                NULL);      
 helppane=XmCreatePulldownMenu(menubar,"pane",NULL,0);  
 xmstr=XmStringCreateSimple("Help");
 Helpbutton=XtVaCreateManagedWidget("Help",
                                xmCascadeButtonWidgetClass,
                                menubar,
                                XmNsubMenuId,helppane,
                                XmNlabelString,xmstr,
                                XmNmnemonic,'H',
                                NULL);
Helptext=XtVaCreateManagedWidget("Help Text",
                                xmPushButtonWidgetClass,
                                helppane,
                                NULL); 
XtAddCallback(Helptext,XmNactivateCallback,mainhelp,NULL);                                
Helpsystem=XtVaCreateManagedWidget("Help System",
                                xmPushButtonWidgetClass,
                                helppane,
                                NULL);                                   
  XtAddCallback(Inputbutton1,XmNactivateCallback,maininput,NULL);   
  
  /*  FIRST area 1  list----------------------------------------------*/

 /* SECOND area 2   input---------------------------------------------*/
  
  inputx=10; inputy=5; inputlen=40;
  inputmx=150; inputmy=50;
                      
 XtRealizeWidget(toplevel);
 XtAppMainLoop(theApp);
 exit(0);
}

|
兄弟,你想的和我一样,告诉你,其实就用curses库就可以编写字符模拟界面的。
man S curses

    
 
 

您可能感兴趣的文章:

  • 谁有可以仿真图形界面的unix仿真程序,或者说说如何安装unix的无盘工作站啊
  • Unix图形登陆??
  • unix中挂图形界面
  • 在unix下怎样使用图形终端??
  • unix图形界面使用??
  • unix下的FTP工具是什么?就象windows下的cuteftp那种图形界面的。。
  • unix是否支持图形截面?
  • 有没有用于unix下c开发的dbx调试图形界面的工具?
  • UNIX图形界面下如何安装db2
  • 怎样从Sco Unix的图形界面退出
  • unix 模拟环境的图形问题(CYGWIN)请朋友帮忙,谢谢!
  • 小弟刚刚开始学 Unix/Linux下的C/C++编程,只能用curses写过一些终端图形程序,想问一下,现在unix/linux下都开发一些什么样的应用程序啊?不包括嵌入式开发。
  • 哪位大虾有UNIX下c语言的图形编程--curses.h 函式库的中文文档?
  • 请问unix 操作系统是窗口界面还是文字界面的?
  • 初学unix,想用motif来写unix下的界面程序?哪里有motif的中文资料呀?
  • UNIX 环境下大家开发Windows界面的工具都用什么开发工具?
  • 高分请教,初次在unix下用c做个管理系统界面,还望赐教!
  • 请教UNIX字符界面开发问题~
  • 急求~unix下监控界面编程相关资料
  • 现在UNIX下用什么做界面开发
  • unix进程问题,为什么关了控制界面进程结束了
  • 请问在Unix下使用C/C++做界面开发有什么好一点的资料吗??
  • SCO Unix 5.05下IDE界面下,为什么鼠标不能用?回答都有分!!
  • 我的SCO UNIX一起动就自动启动x-window(用tty02). 请问如何直接启动到字符界面。
  • 通过windows前台界面监控unix守护进程与守护运行的日志
  • 我想在unix写一个模仿informix或者windowns里那样的菜单,当然,是字符界面的哈,不知哪里有这方面的源代码,请大侠给予指点。
  • 关于unix的版本及相应的界面!!!知道的进???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util.regex类pattern的类成员方法: unix_lines定义及介绍
  • 刚刚接触Unix系统和Unix编程。急需Unix下多线程程序设计和网络Socket程序设计方面的资料。
  • unix/Linux下c++ boost thread库读写锁介绍
  • 关于UNIX的历史 : 1973年,K.Thompson和D.M.ritchie,用C改写UNIX。那么,在此之前,UNIX是用什么写的?
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 没有unix系统我如何学习unix
  • php将unix时间戳转换成字符串时间函数(date)
  • unix盘哪里有下载的??哪里有比较好的unix论坛??万分感谢!!!!!!!!!
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • 急!装完unix5.06,再装win2000。重启后不能进unix.
  • UNIX特急!!!digital unix问题,请专家快来!!!
  • UNIX支持中文否,请推荐UNIX好书
  • SCO UNIX 5.0用软盘启动之后无法启动UNIX
  • 散分!!unix 用户调查!!!你使用哪款unix
  • hp unix 和 sco unix的区别
  • 入门问题,我想向UNIX编程方向发展,单目前不会UNIX,我该如何做
  • 强烈建议将linux/Unix栏目放到“软件开发者”大类里面来。----Unix开发的人助威支持!!!
  • 现在那些unix比较流行?Linux和 Unix有 什么区别?
  • 小问题, Unix 如何建立一个文件 ,unix 文件有后缀名吗
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 请问各位unix大虾,哪有免费的unix下载?


  • 站内导航:


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

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

    编程语言 iis7站长之家