当前位置:首页 » 编程软件 » xlib编程

xlib编程

发布时间: 2022-02-09 04:46:52

linux 下怎么画图

1.可以用编写程序中实现画图功能,在linux下一般是基于xlib和opengl的,窗口化部分则是交给qt或gtk

嫌麻烦的话,可以用glut,这个是基于opengl的功能包,功能较简单,适合拿来玩熟原理

Ⅱ (急)VBA程序的建立,编辑和运行方法

VBA概述:VBA是Visual Basic For Application的缩写,是VB在office中的运用。是基于Visual Basic For Windows发展而来的,VB For Windows是Microsoft于1992年推出的开发Windows应用程序的程序设计语言,由于基语法简单,易学易用,所以深受用户的欢迎。而VBA和VB For Windows大体相似。
在Office2000之前,VBA在Word,Excel,Access等Office系统软件中的运用有些有同,但是到Office2000就统一起来了。
Excel是第一个包含有VBA的应用程序,自Office2000以后,Eexel,Word,PowerPoint,Access中已经有了统一标准的宏语言VBA,其中Excel和Access的VBA最为成熟。
在Excel中VBA程序即可以存放有.xls中,也可以单独以文本形式存放。对VBA的学习,用户首先必须VB有一定的了解(不过不必很专业,毕竟经常用Excel的用户一般是办公人员,不可能是专业编程人员),然后结合宏记录器学习。因为,宏记录器可以记录宏,用户可以非常清楚了然VBA的很多知识。另外,如果不是功能很强大的VBA程序,那么用宏记录器就足够了。打开密码记录器的方法,通过“工具->宏->录制新宏”。另外,用户可能用“工具->宏->宏...”来管理宏。用“工具->宏->VB 编辑器”或Alt+F11可以打开VB编辑器,在VB编程器,可以很方便地整个VB工程进行管理,可以方便地编写VBA代码,另外,用户可以再点击Alt+F11切换到Excel窗口。

VBA的使用过程:
1、创建一个Excel文件。
2、创建一个控件,然后双击控件或是右击该控件,点击“查看代码”,就可以对该控件的某个事件,如click,keydown等。
进行编写执行代码了。创建控件的方法是,点击“视图->工具栏->控件工具箱”,打开“控件工具箱”栏,然后就可以直接拖动某个控件到Excel单元格中去。在Excel中窗口,添加的控件一般是处于执行状态的,如果要对这个控件进行编辑,除了第一次建立的时候可以对它进行属性编辑外,打开“控件工具箱”,也可以使控件处于编辑状态,如果还不行,可以再添加一个控件,然后已有的控件绝对会处于编辑状态。当然,对控件修改完毕后,别忘了删除刚才新添加的没有用的控件。在编辑状态中,你可以右击该控件,点击“属性”,那么就可以打开属性窗口,在这个窗口里,你可以很方便的对这个控件的名字,标题,大小等属性进行编辑。
3、手动或用宏记录器对该控件的某个事件进行编码。宏记录器简单易用,不过强大的功能还是必须手动编写VBA。

VBA对象介绍:
编写VBA代码的最关键在于灵活运用VBA对象,对这些VBA对象的属性或方法进行操作。另外,你也可以创建自定义函数,来对某些操作进行封装。既然是VBA,编码风格当然和VB相同,如果会VB,那么只要对VBA的对象比较了解,就可以编写功能强大的VBA程序;同样,如果不会VB,那么,只需要了解VBA的对象就够了,因为它比较简单易学。
以下分别讨论VBA各对象对其属性与方法:

在一些可以包含其他对象的窗口对象中,有几个特殊的属性,其属性值是当前活动对象,对它们,可以直接引用。
表1 一些特殊的属性

对象名 含义
ActiveWorkbook 当前工作簿,即如果你打开了几个Excel文件,那么你当然正在编辑的Excel文件即ActiveWorkbook
ActiveSheet 当前工作簿中的当前工作表,即当前编辑的Excel文件中正在编辑的工作表
ActiveCell 当前工作表中活动单元格
ActiveChart 当前工作簿中的活动图表
Selection 当前被选定的对象

下面详谈各对象及它们的属性和方法

一、Application对象

此对象指Excel应用程序的工作环境。
<一>属性
1.Caption属性
含义:Excel应用程序标题栏显示的文本。
举例:Application.caption=“船员管理系统”,如赋值Empty,则恢复Excel默认的标题栏。
2.Cursor属性
含义:Excel中鼠标的形状。
表2 Cursor属性
属性值 鼠标形状
xlDefault 缺少型值,鼠标呈缺少形状
xlWait 等待型值,鼠标呈不断翻转的沙漏形状
xlNorthwestArrow 箭头型值,鼠标呈标准箭头形状
xlIBeam 文本型值,鼠标呈“I”字形以等待用户输入文本
操作:Application.Cursor=xlWait等。
3、DisplayAlerts属性
含义:用以确定是否显示系统的应用提示和警告信息,如果不想显示,则把些属性设为false,反之亦然。
4、DisplayFormulaBar属性
含义:用以确定是否显示公式编辑栏
5、DisplayScrollBars属性
含义:用以确定是否显示Excel的滚动条
6、DisplayStatusBar属性
含义:用以确定是否显示Excel的状态栏
7、EnableCancelkey属性
含义:用以确定是否允许用户中断正在执行着的VBA程序。缺省情况下,在VBA程序执行过程中,用户按下Ctrl+Break能够中断VBA程序的执行。此时此属性即值为xlInterrupt。若要禁止中断VBA程序,由赋值为xlDisabled;若需要VBA执行过程中遇到错误进中止,由赋值为xlErrorHandler
8、ScreenUpdating属性
含义:用以确定是否显示VBA程序的中间运算结果。
9、StatusBar属性
含义:设置状态栏的文本
10、ActiveWorkbook属性
含义:如表1介绍。
11、ActiveSheet
含义:如表1介绍。
12、ActiveCell属性
含义:如表1介绍。
13、ThisWorkBook属性
含义:用以返回正在执行着VBA程序所在的工作簿对象。这不是当前工作簿。例如有多个工作簿打开时,ActiveWorkbook属性返回当前工作簿对象,ThisWorkbook返回正在运行着VBA程序所在工作簿对象。
14、PathSeparator属性
含义:返回文件文件路径分隔符“\”,该属性是一个只读属性。
举例:Dim strPath as String
strPath=Application.ThisWorkbook.Path&Application.PathSeperator
Workbooks.Open strPath&"myExcel.xls"
15、UserName属性
含义:设置当前用户名称。缺省用户是由Excel选项对话框的“常规”选项卡中“用户姓名”决定的。用户可以从“工具”菜单中选择“选项”命令来打开选项并在“常规”选项卡的“用户姓名”文本框中重新设置缺省的用户名称。
<二>方法
1、Calculate方法
含义:对Excel打开的工作簿中所有的公式进行重新计算。
2、Goto方法
含义:选择工作簿中的一个Range对象或一个VBA过程,格式如下:
Application.Goto Reference,Scroll
Reference参数表示Goto方法的目的地,Scroll参数若为True,滚动条滚动以使Range对象出现在工作簿窗口左上角,为False,当前工作簿窗口不属性变化。缺省值为Galse
举例:Application.Goto Range("C3"),True
3、InputBox方法
含义:用于打开一个输入对话框,允许用户输入数据。格式如下:
Application.InputBox(prompt,title,left,top,helpFile,helpContextID,type)
prompt参数 用于设置输入对话框的提示信息
title参数 用于设置输入对话框的标题文字
default参数 用于设置输入对话框的缺省输入值
left和top参数 用于设置输入对话框左上角的坐标值
helpFile参数 用于设置输入对话框在线帮助的名称
helpContextID参数 用于设置输入对话框在线帮助主题的上下文标识号
type参数 用于设置输入对话框输入数据的类型。缺省情况下,为文本型
举例:UserValue=Application.InputBox("请输入数据","数据输入",Type:=7)
4、Onkey方法
含义:按下某个或组合键时执行一段VBA代码。自己尝试一下就知道了,也可看一下VB编辑器的提示(即输入Applicatio.Onkey后,VB编辑器弹出的下拉提示。
二、Workbooks对象集
当前所有打开的工作簿对象的集合
<一>属性
1、Count属性,只读,返回Excel打开的工作簿数
<二>方法
1、Add方法,向工作簿对象集中一个新的工作簿,相当于“文件->新建”命令。格式如下:
Workbooks.Add Template
2、Open方法,打开一个指定的工作簿。格式看一下VBA编辑器中的提示就行,太累了,不想写得这么全。
3、Close方法,关闭一个工作簿文件
三、Workbook对象
代表一个独立的工作簿文件
<一>属性
1、ActiveSheet属性,返回当前工作簿中的活动工作表对象
2、Author属性,返回或设定工作簿的作者姓名,由此确定工作簿的所有者
3、Saved属性,用于瓢工作簿文件是否做过修改。
<二>方法
1、Activate方法,用于霜一个工作簿为当前活动工作簿,如,Workbooks("myOffice.xls").Activate
2、Close方法,用于关闭指定的工作簿
3、Save方法,用于保存指定的工作簿
4、SaveAs方法,用于另存为指定的工作簿
四、Worksheets对象集
代表当前工作簿所有的工作表(Worksheet)的集合。
<一>属性
1、Count属性,返回当前工作簿中的的工作表的数量
<二>方法
1、Add方法,向工作表对象集中添加一个新的工作表对象,格式如下:
Worksheets.Add Before,After,Count,Type
Before和After参数指哪一个工作表之前或之后插入新工作表。取值为Worksheet
如:Worksheets.Add Before:=Worksheets("Sheet2"),则相当于在Sheet2工作表之前插入了一个新的工作表
五、Worksheet对象
代表工作簿一个独立的工作表。
获取某个工作表,可以用Worksheets("办公费用"),也可以用Worksheets(3)之类的语句
<一>属性
1、Name属性,设置或返回工作表对象的名称
2、Visible属性,确定是否隐藏某个工作表
<二>方法
1、Calculate法,对指定的工作表中的所有公式进行重新计算
2、Copy方法,用于复制指定的工作表,并放置在指定的位置,实际是一个复制与粘贴并重的函数,
格式:Worksheet-Object.Copy Before,After
如Worksheet("Sheet2").Copy After:=Worksheets("办公费用"),相当于把Sheet2工作表复制,并把它放置在名为“办公费用”的工作表之后
3、Move方法,移动指定的工作表并放置在指定的位置,用户同Copy方法,区别只天于复制与剪切之不同
4、Delete方法,无参数删除指定的工作表,如Worksheet("Sheet2").Delete
5、Cell方法,获取指定工作表指定行列的某个单元格
格式:Worksheet-Object.Cells(Row,Col),Row,Col为整型,行列值都从1开始
如Worksheet("Sheet2").Cell(1,1),相当于获取Sheet2工作表的第一行第一列的单元格
五、Range对象
代表一个半桥区域,可以由多个半桥组成,也可是由一个单元格组成。
引用单元格可用以下两种方法:
一是使用单元格引用,如Range("A1"),Range("A1:C3")
二是使用单元格区域名称,如Range("myRange")。
<一>属性
1、FormulaR1C1属性,为指定的单元格或单元格区域建立和存储公式,
如Range("C5").FormulaR1C1="=SUM(R[-4]C:R[-1]C)"
2、Value属性,为指定的单元格或单元格区域赋值,如为多个单元格,则都赋为同样的值
3、Cell属性,以指定的单元格为苦战来描述被引用的单元格,把指定的单元格视为第1行第1列
格式:Range-Object.Cells(Row,Col)
4、Offset,以指定的单元格为苦战来描述被引用的单元格,把指定的单元格视为第0行第0列
格式:Range-Object.Cells(Row,Col)
5、Name属性,返回或设定指定的单元格或单元格区域的名称,然后在VBA中,可以直接用名称为引用它
6、Count属性,返回指定的单元格区域中包含的单元格的数目,只读
7、CurrentRegion属性,返回以某个单元格为基点的存储有数据的一个连结的单元格区域
<二>方法
1、Select方法方法,用于选择指定的单元格区域,执行后,该单元格区域左上角的第一个单元格成为活动单元格
如Range("A1:C3").Select,Range("A1:C3,D5:E6,A8:E8).Select
2、Activate方法,用于选择指定的单元格并指定其成为活动单元格,当然只有该单元格区域左上角的第一个单元格成为活动单元格。
3、AutoFit方法,调整选定的单元格区域所在行和列的行高与列宽,使其行高与列宽自动设定的最佳的高度与宽度。
如:Range("A4").CurrentRegion.Select
Selection.Rows.AutoFit
4、Clear方法,清除指定的单元格区域的内容,格式和批注,相当于“编辑->清除->全部”
如:Range("A4:C5").Clear
5、ClearContents方法,清除指定的单元格区域的内容,相当于“编辑->清除->内容”
6、ClearFormats方法,清除指定的单元格区域的内容,相当于“编辑->清除->格式”
7、ClearComments和ClearNotes方法,清除指定的单元格区域的内容,相当于“编辑->清除->批注”
8、Copy方法,将指定单元格区域中的数据库复制到剪贴板或指定的目的单元格区域中
9、Cut方法,将指定单元格区域中的数据库剪切到剪贴板或指定的目的单元格区域中
10、PasteSpecial方法,用于将剪贴板中复制或剪切下来的单元格区域中的数据库有选择地粘贴到指定的目的单元格区域中
格式:Range-Object.PasteSpecial Paste,Operation,ShipBlanks,Transpose
Paste参数规定了选择体积类型的数据进行粘贴,如公式,内容,批注等,具体取值可参考VB编辑器中的提示
回答者: shuhua0715 - 进士出身

Ⅲ 这种情况下怎么写makefile:

不知道你说的是不是linux下的编程,贴一个给你参考
OMSSRC=$(OMSDIR)/source

OMSOBJDIR=$(OMSDIR)/obj
OMSBINDIR=$(OMSDIR)/bin

LIBRARY_Esql=$(INFORMIXDIR)/lib
LIBRARY_ESQLC= $(INFORMIXDIR)/lib/esql

INFXLIB_SCO= \
$(LIBRARY_ESQL)/libixasf.so \
$(LIBRARY_ESQL)/libnetstub.so \
$(LIBRARY_ESQLC)/checkapi.o \
$(LIBRARY_ESQLC)/igens07a.so \
$(LIBRARY_ESQLC)/iosls07a.so \
$(LIBRARY_ESQLC)/libixgen.so \
$(LIBRARY_ESQLC)/libixsql.so \
$(LIBRARY_ESQLC)/libixos.so \
$(LIBRARY_ESQLC)/libixgls.so \
$(LIBRARY_ESQLC)/libixglx.so
INFXLIB_AIX= -L$(LIBRARY_ESQL) -L$(LIBRARY_ESQLC) -lifsql -lifasf -lifgen -lifos -lifgls -lc -ldl -lcrypt /home/informix/lib/esql/checkapi.o -lifglx
## $(LIBRARY_ESQLC)/libixsqlshr.a \
## $(LIBRARY_ESQLC)/libixgenshr.a \
## $(LIBRARY_ESQLC)/libixosshr.a
##INFORMIX_LIB=$(INFXLIB_AIX)
INFORMIX_LIB=

UNIXLIB_SCO=-lsocket -lcurses -lpthread -lm -lrt
UNIXLIB_AIX=-lcurses -lpthread -lm -lrt
UNIX_LIB=$(UNIXLIB_AIX)

PACK_SCO=-c -O -Zp1
PACK_AIX=-c -O -qalign=packed -qcpluscmt
PACK_ARG=$(PACK_AIX)

POWER_SCO=-c -O -Zp4
POWER_AIX=-c -O -qalign=power -qcpluscmt
POWER_ARG=$(POWER_AIX)

OMSLIB=$(OMSDIR)/lib/omscomlib.a

LIBRARY_ALL= $(INFORMIX_LIB) $(UNIX_LIB) \
$(OMSLIB)

OMSINCL= -I$(OMSDIR)/incl
INCLUDEDIR= $(OMSINCL)

CFLAGS_PACK=$(PACK_ARG) $(INCLUDEDIR)
CFLAGS_POWER=$(POWER_ARG) $(INCLUDEDIR)

.SUFFIXES:
.SUFFIXES: .o .exe .bin .cbl .ec .c

.c.o:
cc $(CFLAGS_POWER) $<
mv $@ $(OMSOBJDIR)/.
.ec.o:
esql $(CFLAGS_POWER) $<
rm $*.c
mv $@ $(OMSOBJDIR)/.
.c.exe:
make $*.o
cc -o $(OMSBINDIR)/$* \
$(OMSOBJDIR)/$*.o \
$(LIBRARY_ALL)
.c.bin:
cc -o $(OMSBINDIR)/$* \
$(OMSOBJDIR)/$*.o \
$(LIBRARY_ALL)
.ec.exe:
make $*.o
cc -o $(OMSBINDIR)/$* \
$(OMSOBJDIR)/$*.o \
$(LIBRARY_ALL)
####################### Dependencies List ####################################
all: osobj \
lib

osobj:
make md5.o
make omsframe.o
lib:
rm -f $(OMSLIB)
ar vq $(OMSLIB) \
$(OMSOBJDIR)/md5.o \
$(OMSOBJDIR)/omsframe.o
chmod g+w $(OMSLIB)

Ⅳ Qt是什么学习嵌入式会学到这个吗

qt主要被嵌入式工程用来开发上层软件,图形界面

Ⅳ 现在用c语言编写图形界面程序(软件)都用什么编译环境(工具)

在Windows 操作系统中编写图形用户界面,一般都用 Visual C++(包括 Visual Studio 中的 Visual C++)。如果像楼主所说的,要用C语言,那只能用 Windows API 函数了。如果还允许C++语言,那么还可以用MFC(当然也可以用 Windows API 函数)。
当然,也可以不用微软的库,比如说用Qt之类的库。

==========================================================

在Linux操作系统中编写图形用户界面,就用gcc编译器加上Xlib库或者gtk库或者Qt库。如果允许使用C++语言,那可以用g++编译器,上面三个库都可以用,另外还可以用wxWidgets库。

Ⅵ callback是什么意思

回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。

这一设计允许了底层代码调用在高层定义的子程序。

回调的用途十分广泛。例如,假设有一个函数,其功能为读取配置文件并由文件内容设置对应的选项。

若这些选项由散列值所标记,则让这个函数接受一个回调会使得程序设计更加灵活:函数的调用者可以使用所希望的散列算法,该算法由一个将选项名转变为散列值的回调函数实现;因此,回调允许函数调用者在运行时调整原始函数的行为。

回调的另一种用途在于处理信号或者类似物。例如一个POSIX程序可能在收到SIGTERM信号时不愿立即终止;为了保证一切运行良好,该程序可以将清理函数注册为SIGTERM信号对应的回调。

回调亦可以用于控制一个函数是否作为:Xlib允许自定义的谓词用于决定程序是否希望处理特定的事件。

有两种类型的回调,它们在运行时控制数据流的方式不同:阻塞回调(也称为同步回调或仅回调)和延迟回调(也称为异步回调)。

在函数返回之前调用阻塞回调(在下面的 C 示例中,它说明了阻塞回调,它是函数main),则可以在函数返回后调用延迟回调。延迟回调通常用于 I/O 操作或事件处理的上下文中,并且在多个线程的情况下由中断或不同的线程调用。

由于其性质,阻塞回调可以在没有中断或多线程的情况下工作,这意味着阻塞回调通常不用于同步或将工作委托给另一个线程。

回调用于在窗口系统中对应用程序进行编程。在这种情况下,应用程序提供(引用)一个特定的自定义回调函数供操作系统调用,然后操作系统调用此特定于应用程序的函数以响应鼠标单击或按键等事件。

这里的一个主要问题是权限和安全性的管理:虽然该函数是从操作系统调用的,但它不应以与系统相同的权限运行。这个问题的解决方案是使用保护环。

回调函数在实际中有许多作用。

假设有这样一种情况:我们要编写一个库,它提供了某些排序算法的实现(如冒泡排序、快速排序、shell排序、shake排序等等),为了能让库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑。

回调可用于通知机制。例如,有时要在A程序中设置一个计时器,每到一定时间,A程序会得到相应的通知,但通知机制的实现者对A程序一无所知。

那么,就需一个具有特定原型的函数指针进行回调,通知A程序事件已经发生。实际上,API使用一个回调函数SetTimer来通知A程序。如果没有提供回调函数,它还会把一个消息发往程序的消息队列。

另一个使用回调机制的API函数是EnumWindow,它枚举屏幕上所有的顶层窗口,每个窗口都可以通过它调用另一个程序提供的函数,并传递窗口的处理程序。例如:如果被调用者返回一个值,就继续进行迭代;否则,退出。

EnumWindow并不关心被调用者在何处,也不关心被调用者用它传递的处理程序做了什么,它只关心返回值,因为基于返回值,它将继续执行或退出。

C语言的回调函数只能通过函数指针实现,在C++中则可以使用匿名函数(lambda)或仿函数(functor)作为回调函数。

Ⅶ 为什么编程那么难

这个行业的确是很难学的~~
否则那么好学不都是bill了~~呵呵!!

你叫白痴弟弟???字幕组的?学编程比做字幕要难许多。。

数据结构一定要学好。。不要听50573750 - 高级经理 六级 !!!他乱说

什么C++/C都是语言!!都是外功!!!只有数据结构和算法才识王道。。。。

听我的~~好好学这门!!

祝你好运!!!

Ⅷ 我想知道QT和QT/E的区别在哪里,要能图片,顺便问下,我要讲演qt编程,是讲程序吗还是介绍qt就行

QT/E是经过交叉编译的 可以跨平台移植到ARM中运行

Ⅸ C语言(DevC)中有类似于matlab中imshow的函数或库吗能将一个矩阵按像素点显示出来图像,不知勿扰,谢谢

你可以试试 koolplot 可以支持Dev Cpp的
绘制函数图像的2D图形库
http://koolplot.codecutter.org/

需要有 WinBGIm (Borland BGI Graphics emulation ,模仿turbo c 的graphics 库)
http://winbgim.codecutter.org/

Ⅹ 谁有xlib编程开发的中文电子文档

//XButton.c

#include
#include
main()
{
Display *d;
Window w, wb;
XEvent event;
Font f;
GC gc;
d = XOpenDisplay( NULL );
w = XCreateSimpleWindow( d, RootWindow( d, 0 ),
180, 50,
260, 160,
1, WhitePixel(d, 0), BlackPixel(d, 0) );
XSelectInput( d, w, ExposureMask|ButtonPressMask );

wb = XCreateSimpleWindow( d, w,
20, 20,
100, 20,
1, WhitePixel(d, 0), BlackPixel(d, 0) );

XSelectInput( d, wb, ExposureMask|ButtonPressMask );

gc = XCreateGC( d, w, 0, 0 );
f = XLoadFont( d, "fixed" );
XSetFont( d, gc, f );
XMapWindow( d, w );
XMapWindow( d, wb );
XFlush( d );

while( 1 ){
XNextEvent( d, &event );
switch( event.type ){

case Expose:
if ( event.xany.window == wb ){
XSetForeground( d, gc, BlackPixel(d, 0) );
XFillRectangle( d, w, gc, 0, 0, 260, 160 );
XSetForeground( d, gc, WhitePixel(d, 0) );
XDrawString( d, wb, gc, 10, 10, "push", 4 );//把push换成中文例如”确 //定”?????为什么编译完后,执行,不能出现中文
}
break;

case ButtonPress:
if ( event.xany.window == w ){
printf( "w " );
fflush( stdout );
}
if ( event.xany.window == wb ){
printf( "wb ");
fflush( stdout );
}
break;
}
}
}

热点内容
androiddecoder 发布:2025-01-11 05:44:13 浏览:730
苏州数控编程培训 发布:2025-01-11 05:42:51 浏览:855
编程控制小船 发布:2025-01-11 05:35:05 浏览:756
萤石云清理缓存 发布:2025-01-11 05:34:29 浏览:779
怎么在电脑上传照片 发布:2025-01-11 05:30:20 浏览:487
python3哪个版本好 发布:2025-01-11 05:07:29 浏览:864
手机怎么访问外网 发布:2025-01-11 05:07:27 浏览:532
财务信息服务器搭建 发布:2025-01-11 04:48:09 浏览:875
算法实现过程 发布:2025-01-11 04:43:45 浏览:458
瞄准下载ftp 发布:2025-01-11 04:43:44 浏览:573