linux下ui c语言编程,编写的C语言程序,怎么样制作一个UI界面?

c语言制作UI界面需要相关的UI库

如windows操作系统本身就提供了UI的接口

一个简单的示例代码如下

#include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR line,int cmd){ static TCHAR AppName[]=TEXT("99"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hinstance; wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName=NULL; wndclass.lpszClassName=AppName; if(!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("This program requires Windows NT!"),AppName,MB_ICONERROR); return 0; } hwnd=CreateWindow(AppName,TEXT("九九乘法口诀表"),\ WS_OVERLAPPEDWINDOW,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ NULL,\ NULL,\ hinstance,\ NULL); ShowWindow(hwnd,cmd); 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; static x,y; int i,j; int len; TCHAR buf[50]; TEXTMETRIC tm; switch(message) { case WM_CREATE: hdc=GetDC(hwnd); GetTextMetrics(hdc,&tm); x=tm.tmAveCharWidth; y=tm.tmHeight+tm.tmExternalLeading; ReleaseDC(hwnd,hdc); //MessageBox(NULL,TEXT("Create Successed!"),TEXT("Successed"),MB_OK); //PlaySound(TEXT("hello.wav"),NULL,SND_FILENAME|SND_ASYNC); return 0; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); //DrawText(hdc,TEXT("Hello World!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER); //TextOut(hdc,rect.right/2-(strlen("Hello World!")/2)*x,rect.bottom/2-y/2,TEXT("Hello World!"),12); for(i=1;i!=10;++i) { for(j=1;j!=i+1;++j) { len=wsprintf(buf,TEXT("%dx%d=%-4d"),j,i,i*j); TextOut(hdc,j*len*x,i*y,buf,len); } } EndPaint(hwnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd,message,wparam,lparam);}上面是一个打印windows下拥有窗口界面的九九乘法口诀表的c语言程序代码

同样的c语言也会有其它的UI库

比如Gtk,Gtk是可移植的UI库

可以使用它在Linux、windows包括mac等等操作系统上做ui程序设计

一个简单的示例代码如下

#include int main(int argc,char **argv){ GtkWidget *win; GtkWidget *label; int i,j; GString *str; gtk_init(&argc,&argv); win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(win),GTK_WIN_POS_CENTER); g_signal_connect(G_OBJECT(win),"delete-event",G_CALLBACK(gtk_main_quit),NULL); str=g_string_new(NULL); for(i=1;i <= 9;++i) { for(j=1;j != i+1;++j) g_string_append_printf(str,"%dx%d=%-4d",j,i,i*j); g_string_append(str,"\n"); } label=gtk_label_new(str->str); gtk_container_add(GTK_CONTAINER(win),label); gtk_widget_show_all(win); gtk_main(); g_string_free(str,TRUE); return 0;}

取消

评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用自定义卫语句写出更简洁的代码

前言上次&#xff0c;我们介绍了Pitcher,可以帮我们简化卫语句&#xff1a;public User(string name, int age) {Throw.When(string.IsNullOrWhiteSpace(name), new ArgumentNullException(nameof(name)));Throw.When(age < 0, new ArgumentOutOfRangeException(nameof(age)…

Struts2的ResultType和Action处理链

Struts2的ResultType和Action处理链Struts2的结果类型在struts-default.xml中定义了Struts2内置的所有可用的<result-type/> 所有的Struts2结果处理类都要直接或间接的实现com.opensymphony.xwork2.Result接口 在struts-default.xml中的<result-types/>里面&#x…

git fork

http://help.github.com/fork-a-repo/ 概要&#xff1a; 克隆别人的代码库到自己的项目中&#xff0c;可以作为子模块的形式使用&#xff0c;或二次开发 操作流程&#xff1a; 在开源项目中点击fork按钮&#xff0c;稍等一会儿&#xff0c;该项目便会拷贝一份到你的respositori…

转软件开发过程中的各种文档

在项目开发过程中&#xff0c;应该按要求编写好十三种文档&#xff0c;文档编制要求具有  针对性、精确性、清晰性、完整性、灵活性、可追溯性。   ◇ 可行性分析报告&#xff1a;     说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性&#xff0c;评述 …

【ACR2015】依那西普按需维持治疗策略有效抑制RA骨破坏进展

标签: 类风湿关节炎; 依那西普; 药物减停; 复发重治 对RA疾病复发患者, 依那西普按需治疗与持续足剂量治疗是否存在疗效差异&#xff1f; Inui K, et al. ACR 2015. Presentation ID: 477. 背景/目的: 生物DMARDs&#xff08;bDMARDs&#xff09;对RA治疗而言非常重要, 尤其对…

堪称经典!这部由苏联最杰出数学家编写的数学教材,为何能大受推崇?

全世界只有3.14 % 的人关注了爆炸吧知识安德列柯尔莫哥洛夫&#xff0c;20世纪苏联最杰出的数学家&#xff0c;也是20世纪世界上为数极少的几个最有影响的数学家之一。1924年他念大学四年级时就和当时的苏联数学家辛钦一起建立了关于独立随机变量的三级数定理。1928年他得到了随…

浅议NetMQ常见模式和消息加密机制

题图来自https://www.pexels.com/概述在传统企业级开发中&#xff0c;消息队列机制已经成为一种非常常见的技术实现手段&#xff0c;而基于NetMQ则看起来有点像一朵“奇葩”&#xff0c;看起来从名字似乎是一个消息队列&#xff08;Message Quene&#xff09;&#xff0c;但事实…

linux python matplotlib 使用,python绘图工具matplotlib在linux下安装和使用

工具介绍&#xff1a;matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy。它为利用通用的图形用户界面工具包&#xff0c;如Tkinter, wxPython, Qt或GTK向应用程序嵌入式绘图提供了面向对象的应用程序接口(API)。还有一个基于状态机(如开放图形库OpenGL)的程序py…

Struts2的Interceptor和Listener以及Plugin

Struts2的Interceptor和Listener以及PluginStruts2的拦截器在struts-default.xml中定义了很多拦截器&#xff0c;这些拦截器就是用来完成许多强劲功能的保证 而且可以根据已定义的若干拦截器中的某几个拦截器构建成interceptor-stack拦截器栈 其实拦截器栈还可以由拦截器栈组成…

with(nolock)简解

eg&#xff1a;select top 200 from 表A with(nolock) where 条件 为了性能&#xff0c;查询时不锁定表&#xff0c;从而达到提高查询速度的目的。 &#xff08;转&#xff09;SQL中with(nolock)详解 大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其…

CentOS 5.5下搭建部署独立SVN服务器全程详解

SVN服务器有2种运行方式&#xff1a; 1、独立服务器 (例如&#xff1a;svn://xxx.com/xxx)&#xff1b; 2、借助apache (例如&#xff1a;http://svn.xxx.com/xxx)&#xff1b; 为了不依赖apache&#xff0c;我选择第一种方式&#xff1a;独立的svn服务器。SVN存储版本数据也…

35岁成MIT终身教授!北大数学“黄金一代”再获大奖

全世界只有3.14 % 的人关注了爆炸吧知识18岁时满分斩获国际奥林匹克数学竞赛金牌&#xff0c;本科就读北大数院期间19门课程成绩100分、7门99分&#xff0c;35岁成为麻省理工&#xff08;MIT&#xff09;终身教授……近日&#xff0c;数学“大神”恽之玮再获国际大奖——西蒙斯…

二维数组foreach嵌套遍历,判断连续3天以上的算有效数据

2019独角兽企业重金招聘Python工程师标准>>> $studycourseinfo $studycourseinfoModel->where($where)->limit($page->firstRow.,.$page->listRows)->order(create_time asc)->select(); //$studycourseinfos $studycourseinfoModel->where(…

linux mint 用户管理,Linux Mint 新工具:将网站转变为独立的应用

Linux Mint 目前正在积极推进 20.1 版本&#xff0c;日前官方博客介绍了新版本将会带来的一项有意思的新特性&#xff1a;WebApp 管理器。简单来讲&#xff0c;这一特性可以把网站转变成独立的应用&#xff0c;这与基于 Debian 和 Ubuntu 的发行版 Peppermint OS 名为 ICE 的功…

如何评价一个开源项目——协作影响力

本文由X-lab开放实验室博士生赵生宇创作 该篇博客紧跟上一篇关于活跃度的介绍这篇文章系统介绍了一种基于全域开发者协作网络的项目影响力评估方法&#xff0c;该方法对于分析整个开源生态有极大的帮助。在一次性评估出所有项目的协作影响力的同时&#xff0c;也可以对项目的协…

Struts2中的OGNL表达式

基础知识&#xff08;三&#xff09;Struts2中的OGNL表达式浅析值栈ValueStack对象相当于一个栈&#xff0c;它贯穿整个Action的生命周期&#xff0c;每个Action类的对象实例都会拥有一个ValueStack对象 当Struts2接收到一个*.action请求后&#xff0c;并不是直接调用Action方法…

Qt学习资料

QT 相关资源&#xff08;书籍、论坛、博客等。。。&#xff09;整理... 中文名&#xff1a;《提问的智慧》英文名&#xff1a;How To Ask Questions The Smart Way中文链接1&#xff1a;http://www.beiww.com/doc/oss/smart-questions.html中文链接2&#xff1a;http://communi…

UITableView 界面小实例

最近一是很忙&#xff0c;没时间写东西&#xff0c;今天抽时间来总结一下这几天学到的东西 首先看看&#xff0c;程序现在的样子&#xff1a; 基本完成这些&#xff0c;还有一个webview就不截图了 记录一下要点&#xff0c;首先自定义tableview&#xff0c;这个是按照iphone3开…

linux下简单的备份的脚本 2 【转】

转自&#xff1a;http://blog.chinaunix.net/xmlrpc.php?rblog/article&uid26807463&id4577034 之前写过 linux下简单的备份的脚本 &#xff0c; 最开始一直用着&#xff0c; 后来觉得有必要改进下它了&#xff0c; 不管是从操作方式上还是工作方式上。有这样的想法是…

linux 文档属于apache,Apache 安装和使用文档

Apache 安装和使用文档更新时间&#xff1a;2009年11月26日 00:34:37 作者&#xff1a;Apache安装和使用文档一、准备工作&#xff1a;1台PC机&#xff0c;安装linux操作系统 参考文档linux安装.docx2 gcc的安装 参考文档gcc的安装.zip3 apache的安装包httpd-2.0.63.tar.gz二…