养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

易语言利用代码凭空创建窗口

时间:2024-10-19 17:45:58

大家都知道,易语言可艮劁飨戽以通过直接创建Windows窗口来创建,当然,我们也可以利用代码来创建,今天小编就来教大家如何利用代码创建一个窗口。

<砖镑苣逢/p>

因为是用代码,所以我就不需要Windows窗口程序了,创建一个Windows控制台程序就行了。

易语言利用代码凭空创建窗口

首先复制以下命令到DLL命令表中,我们需要用到这些API。

==========DLL命令==========

.版本2

.DLL命令CreateWindowEx,整数型,"user32","CreateWindowExA",,建立窗口

.参数dwExStyle,整数型

.参数lpClassName,文本型

.参数lpWindowName,文本型

.参数dwStyle,整数型

.参数x,整数型

.参数y,整数型

.参数nWidth,整数型

.参数nHeight,整数型

.参数hWndParent,整数型

.参数hMenu,整数型

.参数hInstance,整数型

.参数lpParam,整数型

.DLL命令RegisterClassEx,整数型,"user32","RegisterClassExA"

.参数pcWndClassEx,WNDCLASSEX

.DLL命令ShowWindow,整数型,"user32","ShowWindow",,控制窗口的可见性(在vb里使用:针对vb窗体及控件,请使用对应的vb属性)如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零)

.参数hwnd,整数型,,窗口句柄,要向这个窗口应用由nCmdShow指定的命令

.参数nCmdShow,整数型,,为窗口指定可视性方面的一个命令。请用下述任何一个常数;SW_HIDE:隐藏窗口,活动状态给令一个窗口;SW_MINIMIZE:最小化窗口,活动状态给令一个窗口;SW_RESTORE:用原来的大小和位置显示一个窗口,同时令其进入活动状态;SW_SHOW:用当前的大小和位置显示一个窗口,同时令其进入活动状态;SW_SHOWMAXIMIZED:最大化窗口,并将其激活;SW_SHOWMINIMIZED:最小化窗口,并将其激活;SW_SHOWMINNOACTIVE:最小化一个窗口,同时不改变活动窗口;SW_SHOWNA:用当前的大小和位置显示一个窗口,不改变活动窗口;SW_SHOWNOACTIVATE:用最近的大小和位置显示一个窗口,同时不改变活动窗口;SW_SHOWNORMAL:与SW_RESTORE相同;

.DLL命令UpdateWindow,整数型,"user32","UpdateWindow",,强制立即更新窗口,窗口中以前屏蔽的所有区域都会重画(在vb里使用:如vb窗体或控件的任何部分需要更新,可考虑直接使用refresh方法非零表示成功,零表示失败

.参数hwnd,整数型,,欲更新窗口的句柄;

.DLL命令GetModuleHandle,整数型,"kernel32","GetModuleHandleA",,获取一个应用程序或动态链接库的模块句柄如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError

.参数lpModuleName,文本型,,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;

.DLL命令DefWindowProc,整数型,"user32","DefWindowProcA",,调用缺省窗口过程

.参数hwnd,整数型

.参数wMsg,整数型

.参数wParam,整数型

.参数lParam,整数型

.DLL命令DispatchMessage,整数型,"user32","DispatchMessageA",,向窗口发送消息

.参数lpMsg,MSG

.DLL命令GetMessage,整数型,"user32","GetMessageA",,从线索消息队列中返回一条消息

.参数lpMsg,MSG

.参数hwnd,整数型

.参数wMsgFilterMin,整数型

.参数wMsgFilterMax,整数型

.DLL命令TranslateMessage,整数型,"user32","TranslateMessage",,转换虚拟关键字消息

.参数lpMsg,MSG

.DLL命令LoadCursor,整数型,"user32","LoadCursorA",,从指定的模块或应用程序实例中载入一个鼠标指针。LoadCursorBynum是LoadCursor函数的类型安全声明执行成功则返回已载入的指针的句柄;零表示失败。在Windows;95和Win16环境中,这个函数只能载入标准尺寸的图标

.参数实例句柄,整数型,,一个DLL的模块句柄;或者一个实例句柄,指定包含了鼠标指针的可执行程序

.参数鼠标指针标识,整数型,,作为一个字串,指定欲载入的指针资源。作为一个长整数值,指定欲载入的资源ID;或者设置一个常数,代表某幅固有系统指针。如装载的是一个固有系统指针,注意hInstance参数应设为零。在api32.txt文件中以前缀IDC_作为标志;

.DLL命令LoadIcon,整数型,"user32","LoadIconA",,从指定的模块或应用程序实例中载入一个图标。其中,LoadIconBynum是LoadIcon函数的类型安全声明执行成功则返回已载入的图标的句柄;零表示失败。会设置GetLastError

.参数实例句柄,整数型

.参数图标标识,整数型

.DLL命令PostQuitMessage,,"user32","PostQuitMessage",,通知WINDOWS线索将中断

.参数nExitCode,整数型

==========DLL命令==========

易语言利用代码凭空创建窗口

返回程序集,粘贴如下代码到代码编辑区。

==========代码==========

.版本2

.局部变量窗口类,WNDCLASSEX

.局部变量NULL,文本型

.局部变量窗口类名,文本型

.局部变量消息,MSG

.局部变量窗口句柄,整数型

.局部变量窗口样式,整数型

窗口类名=“MyWindowClass”

'下面的代码填写窗口类的“注册表格”

窗口类.cbSize=48'要指定整个结构所占的字节数,必须

窗口类.style=位或(#CS_HREDRAW,#CS_VREDRAW,#CS_DBLCLKS)

窗口类.hInstance=GetModuleHandle(NULL)'取当前应用程序的实例句柄。

'上面这句也可以这样:

'窗口类.hInstance=GetModuleHandle(取执行文件名())

'!!注意:LoadIcon和LoadCursor的两个函数的参数都改成了整数型。

窗口类.hIcon=LoadIcon(窗口类.hInstance,129)'易语言EXE文件的图标标号为129

窗口类.hCursor=LoadCursor(0,#IDC_ARROW)

窗口类.hbrBackground=#COLOR_BTNFACE+1'也可以使用其他的Color常量,注意在后面要+1。

窗口类.lpszClassName=窗口类名

窗口类.lpfnWndProc=&窗口函数

'注册表填写好了之后,进行注册登记窗口类。

.如果真(RegisterClassEx(窗口类)=0)

信息框(“注册窗口类失败!”,#错误图标,)

返回(1)

.如果真结束

'窗口类注册成功了就可以创建窗口了。

窗口样式=位或(#WS_CAPTION,#WS_SYSMENU,#WS_OVERLAPPED,#WS_THICKFRAME,#WS_MAXIMIZEBOX,#WS_MINIMIZEBOX)

窗口句柄=CreateWindowEx(0,窗口类名,“《易精经》例程-白手起家,凭空创建窗口”,窗口样式,#CW_USEDEFAULT,#CW_USEDEFAULT,400,240,0,0,窗口类.hInstance,0)

.如果真(窗口句柄=0)

信息框(“创建窗口失败!”,#错误图标,)

返回(1)

.如果真结束

'将窗口显示出来。

ShowWindow(窗口句柄,#SW_SHOWNORMAL)

UpdateWindow(窗口句柄)

'下面就是消息循环

'当GetMessage函数发现消息的消息值为WM_QUIT的时候,就返回0,从而退出循环。

.判断循环首(GetMessage(消息,0,0,0)≠0)

TranslateMessage(消息)

DispatchMessage(消息)

.判断循环尾()

返回(消息.wParam)

.子程序窗口函数,整数型,,这是窗口过程,用来处理窗口消息

.参数hWnd,整数型,,窗口句柄

.参数uMsg,整数型,,消息值

.参数wParam,整数型,,参数一

.参数lParam,整数型,,参数二

.局部变量x

.局部变量y

.判断开始(uMsg=#WM_DESTROY)

PostQuitMessage(0)'将WM_QUIT消息放入消息队列中,这样GetMessage收到WM_QUIT消息时就会返回0,从而退出消息循环

返回(0)

.默认

.判断结束

返回(DefWindowProc(hWnd,uMsg,wParam,lParam))'其他的消息通通交给DefWindowProc函数处理。

==========代码==========

易语言利用代码凭空创建窗口

再粘贴如下代码到数据类型区。

==========代码==========

.版本2

.数据类型WNDCLASSEX

.成员cbSize,整数型

.成员style,整数型

.成员lpfnWndProc,子程序指针,,,'<<<<注意这里要改成子程序指针类型

.成员cbClsExtra,整数型

.成员cbWndExtra,整数型

.成员hInstance,整数型

.成员hIcon,整数型

.成员hCursor,整数型

.成员hbrBackground,整数型

.成员lpszMenuName,文本型

.成员lpszClassName,文本型

.成员hIconSm,整数型

.数据类型MSG

.成员hwnd,整数型

.成员message,整数型

.成员wParam,整数型

.成员lParam,整数型

.成员time,整数型

.成员pt,POINTAPI

.数据类型POINTAPI

.成员横向位置,整数型

.成员纵向位置,整数型

==========代码==========

易语言利用代码凭空创建窗口

最后粘贴如下常量到常量中。

==========代码==========

.版本2

.常量CW_USEDEFAULT,"2147483648"

.常量SW_SHOWNORMAL,"1"

.常量CS_HREDRAW,"2"

.常量CS_VREDRAW,"1"

.常量WS_CAPTION,"12582912"

.常量WS_MAXIMIZEBOX,"65536"

.常量WS_MINIMIZEBOX,"131072"

.常量WS_OVERLAPPED,"0"

.常量WS_SYSMENU,"524288"

.常量WS_THICKFRAME,"262144"

.常量IDC_ARROW,"32512"

.常量COLOR_WINDOW,"5"

.常量WM_DESTROY,"2"

.常量COLOR_BTNFACE,"15"

.常量WM_CLOSE,"16",,当一个窗口或应用程序要关闭时发送一个信号

.常量CS_DBLCLKS,"8"

.常量WM_LBUTTONDBLCLK,"515",,//双击鼠标左键

.常量WM_LBUTTONDOWN,"513",,//按下鼠标左键

.常量WM_LBUTTONUP,"514",,//释放鼠标左键

.常量WM_MOUSEMOVE,"512",,//移动鼠标

==========代码==========

易语言利用代码凭空创建窗口

最后调试运行一下,窗口就成功创建了。

易语言利用代码凭空创建窗口

© 一点知识