为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

易语言API创建文本型按钮

三叶资源网 2019-04-23 17:07:25 易语言例程 2741 ℃ 1 评论

易语言API创建文本型按钮

@叼丝爱打撸啊撸

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口, , , ' 本源码来自三叶资源网(www.sanye.cx)
.程序集变量 IDC_1, 整数型
.程序集变量 menuID, 整数型
.程序集变量 oldMenuID, 整数型

.子程序 __启动窗口_创建完毕, , , ' 本源码来自三叶资源网(www.sanye.cx)

IDC_1 = 1
SetTime (, , 10)

.子程序 窗口绘制字体, 逻辑型, , 绘制主窗口
.参数 hWnd, 整数型, 可空, 0 绘制给自己 1绘制给指定窗口句柄
.局部变量 hdc, 整数型, , , 建立设备DC
.局部变量 hPen, 整数型, , , 创建画笔
.局部变量 hFont, 整数型, , , 创建字体
.局部变量 hBrush, 整数型, , , 创建画刷
.局部变量 menu, menu
.局部变量 TextOutA, 整数型
.局部变量 i, 整数型
.局部变量 lf, LOGFONT
.局部变量 文本, 文本型, , "4"
.局部变量 待分割的文本, 文本型, , "0"

lf.字体高度 = 25
lf.字体宽度 = 12
lf.加粗 = 900
lf.内码 = 130
lf.新字体名 = “仿宋”
.如果 (是否为空 (hWnd))
    hWnd = _启动窗口.取窗口句柄 ()
.否则
    hWnd = hWnd + 0
.如果结束
hdc = GetDC (hWnd)
hPen = CreatePen (#PS_SOLID, 4, 取颜色值 (0, 0, 255))
hFont = CreateFontIndirect (lf)
hBrush = CreateSolidBrush (取颜色值 (0, 0, 255))  ' 用纯色创建一个刷子

SelectObject (hdc, hPen)
SelectObject (hdc, hFont)
SelectObject (hdc, hBrush)
SetBkMode (hdc, #TRANSPARENT)
SetBkColor (hdc, 取颜色值 (0, 0, 0))
SetTextCharacterExtra (hdc, 3)
SetTextColor (hdc, 取颜色值 (255, 151, 29))  ' 文本颜色
menu.szName = “开始游戏”  ' ▲▼●○▽△
menu.nCount = menu.szName
menu.xPos = 369  ' 宽度 ÷ 2 - 设置字体 ().字体高度 - 设置字体 ().字体宽度
menu.ypos = 200  ' 高度 ÷ 2 - 设置字体 ().字体高度 ÷ 2 - 设置字体 ().字体宽度

TextOuts (hdc, menu.xPos, menu.ypos + 0 × 40, menu.szName, lstrlen (menu.nCount))
TextOuts (hdc, menu.xPos, menu.ypos + 1 × 40, “游戏设置”, lstrlen (menu.nCount))
TextOuts (hdc, menu.xPos, menu.ypos + 2 × 40, “查看攻略”, lstrlen (menu.nCount))
TextOuts (hdc, menu.xPos, menu.ypos + 3 × 40, “结束游戏”, lstrlen (menu.nCount))

' 调试输出 (LineTo (hdc, 矩形 ().右边 - 矩形 ().左边 - 顶边 ÷ 2 + 85, 矩形 ().底边 - 矩形 ().顶边 - 40))
DeleteObject (hPen)
DeleteObject (hFont)
DeleteObject (hBrush)
.如果真 (TextOutA = 1)
    返回 (真)
.如果真结束
返回 (假)

.子程序 TextOuts, , , 文本绘图
.参数 hdc, 整数型
.参数 xPos, 整数型
.参数 ypos, 整数型
.参数 szName, 文本型
.参数 nCount, 整数型

TextOut (hdc, xPos, ypos, szName, nCount)  ' 本源码来自三叶资源网(www.sanye.cx)

.子程序 矩形, RECT, , 取矩形大小
.局部变量 re, RECT

GetWindowRect (取窗口句柄 (), re)
返回 (re)

.子程序 SetTime, 整数型, , 时钟开始
.参数 hWnd, 整数型, 可空
.参数 IDEvent, 整数型, 可空, 为计时器设置一个ID
.参数 lapse, 整数型, 可空, 多少毫秒执行一次
.局部变量 s, 整数型

.如果真 (是否为空 (hWnd) 或 hWnd = 0)
    s = SetTimer (取窗口句柄 (), IDEvent, lapse, &DrawSelectedMenu)
    .如果真 (s > 0)
        返回 (1)
    .如果真结束

.如果真结束
SetTimer (hWnd, IDEvent, lapse, &DrawSelectedMenu)
返回 (0)

.子程序 StopTime, 整数型, , 停止时钟
.参数 hWnd, 整数型, 可空
.参数 IDEvent, 整数型, 可空
.局部变量 s, 整数型

.如果真 (是否为空 (hWnd) 或 hWnd = 0)
    返回 (KillTimer (取窗口句柄 (), IDEvent))
.如果真结束
.如果真 (hWnd > 0)  ' 本源码来自三叶资源网(www.sanye.cx)
    KillTimer (hWnd, IDEvent)
.如果真结束
返回 (0)

.子程序 DealMouseMove, 整数型, , 判断鼠标是否在按钮上
.参数 hwnd, 整数型
.局部变量 pt, POINTAPI

GetCursorPos (pt)
ScreenToClient (hwnd, pt)
' 调试输出 (pt.x, pt.y)
' * 200
' * 240
' * 320
' * 440
.判断开始 (pt.x < 360)
    返回 (0)
.判断 (pt.x > 460)
    返回 (0)
.判断 (pt.y < 190)
    返回 (0)
.判断 (pt.y > 440)
    返回 (0)
.默认

.判断结束
.判断开始 (pt.y > 200 且 pt.y < 220)  ' 返回位置1,2,3,4,分别代表4个按钮
    返回 (1)
.判断 (pt.y > 240 且 pt.y < 260)
    返回 (2)
.判断 (pt.y > 285 且 pt.y < 300)
    返回 (3)
.判断 (pt.y > 310 且 pt.y < 345)
    返回 (4)
.默认
    返回 (0)
.判断结束


.子程序 DrawSelectedMenu, 整数型, , 获取按钮ID
.局部变量 hwnd, 整数型

' menuID,oldMenuID 为全局变量,用以保存
' 处理鼠标悬停
hwnd = 取窗口句柄 ()
menuID = DealMouseMove (hwnd)
调试输出 (menuID)
.如果真 (menuID ≠ oldMenuID 且 menuID > 0)
    ' menuID = menuID - 1
    oldMenuID = menuID
    DrawBlackText (hwnd, menuID)
    返回 (oldMenuID)
.如果真结束
creatmenu2 (hwnd, menuID)
返回 (0)

.子程序 __启动窗口_将被销毁, , , 停止时钟

StopTime (0, IDC_1)

.子程序 creatmenu2, , , 如果 = 0  则重置
.参数 hWnd, 整数型, 可空, 0 绘制给自己 1绘制给指定窗口句柄
.参数 i, 整数型, 可空
.局部变量 hdc, 整数型, , , 建立设备DC
.局部变量 hPen, 整数型, , , 创建画笔
.局部变量 hFont, 整数型, , , 创建字体
.局部变量 hBrush, 整数型, , , 创建画刷
.局部变量 menu, menu
.局部变量 TextOutA, 整数型
.局部变量 lf, LOGFONT

lf.字体高度 = 25
lf.字体宽度 = 12
lf.加粗 = 900
lf.内码 = 130
lf.新字体名 = “仿宋”
.如果 (是否为空 (hWnd))
    hWnd = _启动窗口.取窗口句柄 ()
.否则
    hWnd = hWnd + 0  ' 本源码来自三叶资源网(www.sanye.cx)
.如果结束
hdc = GetDC (hWnd)
hPen = CreatePen (#PS_SOLID, 4, 取颜色值 (0, 0, 255))
hFont = CreateFontIndirect (lf)
hBrush = CreateSolidBrush (取颜色值 (0, 0, 255))  ' 用纯色创建一个刷子
SelectObject (hdc, hPen)
SelectObject (hdc, hFont)
SelectObject (hdc, hBrush)
SetBkMode (hdc, #TRANSPARENT)
SetBkColor (hdc, 取颜色值 (0, 0, 0))
SetTextCharacterExtra (hdc, 3)
SetTextColor (hdc, 取颜色值 (255, 151, 29))
menu.szName = “开始游戏”  ' ▲▼●○▽△
menu.nCount = menu.szName
menu.xPos = 369  ' 宽度 ÷ 2 - 设置字体 ().字体高度 - 设置字体 ().字体宽度
menu.ypos = 200  ' 高度 ÷ 2 - 设置字体 ().字体高度 ÷ 2 - 设置字体 ().字体宽度

' 本源码来自三叶资源网(www.sanye.cx)
.如果真 (i ≠ 1)
    TextOuts (hdc, menu.xPos, menu.ypos + 0 × 40, menu.szName, lstrlen (menu.nCount))
.如果真结束
.如果真 (i ≠ 2)
    TextOuts (hdc, menu.xPos, menu.ypos + 1 × 40, “游戏设置”, lstrlen (menu.nCount))
.如果真结束
.如果真 (i ≠ 3)
    TextOuts (hdc, menu.xPos, menu.ypos + 2 × 40, “查看攻略”, lstrlen (menu.nCount))
.如果真结束
.如果真 (i ≠ 4)
    TextOuts (hdc, menu.xPos, menu.ypos + 3 × 40, “结束游戏”, lstrlen (menu.nCount))
.如果真结束

' 本源码来自三叶资源网(www.sanye.cx)

DeleteObject (hPen)
DeleteObject (hFont)
DeleteObject (hBrush)


.子程序 DrawBlackText, , , 如果 > 0   则执行对应操作
.参数 hWnd, 整数型, 可空, 0 绘制给自己 1绘制给指定窗口句柄
.参数 i, 整数型, 可空
.局部变量 hdc, 整数型, , , 建立设备DC
.局部变量 hPen, 整数型, , , 创建画笔
.局部变量 hFont, 整数型, , , 创建字体
.局部变量 hBrush, 整数型, , , 创建画刷
.局部变量 menu, menu
.局部变量 TextOutA, 整数型
.局部变量 lf, LOGFONT

lf.字体高度 = 25
lf.字体宽度 = 12
lf.加粗 = 900
lf.内码 = 130
lf.新字体名 = “仿宋”
.如果 (是否为空 (hWnd))
    hWnd = _启动窗口.取窗口句柄 ()
.否则
    hWnd = hWnd + 0
.如果结束
hdc = GetDC (hWnd)
hPen = CreatePen (#PS_SOLID, 4, 取颜色值 (0, 0, 255))
hFont = CreateFontIndirect (lf)
hBrush = CreateSolidBrush (取颜色值 (0, 0, 255))  ' 用纯色创建一个刷子
SelectObject (hdc, hPen)
SelectObject (hdc, hFont)
SelectObject (hdc, hBrush)
SetBkMode (hdc, #TRANSPARENT)
SetBkColor (hdc, 取颜色值 (0, 0, 0))
SetTextCharacterExtra (hdc, 3)
SetTextColor (hdc, 取颜色值 (85, 217, 138))
menu.szName = “开始游戏”  ' ▲▼●○▽△
menu.nCount = menu.szName
menu.xPos = 369  ' 宽度 ÷ 2 - 设置字体 ().字体高度 - 设置字体 ().字体宽度
menu.ypos = 200  ' 高度 ÷ 2 - 设置字体 ().字体高度 ÷ 2 - 设置字体 ().字体宽度
.如果真 (i = 1)
    TextOuts (hdc, menu.xPos, menu.ypos + 0 × 40, menu.szName, lstrlen (menu.nCount))
.如果真结束
.如果真 (i = 2)
    TextOuts (hdc, menu.xPos, menu.ypos + 1 × 40, “游戏设置”, lstrlen (menu.nCount))
.如果真结束
.如果真 (i = 3)
    TextOuts (hdc, menu.xPos, menu.ypos + 2 × 40, “查看攻略”, lstrlen (menu.nCount))
.如果真结束
.如果真 (i = 4)
    TextOuts (hdc, menu.xPos, menu.ypos + 3 × 40, “结束游戏”, lstrlen (menu.nCount))
.如果真结束
DeleteObject (hPen)
DeleteObject (hFont)
DeleteObject (hBrush)




.子程序 _时钟1_周期事件, , , 开始绘制

.如果真 (取窗口句柄 () > 0)
    窗口绘制字体 ()
    时钟1.时钟周期 = 0
.如果真结束
文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有1位网友发表了看法:

  • 易语言

    易语言  评论于 [2020-06-06 00:26:51]  回复

    文本按钮 易语言

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
淘宝宝贝列表分页源码压缩解压加群链接无限长度文件分割器下载器极速文件分割类MCI指令文件编码检测快手did获取CreateMutexA实时监控易代码编辑框贪玩蓝月网易云音乐播放器防撤回sign算法缓动算法美丽约哈罗单车
最新评论