当前位置:首页 » 编程语言 » linuxc语言图形编程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

linuxc语言图形编程

发布时间: 2022-11-14 12:52:35

‘壹’ 怎样用c语言写一个图形界面

代码

#include <windows.h>


LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ; //声明用来处理消息的函数


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )

{

static TCHAR szAppName[] = TEXT("MyWindow") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ; //声明一个窗口类对象


//以下为窗口类对象wndclass的属性

wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口样式

wndclass.lpszClassName = szAppName ; //窗口类名

wndclass.lpszMenuName = NULL ; //窗口菜单:无

wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ; //窗口背景颜色

wndclass.lpfnWndProc = WndProc ; //窗口处理函数

wndclass.cbWndExtra = 0 ; //窗口实例扩展:无

wndclass.cbClsExtra = 0 ; //窗口类扩展:无

wndclass.hInstance = hInstance ; //窗口实例句柄

wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ) ; //窗口最小化图标:使用缺省图标

wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ; //窗口采用箭头光标


if( !RegisterClass( &wndclass ) )

{ //注册窗口类, 如果注册失败弹出错误提示

MessageBox( NULL, TEXT("窗口注册失败!"), TEXT("错误"), MB_OK | MB_ICONERROR ) ;

return 0 ;

}


hwnd = CreateWindow( //创建窗口

szAppName, //窗口类名

TEXT("我的窗口"), //窗口标题

WS_OVERLAPPEDWINDOW, //窗口的风格

CW_USEDEFAULT, //窗口初始显示位置x:使用缺省值

CW_USEDEFAULT, //窗口初始显示位置y:使用缺省值

CW_USEDEFAULT, //窗口的宽度:使用缺省值

CW_USEDEFAULT, //窗口的高度:使用缺省值

NULL, //父窗口:无

NULL, //子菜单:无

hInstance, //该窗口应用程序的实例句柄

NULL //

) ;

ShowWindow( hwnd, iCmdShow ) ; //显示窗口

UpdateWindow( hwnd ) ; //更新窗口

while( GetMessage( &msg, NULL, 0, 0 ) ) //从消息队列中获取消息

{

TranslateMessage( &msg ) ; //将虚拟键消息转换为字符消息

DispatchMessage( &msg ) ; //分发到回调函数(过程函数)

}

return msg.wParam ;

}


LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )

{

HDC hdc ; //设备环境句柄

PAINTSTRUCT ps ; //绘制结构

RECT rect; //矩形结构

switch( message ) //处理得到的消息

{

case WM_CREATE: //窗口创建完成时发来的消息

MessageBox( hwnd, TEXT("窗口已创建完成!"), TEXT("我的窗口"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_PAINT: //处理窗口区域无效时发来的消息

hdc = BeginPaint( hwnd, &ps ) ;

GetClientRect( hwnd, &rect ) ;

DrawText( hdc, TEXT( "Hello, 卫班科技!" ), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ) ;

EndPaint( hwnd, &ps ) ;

return 0 ;

case WM_LBUTTONDOWN: //处理鼠标左键被按下的消息

MessageBox( hwnd, TEXT("鼠标左键被按下。"), TEXT("单击"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_DESTROY: //处理窗口关闭时的消息

MessageBox( hwnd, TEXT("关闭程序!"), TEXT("结束"), MB_OK | MB_ICONINFORMATION ) ;

PostQuitMessage( 0 ) ;

return 0;

}

return DefWindowProc( hwnd, message, wParam, lParam ) ; //DefWindowProc处理我们自定义的消息处理函数没有处理到的消息

}

‘贰’ linux 标准C/C++ 图像识别编程

[color=Red][size=5][b]谁能告诉我该怎么实现 Linux下c语言的图形编程[/b][/size][/color]

以下是UNIX下c语言的图形编程

UNIX下c语言的图形编程--curses.h 函式库
作者:不详 来源:supcode.com收集整理 发布时间:2005-7-22 19:39:36
减小字体 增大字体

相信您在网路上一定用过如 tin,elm 等工具, 这些软体有项共同的特色,
即他们能利用上下左右等方向键来控制游标的位置. 除此之外, 这些程式
的画面也较为美观. 对 Programming 有兴趣的朋友一定对此感到好奇, 也
许他能在 PC 上用 Turbo C 轻易地写出类似的程式, 然而, 但当他将相同
的程式一字不变地移到工作站上来编译时, 却出现一堆抓也抓不完的错误.
其实, 原因很简单, 他使用的函式库可能在 UNIX 上是没有定义的. 有些
在 Turbo-C 上被广泛使用的一些函式, 可能在 UNIX 上是不被定义的.

为了因应网路上各式各样的终端机形态 (terminal), UNIX 上特别发展出
一套函式库, 专门用来处理 UNIX 上游标移动及萤幕的显示. 这就是本篇
文章要为您介绍的 - curses.h 函式库. 利用这个函式库, 您也可以写出
像 elm 般利用方向键来移动光棒位置的程式. (CCCA 近来所提供的线上选
课程式, 及程式服务界面, 即是笔者利用 curses 发展而成的 )

■ curses 的历史与版本

cureses 最早是由柏克莱大学的 Bill Joy 及 Ken Arnold 所发展出来的.
当时发展此一函式库主要原因是为了提高程式对不同终端机的相容性而设
计的. 因此, 利用 curses 发展出来的程式将和您所使用的终端机无关.
也就是说, 您不必担心您的程式因为换了一部终端机而无法使用. 这对程
式设计师而言, 尤其是网路上程式的撰写, 是件相当重要的一件事.
curses之所以能对上百种以上的终端机工作, 是因为它将所有终端机的资
料, 存放在一个叫 termcap 的资料库, ( 而在第二版的 System V 系统中
, 新版的 curses 以 terminfo 取代原来的 termcap). 有了这些记录, 程
式就能够知道遇到哪一种终端机时, 须送什麽字符才能移动游标的位置,
送什麽字符才能清除整个萤幕清除. (* 注一)

另外, 本文的介绍 以 System V 的 curses 版本为主.

■ 如何在您的程式使用 curses ?

在您的 C 程式的档头将 <curses.h> include 进来.当您引进 curses.h
这个函式库后, 系统会自动将 <stdio.h> 和 <unctl.h>一并 include 进
来.另外, 在 System V 版本中, <terminfo.h> 这个函式库也将一并
include进来.

#include <curses.h>

main()
{
: :
: :
}

当然, 您的系统内必须放有 curses.h 这个函式库.

■ 如何编译(compile)

当您编辑好您的程式, 在 UNIX 提示符号下键入:

% /usr/5bin/cc [file.c] -lcurses
^^^^^^^
引进 curses.h 这个 library

或 % /usr/5bin/cc [file.c] -lcurses -ltermlib

(*注二)

■ 如何开始我的第一个 curses 程式?

在开始使用 curses 的一切命令之前, 您必须先利用 initscr()这个函式
来开启 curses 模式.

相对的, 在结束 curses 模式前 ( 通常在您结束程式前 ) 也必须以
endwin()来关闭 curses 模式.

#include <curses.h>

main()
{
initscr();
: :
: :
: :
endwin();
}

这是一般 curses 程式标准的模式.

此外, 您可以就您程式所须, 而做不同的设定. 当然, 您可以不做设定,而
只是呼叫 initscr().

您可以自己写一个函式来存放所有您所须要的设定. 平常使用时, 只要呼
叫这个函式即可启动 curses 并完成一切设定.

下面的例子, 即是笔者将平常较常用的一些设定放在一个叫 initial()的函

式内.

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

各函式分别介绍如下:

□ initscr()

initscr() 是一般 curses 程式必须先呼叫的函数, 一但这个函数
被呼叫之后, 系统将根据终端机的形态并启动 curses 模式.

□ endwin()

curses 通常以呼叫 endwin() 来结束程式. endwin() 可用来关闭
curses 模式, 或是暂时的跳离 curses 模式.如果您在程式中须要
call shell ( 如呼叫 system() 函式 ) 或是需要做 system call,
就必须先以 endwin() 暂时跳离 curses 模式. 最后再以
wrefresh() doupdate() 来重返 curses 模式.

□ cbreak()
nocbreak()

当 cbreak 模式被开启后, 除了 DELETE 或 CTRL 等仍被视为特殊
控制字符外一切输入的字符将立刻被一一读取.当处于 nocbreak 模
式时, 从键盘输入的字符将被储存在 buffer 里直到输入 RETURN
或 NEWLINE.在较旧版的 curses 须呼叫 crmode(),nocrmode() 来
取代 cbreak(),nocbreak()

□ nl()
nonl()

用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字
元 ( 如 \n ).
而输出资料时, NEWLINE 字符是否被对应为 RETURN 和 LINDFEED
系统预设是开启的.

□ echo()
noecho()

此函式用来控制从键盘输入字符时是否将字符显示在终端机上.系统
预设是开启的.

□ intrflush(win,bf)

呼叫 intrflush 时须传入两个值:
win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr
bf 为 TRUE 或 FALSE

当 bf 为 true 时, 当输入中断字符 ( 如 break) 时, 中断的反应
将较为快速.但可能会造成萤幕的错乱.

□ keypad(win,bf)

呼叫 keypad 时须传入两个值:
win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr
bf 为 TRUE 或 FALSE

当开启 keypad 后, 可以使用键盘上的一些特殊字符, 如上下左右
等方向键, curses 会将这些特殊字符转换成 curses.h 内定义的一
些特殊键. 这些定义的特殊键通常以 KEY_ 开头.

□ refresh()

refresh() 为 curses 最常呼叫的一个函式.

curses 为了使萤幕输出入达最佳化, 当您呼叫萤幕输出函式企图改
变萤幕上的画面时, curses 并不会立刻对萤幕做改变, 而是等到
refresh() 呼叫后, 才将刚才所做的变动一次完成. 其馀的资料将
维持不变. 以尽可能送最少的字符至萤幕上. 减少萤幕重绘的时间.
如果是 initscr() 后第一次呼叫 refresh(), curses 将做清除萤
幕的工作.

■ 游标的控制

move(y,x) 将游标移动至 x,y 的位置
getyx(win,y,x) 得到目前游标的位置
(请注意! 是 y,x 而不是 &y,&x )

■ 有关清除萤幕的函式

clear()
erase() 将整个萤幕清除
(请注意配合refresh() 使用)

■ 如何在萤幕上显示字符

echochar(ch) 显示某个字符

addch(ch) 显示某个字符
mvaddch(y,x,ch) 在(x,y) 上显示某个字符
相当于呼叫 move(y,x);addch(ch);

addstr(str) 显示一串字串
mvaddstr(y,x,str) 在(x,y) 上显示一串字串
相当于呼叫 move(y,x);addstr(str);

printw(format,str) 类似 printf() , 以一定的格式输出至萤幕
mvprintw(y,x,format,str) 在(x,y) 位置上做 printw 的工作.
相当于呼叫 move(y,x);printw(format,str);

■ 如何从键盘上读取字符

getch() 从键盘读取一个字符 (注意! 传回的是
整数值)
getstr() 从键盘读取一串字符
scanw(format,&arg1,&arg2...) 如同 scanf, 从键盘读取一串字符

□例:

int ch;
char string1[80]; /* 请注意! 不可宣告为 char *string1; */
char string2[80];

echo(); /* 开启 echo 模式, 使输入立刻显示在萤幕上 */
ch=getch();
string1=getstr();
scanw("%s",string2);
mvprintw(10,10,"String1=%s",string1);
mvprintw(11,10,"String2=%s",string2);

■ 如何利用方向键

curses 将一些如方向键等特殊控制字符, 以 KEY_ 为开头定义在 curses.h

这个档案里头, 如 KEY_UP 即代表方向键的 " ↑ ". 但, 如果您想使用

curses.h 所为您定义的这些特殊键的话, 您就必须将 keypad 设定为

TRUE. 否则, 您就必须自己为所有的特殊键定义了.

curses.h 为一些特殊键的定义如下:

KEY_UP 0403 ↑
KEY_DOWN 0402 ↓
KEY_LEFT 0404 ←
KEY_RIGHT 0405 →
KEY_HOME 0406 Home key (upward+left arrow)
KEY_BACKSPACE 0407 backspace (unreliable)
KEY_F0 0410 Function keys.
KEY_F(n) (KEY_F0+(n)) formula for f .
KEY_NPAGE 0522 Next page
KEY_PPAGE 0523 Previous page

以上仅列出笔者较常使用的一些控制键, 至于其他控制键的定义, 请自行参

阅 man curses (* 注三)

一并为您列出其他常用的一些特殊字符

[TAB] /t
[ENTER] /r
[ESC] 27
[BACKSPACE] 127

■ 如何改变萤幕显示字符的属性

为了使输出的萤幕画面更为生动美丽, 我们常须要在萤幕上做一些如反白,

闪烁等变化. curses 定义了一些特殊的属性, 透过这些定义, 我们也可以

在 curses 程式□控制萤幕的输出变化.

attron(mod) 开启属性
attroff(mod) 关闭属性

curses.h 里头定义了一些属性, 如:

A_UNDERLINE 加底线
A_REVERSE 反白
A_BLINK 闪烁
A_BOLD 高亮度
A_NORMAL 标准模式 (只能配合 attrset() 使用)

当使用 attron() 开启某一种特殊属性模式后, 接下来在萤幕的输出都会以

该种属性出现. 直到您呼叫 attroff() 将此模式关闭.

请注意, 当您欲 attron() 开启另一种属性时, 请记得利用 attroff()先关

闭原来的属性, 或直接以 attrset(A_NORMAL) 将所有特殊属性关闭.否则,

curses 会将两种属性做重叠处理.

□例:

attrset(A_NORMAL); /* 先将属性设定为正常模式 */

attron(A_UNDERLINE); /* 加底线 */

mvaddstr(9,10,"加底线"); /* 加底线输出一串字符 */

attroff(A_UNDERLINE); /* 关闭加底线模式, 恢复正常模式 */

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

mvaddstr(10,10,"反白"); /* 输出一串反白字符 */

attroff(A_REVERSE); /* 关闭反白模式, 恢复正常模式 */

attron(A_BLINK); /* 开启闪烁模式 */

mvaddstr(11,10,"闪烁"); /* 输出一串闪烁字符 */

attroff(A_BLINK); /* 关闭闪烁模式, 恢复正常模式 */

attron(A_BOLD); /* 开启高亮度模式 */

mvaddstr(12,10,"高亮度"); /* 输出一串高亮度字符 */

attroff(A_BOLD); /* 关闭高亮度模式, 恢复正常模式 */

■ 其他常用的一些函式

beep() 发出一声哔声
box(win,ch1,ch2) 自动画方框 ch1: 画方框时垂直方向所用字符
ch2: 画方框时水平方向所用字符

example: box(stdscr,'|','-');
将以 | 及 - 围成一个方框

■ 应用完整□例

下面所举的例子, 即完全利用刚刚所介绍的含式来完成.这个程式可将从键

盘上读取的字符显示在萤幕上, 并且可以上下左右方向键来控制游标的位置

, 当按下 [ESC] 后, 程式即结束.

您有没有发现, 这不就是一个简单全萤幕编辑器的雏形吗?

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

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

void initial();

main()
{
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();
}

■ 后记

学完了上述的一些命令, 相不相信您已经可以写出一个漂亮的全萤幕编辑
器了? 事实上, curses 提供的函式不下 200 个, 可是笔者认为, 一切再
复杂的函式都可以用本文提到的一些组合变化而成, 学了太多的函式, 只
是徒增自己困扰罢了. 当然, 如果您对其它函式有兴趣, 可以自行参阅
curses 说明档. ( 方法: % man curses ) 本文不过行抛砖引玉之效, 也
希望未来能陆续出现更多同学自行创作的程式.

* 任何疑问及建议, 欢迎 e-mail 至 [email][email protected][/email]. 谢谢 ! *

注一:
请参考 /usr/share/lib/termcup
/usr/share/lib/terminfo/s/sun

注二:
1.如果是 BSD 的版本, 需使用
cc [file.c] -lcurses -ltermcap 来完成 compile.
2.计中工作站不知何故将原来的 /usr/5bin/cc 更改为 /usr/5bin/cc.org

因此, 您若想在计中工作站 compile curses 程式.需以 /usr/5bin/cc.
org
取代 /usr/5bin/cc , 否则 compile 可能发生错误.
3.较旧版的 curses 需同时引进 curses 和 termlib 这两个 library,
因此, 您必须使用 /usr/5bin/cc [file.c] -lcurses -ltermlib 来
compile.

注三:
根据笔者的经验, 上下左右方向键应可正常使用而不会发生问题, 但其它

如 PgUp,PgDn,功能键,Home,End 等特殊键, 很容易因机器, 键盘不同而无

法使用, 因此, 若您的程式须要在不同的机器上使用, 建议您只用方向键来

控制, 其它的特殊键少用为妙.
至于 PgUp,PgDn 一些特殊键的控制方法, 由于较为复杂, 有兴趣的同学可

考 tin 原始程式 curses.c 内所使用的一些方法.

‘叁’ 在Linux下有没有什么图形化界面的C编程工具介绍一下

Eclipse C/C++集成包(选择Linux版本的,选择相应的32位或者64位的);
不喜欢英文界面,可以添加中文插件;
想写qt,就装qt插件;
想写gtk,就装gtk插件;
想要窗口编辑器,就装相应的插件;
想。。。就装相应的插件。。。
。。。
。。。
如果想练数据库,可以安装简易数据库插件。。。
。。。
如果想。。。

此处省略N字

‘肆’ c语言编程如何实现图形化

这要看你所使用的系统平台,图形化编程与系统平台息息相关

对于C语言来说,有许多成熟的框架。比如Windows上可使用Windows的系统API,Linux下有GTK,嵌入式环境下有miniGUI等。

C语言是一门比较特殊的语言,虽然也是高级编程语言的一种,但是为了和其他语言区分开来,部分人也会将C语言称作中级语言,主要是因为C语言不是面向对象的语言,并且有指针这样的利器可以直接对底层以及硬件进行操作。

正是因为C语言不是面向对象的语言,在图形化这样更偏上层的应用中,一般会使用C++替代C语言,这样能极大的降低开发的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多种平台运行)。嵌入式环境下有嵌入式的QT版本。

‘伍’ linux下C语言编程如何判断一个程序是否运行成功 (结果是一个界面)

其实这个问题很简单,不管你用什么语言编写程序,尤其是做应用方面的程序,其表现是相同的;对于判定一个程序是否运行成功主要是输入和输出,因为任何程序都要和输入输出打交道,否则程序便没有意义,这里讲的输入和输出是广义的;伴随输入输出,有以下几个方面可以作为判定:
1:明确的输入、输出,比如输入输出数据;
2:进程序列;
3:如有图形界面,当如有图形界面未必表示运行成功;
最后:你需要几个因素综合考虑,你写C语言程序,可以使用调试工具(gdb)跟踪
;写程序需要慢慢积累经验;当然灵感很重要!

‘陆’ 在linux下编程 怎么用C语言画图

ncures 是字符库,显示的图形也是以字符表示,无法真正画图。
,如果你在控制台下画需要使用 libsvga 或 libSDL库。

‘柒’ linux下怎么用C语言开发界面程序

选择1:
去QT的官方网站,里面提供免费下载,主要下载:如果你只用C的话,下载QT图形开发C的编程库,和开发文档(相当于windows的MSDN),如果你用C++的话,就下载QT图形开发C++的编程库,和开发文档.
选择2:
去GTK的官方网站,面里面提供免费下载,主要下载:如果你只用C的话,下载GTK图形开发C的编程库,和开发文档(相当于windows的MSDN),如果你用C++的话,就下载GTK图形开发C++的编程库,和开发文档.
选择3:
如果你需要数据库:去MYSQL的官方网站,面里面提供免费下载,主要下载:如果你只用C的话,下载MYSQL数据库开发C的编程库,和开发文档(相当于windows的MSDN),如果你用C++的话,就下载MYSQL数据库开发C++的编程库,和开发文档

‘捌’ linux C语言编程gcc和qt学哪个好

gcc是一个编译器,qt是一个界面编程工具,两者是不能比的。

linux下编译c程序必然要用到gcc编译器,而qt则是用来开发界面程序的,类似windows下微软的mfc,你要在linux下写程序,必然的要会使用gcc对你的程序进行编译,至于qt只是个基于C++的界面程序开发工具,觉得以后用到就学一下,用不到就算了。

我在和你说一遍,gcc只是一个编译器。
你的意思是linux下的c/c++集成开发环境吧,anjuta,eclipse等等都可以,但他们只是提供了开发环境,编译器还是用的gcc。

‘玖’ Linux中怎么用c/c++做开发可视化程序

一般使用Qt(C++)或者GTK+(C)的库;

1.比如Qt,安装Qt库以及Qt Creator,在Qt Creator中编译以下程序

#include<QApplication>
#include<QMainWindow>

intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
QMainWindow*w=newQMainWindow();
a.setActiveWindow(w);
w->show();

returna.exec();
}

你将看到如下窗口:

#include<gtk/gtk.h>
intmain(intargc,char*argv[])
{
GtkWidget*window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();

return0;
}

编译运行后,你也将看到一个类似的窗口。


几乎linux所有的GUI库都基于X视窗系统中;


在X视窗系统中,X工具包就是一个GUI库,通过函数调用就可以创建按钮菜单等构件,历史上有过很多流行的工具包,比如Motif,OprnLook和Xt,但是他们大部分都已经被GTK+和Qt取代,这两者分别构成了GNOME和KDE桌面的基础。

此外,你还可以选择与平台无关的窗口API,如Java使用的Swing和以前的AWT;C#的mono项目;方便快捷的Tcl/Tk脚本语言;Python以及Perl;

‘拾’ 怎么用linux写c语言

Linux正在成为开发人员的编程天堂,成为开源和免费操作系统。 Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境。 在本文中,我们将解释如何编写,编译和运行一个简单的C程序。 这将成为您迁移到可以在Linux上编写和执行的更复杂和有用的C程序的基础。

我们在Ubuntu 18.04 LTS系统上运行了本文中提到的步骤和命令。

我们将使用Linux命令行工具Terminal,以编译一个简单的C程序。 要打开终端,您可以使用Ubuntu Dash或Ctrl + Alt + T快捷方式。

第1步:安装build-essential软件包

为了编译和执行C程序,您需要在系统上安装必要的软件包。 在Linux终端中以root用户身份输入以下命令:

sudo apt-get install build-essential

系统会要求您输入root用户密码; 安装过程将在此之后开始。 请确保您已连接到互联网。

第2步:编写一个简单的C程序

安装必要的软件包之后,让我们编写一个简单的C程序。

打开Ubuntu的图形文本编辑器,将以下示例程序写入或复制到其中:

#include<stdio.h>

int main()

{

printf("nA sample C program www.linuxidc.comnn");

return 0;

}

然后使用.c扩展名保存文件。 在这个例子中,我将我的C程序命名为linuxidc.c

或者,您可以通过gedit中的终端编写C程序,如下所示:

gedit linuxidc.c

这将创建一个.c文件,您可以在其中编写和保存程序。

第3步:使用gcc编译C程序

在终端中,输入以下命令以生成您编写的程序的可执行版本:

句法:

$ gcc [programName].c -o programName

示例:

$ gcc linuxidc.c -o linuxidc