递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 98|回复: 2
打印 上一主题 下一主题

[视窗] 窗口句柄类

[复制链接]

110

主题

1113

帖子

5971

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5971
跳转到指定楼层
楼主
发表于 昨天 05:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小蜗牛 于 2025-11-4 23:24 编辑

采用别名封装 可以平替 变整数 的窗口句柄.封装了我个人觉得比较常用的..
没有做测试~

这样一看,火山的设计是不是很优秀?不需要自己记住那么多的API啥的...
但是做的就一言难尽...

可以自己把界面库的 取窗口句柄() 返回值改成: 窗口句柄类或者新增 取窗口句柄2 ()
即可这样调用:  取窗口句柄 ().闪烁 ()
简单方便~

没有过多测试.请熟知~

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 系统保留窗口消息 <公开 注释 = "AI生成的,不保证准确性" 折叠 @常量类 = 整数>
  3. {

  4.     # ✅ 标准窗口消息(WM_ 开头)

  5.     常量 空 <公开 值 = 0x0000 注释 = "NULL 消息,无操作">
  6.     常量 创建 <公开 值 = 0x0001 注释 = "WM_CREATE:窗口刚创建,尚未显示">
  7.     常量 即将被销毁 <公开 值 = 0x0002 注释 = "WM_DESTROY:窗口即将被销毁">
  8.     常量 移动 <公开 值 = 0x0003 注释 = "WM_MOVE:窗口位置改变;LOWORD(lParam)=x, HIWORD(lParam)=y">
  9.     常量 大小改变 <公开 值 = 0x0005 注释 = "WM_SIZE:窗口大小改变;wParam=SIZE_*, LOWORD(lParam)=宽, HIWORD(lParam)=高">
  10.     常量 激活 <公开 值 = 0x0006 注释 = "WM_ACTIVATE:窗口获得或失去激活;wParam=WA_ACTIVE/WA_INACTIVE">
  11.     常量 设置焦点 <公开 值 = 0x0007 注释 = "WM_SETFOCUS:窗口获得输入焦点">
  12.     常量 失去焦点 <公开 值 = 0x0008 注释 = "WM_KILLFOCUS:窗口失去输入焦点">
  13.     常量 重绘 <公开 值 = 0x000F 注释 = "WM_PAINT:窗口需要重绘">
  14.     常量 关闭 <公开 值 = 0x0010 注释 = "WM_CLOSE:用户请求关闭窗口(如点击×或Alt+F4)">
  15.     常量 退出 <公开 值 = 0x0012 注释 = "WM_QUIT:退出消息循环,由PostQuitMessage发送">
  16.     常量 擦背景 <公开 值 = 0x0014 注释 = "WM_ERASEBKGND:擦除窗口背景">
  17.     常量 查询结束会话 <公开 值 = 0x0011 注释 = "WM_QUERYENDSESSION:系统即将关机或注销">
  18.     常量 结束会话 <公开 值 = 0x0016 注释 = "WM_ENDSESSION:系统结束会话(关机/注销)">
  19.     常量 显示窗口 <公开 值 = 0x0018 注释 = "WM_SHOWWINDOW:窗口即将显示或隐藏">
  20.     常量 启用 <公开 值 = 0x000A 注释 = "WM_ENABLE:窗口启用状态改变">
  21.     常量 设置重绘 <公开 值 = 0x000B 注释 = "WM_SETREDRAW:允许/禁止窗口重绘">
  22.     常量 设置文本 <公开 值 = 0x000C 注释 = "WM_SETTEXT:设置窗口文本">
  23.     常量 获取文本 <公开 值 = 0x000D 注释 = "WM_GETTEXT:获取窗口文本">
  24.     常量 文本长度 <公开 值 = 0x000E 注释 = "WM_GETTEXTLENGTH:获取窗口文本长度">
  25.     常量 系统命令 <公开 值 = 0x0112 注释 = "WM_SYSCOMMAND:系统菜单命令(如移动、最小化等)">
  26.     常量 初始化对话框 <公开 值 = 0x0110 注释 = "WM_INITDIALOG:对话框初始化">
  27.     常量 命令 <公开 值 = 0x0111 注释 = "WM_COMMAND:菜单项、加速键或控件通知">
  28.     常量 通知 <公开 值 = 0x004E 注释 = "WM_NOTIFY:高级控件通知,lParam 指向 NMHDR">
  29.     常量 定时器 <公开 值 = 0x0113 注释 = "WM_TIMER:定时器触发">
  30.     常量 滚动 <公开 值 = 0x0115 注释 = "WM_VSCROLL:垂直滚动条事件">
  31.     常量 横向滚动 <公开 值 = 0x0114 注释 = "WM_HSCROLL:水平滚动条事件">
  32.     常量 复制数据 <公开 值 = 0x004A 注释 = "WM_COPYDATA:跨进程传递数据">
  33.     常量 拖放文件 <公开 值 = 0x0233 注释 = "WM_DROPFILES:文件拖放到窗口">
  34.     常量 电源 <公开 值 = 0x0218 注释 = "WM_POWERBROADCAST:电源状态改变(如电池、睡眠)">
  35.     常量 设备改变 <公开 值 = 0x0219 注释 = "WM_DEVICECHANGE:设备插入/移除">
  36.     常量 窗口位置改变 <公开 值 = 0x0047 注释 = "WM_WINDOWPOSCHANGED:窗口位置或Z序改变后">
  37.     常量 移动前 <公开 值 = 0x0046 注释 = "WM_WINDOWPOSCHANGING:窗口位置即将改变">
  38.     常量 设置光标 <公开 值 = 0x0020 注释 = "WM_SETCURSOR:设置光标形状">
  39.     常量 鼠标激活 <公开 值 = 0x0021 注释 = "WM_MOUSEACTIVATE:鼠标点击非活动窗口时激活">
  40.     常量 获取最小最大信息 <公开 值 = 0x0024 注释 = "WM_GETMINMAXINFO:获取窗口最小/最大尺寸限制">
  41.     常量 样式改变 <公开 值 = 0x007D 注释 = "WM_STYLECHANGED:窗口样式已改变">
  42.     常量 样式即将改变 <公开 值 = 0x007C 注释 = "WM_STYLECHANGING:窗口样式即将改变">
  43.     常量 设置图标 <公开 值 = 0x0080 注释 = "WM_SETICON:设置窗口大/小图标">
  44.     常量 获取图标 <公开 值 = 0x007F 注释 = "WM_GETICON:获取窗口图标">
  45.     常量 非客户区计算 <公开 值 = 0x0083 注释 = "WM_NCCALCSIZE:计算非客户区大小">
  46.     常量 非客户区绘制 <公开 值 = 0x0085 注释 = "WM_NCPAINT:绘制非客户区(如边框、标题栏)">
  47.     常量 非客户区按下 <公开 值 = 0x00A1 注释 = "WM_NCLBUTTONDOWN:非客户区左键按下">
  48.     常量 非客户区释放 <公开 值 = 0x00A2 注释 = "WM_NCLBUTTONUP:非客户区左键释放">
  49.     常量 非客户区双击 <公开 值 = 0x00A3 注释 = "WM_NCLBUTTONDBLCLK:非客户区左键双击">
  50.     常量 取消模式 <公开 值 = 0x001F 注释 = "WM_CANCELMODE:取消模态状态(如菜单、滚动条拖动)">
  51.     常量 设置消息结果 <公开 值 = 0x0038 注释 = "WM_SETMESSAGERESULT:设置消息返回值(用于对话框)">
  52.     常量 查询拖动图标 <公开 值 = 0x0049 注释 = "WM_QUERYDRAGICON:查询是否允许拖动窗口图标">
  53.     常量 捕获改变 <公开 值 = 0x0215 注释 = "WM_CAPTURECHANGED:鼠标捕获权变更">
  54.     常量 移动中 <公开 值 = 0x0232 注释 = "WM_MOVING:窗口正在被移动(可调整位置)">
  55.     常量 大小调整中 <公开 值 = 0x0231 注释 = "WM_SIZING:窗口正在被调整大小(可限制尺寸)">
  56.     常量 输入语言请求 <公开 值 = 0x0050 注释 = "WM_INPUTLANGCHANGEREQUEST:请求切换输入语言">
  57.     常量 输入语言改变 <公开 值 = 0x0051 注释 = "WM_INPUTLANGCHANGE:输入语言已改变">
  58.     常量 鼠标悬停 <公开 值 = 0x02A1 注释 = "WM_MOUSEHOVER:鼠标悬停(需TrackMouseEvent)">
  59.     常量 鼠标离开 <公开 值 = 0x02A3 注释 = "WM_MOUSELEAVE:鼠标离开窗口(需TrackMouseEvent)">
  60.     常量 热键 <公开 值 = 0x0312 注释 = "WM_HOTKEY:注册的全局热键被按下">
  61.     常量 主题改变 <公开 值 = 0x031A 注释 = "WM_THEMECHANGED:系统主题或视觉样式改变">
  62.     常量 桌面合成改变 <公开 值 = 0x0362 注释 = "WM_DWMCOMPOSITIONCHANGED:DWM 启用/禁用">
  63.     常量 桌面配色改变 <公开 值 = 0x0320 注释 = "WM_DWMCOLORIZATIONCOLORCHANGED:DWM 强调色改变">
  64.     常量 非客户区渲染改变 <公开 值 = 0x031F 注释 = "WM_DWMNCRENDERINGCHANGED:DWM 非客户区渲染方式改变">
  65.     常量 打印 <公开 值 = 0x0317 注释 = "WM_PRINT:要求窗口绘制到指定DC(用于打印/截图)">
  66.     常量 打印客户区 <公开 值 = 0x0318 注释 = "WM_PRINTCLIENT:仅绘制客户区到指定DC">
  67.     常量 字体改变 <公开 值 = 0x0029 注释 = "WM_FONTCHANGE:系统字体已改变">
  68.     常量 设置字体 <公开 值 = 0x0030 注释 = "WM_SETFONT:设置控件字体">
  69.     常量 获取字体 <公开 值 = 0x0031 注释 = "WM_GETFONT:获取控件当前字体">
  70.     常量 调色板改变 <公开 值 = 0x0311 注释 = "WM_PALETTECHANGED:另一个窗口改变了调色板">
  71.     常量 查询新调色板 <公开 值 = 0x030F 注释 = "WM_QUERYNEWPALETTE:窗口即将激活,询问是否使用新调色板">

  72.     # ✅ 键盘与鼠标输入消息

  73.     常量 按键按下 <公开 值 = 0x0100 注释 = "WM_KEYDOWN:非系统键按下">
  74.     常量 按键释放 <公开 值 = 0x0101 注释 = "WM_KEYUP:非系统键释放">
  75.     常量 输入字符 <公开 值 = 0x0102 注释 = "WM_CHAR:可打印字符输入(由WM_KEYDOWN转换)">
  76.     常量 死字符 <公开 值 = 0x0103 注释 = "WM_DEADCHAR:死键字符">
  77.     常量 系统按键按下 <公开 值 = 0x0104 注释 = "WM_SYSKEYDOWN:Alt+键 或 F10 等系统键按下">
  78.     常量 系统按键释放 <公开 值 = 0x0105 注释 = "WM_SYSKEYUP:系统键释放">
  79.     常量 系统字符 <公开 值 = 0x0106 注释 = "WM_SYSCHAR:系统键产生的字符">
  80.     常量 系统死字符 <公开 值 = 0x0107 注释 = "WM_SYSDEADCHAR:系统死键字符">
  81.     常量 鼠标移动 <公开 值 = 0x0200 注释 = "WM_MOUSEMOVE:鼠标在窗口内移动">
  82.     常量 左键按下 <公开 值 = 0x0201 注释 = "WM_LBUTTONDOWN">
  83.     常量 左键释放 <公开 值 = 0x0202 注释 = "WM_LBUTTONUP">
  84.     常量 左键双击 <公开 值 = 0x0203 注释 = "WM_LBUTTONDBLCLK">
  85.     常量 右键按下 <公开 值 = 0x0204 注释 = "WM_RBUTTONDOWN">
  86.     常量 右键释放 <公开 值 = 0x0205 注释 = "WM_RBUTTONUP">
  87.     常量 滚轮 <公开 值 = 0x020A 注释 = "WM_MOUSEWHEEL:鼠标滚轮滚动;wParam=按键状态, HIWORD(zDelta)">

  88.     # ✅ 菜单相关消息

  89.     常量 初始化菜单 <公开 值 = 0x0116 注释 = "WM_INITMENU:菜单即将显示">
  90.     常量 初始化菜单弹出框 <公开 值 = 0x0117 注释 = "WM_INITMENUPOPUP:弹出菜单即将显示">
  91.     常量 菜单选择 <公开 值 = 0x011F 注释 = "WM_MENUSELECT:菜单项被选中或取消">
  92.     常量 菜单命令 <公开 值 = 0x0126 注释 = "WM_MENUCOMMAND:菜单命令(扩展)">
  93.     常量 上下文菜单 <公开 值 = 0x007B 注释 = "WM_CONTEXTMENU:请求上下文菜单(通常右键)">
  94.     常量 进入菜单模式 <公开 值 = 0x0211 注释 = "WM_ENTERMENULOOP:进入菜单模态循环">
  95.     常量 退出菜单模式 <公开 值 = 0x0125 注释 = "WM_EXITMENULOOP:退出菜单模态循环">

  96.     #
  97. }

  98. 类 窗口扩展样式 <公开 注释 = "AI生成的,不保证准确性" 折叠 @常量类 = 整数>
  99. {
  100.     常量 窗口透明 <公开 值 = 0x00000020 注释 = "WS_EX_LAYERED 窗口透明">
  101.     常量 置顶 <公开 值 = 0x00000008 注释 = "WS_EX_TOPMOST 总在最前">
  102.     常量 工具窗口 <公开 值 = 0x00000080 注释 = "WS_EX_TOOLWINDOW 工具栏小窗">
  103.     常量 接受文件拖放 <公开 值 = 0x00000010 注释 = "WS_EX_ACCEPTFILES 接受文件拖放">
  104.     常量 应用窗口 <公开 值 = 0x00040000 注释 = "WS_EX_APPWINDOW 任务栏显示">
  105.     常量 左对齐 <公开 值 = 0x00000000 注释 = "WS_EX_LEFT 默认左对齐">
  106.     常量 右对齐 <公开 值 = 0x00002000 注释 = "WS_EX_RIGHT 右对齐">
  107.     常量 从左到右阅读 <公开 值 = 0x00000000 注释 = "WS_EX_LTRREADING 从左到右阅读">
  108.     常量 从右到左阅读 <公开 值 = 0x00002000 注释 = "WS_EX_RTLREADING 从右到左阅读">
  109.     常量 左滚动条 <公开 值 = 0x00004000 注释 = "WS_EX_LEFTSCROLLBAR 滚动条在左侧">
  110.     常量 右滚动条 <公开 值 = 0x00000000 注释 = "WS_EX_RIGHTSCROLLBAR 默认右侧滚动条">
  111.     常量 静态边缘 <公开 值 = 0x00020000 注释 = "WS_EX_STATICEDGE 静态边框">
  112.     常量 客户端边缘 <公开 值 = 0x00000200 注释 = "WS_EX_CLIENTEDGE 客户区凹陷边框">
  113.     常量 窗口边缘 <公开 值 = 0x00000100 注释 = "WS_EX_WINDOWEDGE 窗口凸起边框">
  114.     常量 控制父窗口 <公开 值 = 0x00010000 注释 = "WS_EX_CONTROLPARENT 允许遍历子控件">
  115.     常量 上下文帮助 <公开 值 = 0x00000400 注释 = "WS_EX_CONTEXTHELP 标题栏问号帮助">
  116.     常量 复合层 <公开 值 = 0x00000200 注释 = "WS_EX_COMPOSITED 双缓冲减少闪烁">
  117.     常量 水平滚动条 <公开 值 = 0x00010000 注释 = "WS_EX_HSCROLL 水平滚动条">
  118.     常量 垂直滚动条 <公开 值 = 0x00020000 注释 = "WS_EX_VSCROLL 垂直滚动条">
  119.     常量 对话框模态框 <公开 值 = 0x00000001 注释 = "WS_EX_DLGMODALFRAME 对话框模态边框">
  120.     常量 无父窗口 <公开 值 = 0x00040000 注释 = "WS_EX_NOPARENTNOTIFY 不通知父窗口">
  121.     常量 重叠窗口 <公开 值 = 0x00000000 注释 = "WS_EX_OVERLAPPEDWINDOW 重叠窗口样式组合">
  122.     常量 调色板窗口 <公开 值 = 0x00080000 注释 = "WS_EX_PALETTEWINDOW 调色板窗口样式组合">
  123.     常量 分层 <公开 值 = 0x00080000 注释 = "WS_EX_LAYERED 分层窗口透明/色键">
  124.     常量 鼠标透传 <公开 值 = 0x00000020 注释 = "WS_EX_TRANSPARENT 鼠标透传">
  125.     常量 MDI子窗口 <公开 值 = 0x00000040 注释 = "WS_EX_MDICHILD MDI 子窗口">

  126.     #
  127. }

  128. 类 窗口句柄类 <公开 注释 = "by: 小蜗牛" 注释 = "可以平替 变整数 的窗口句柄." 注释 = "可以操作其它进程的窗口,也可以操作自己进程的~" 折叠 @别名 = "HWND"
  129.         @别名类型 = 本地整数基本类型 @有效值范围 = "0">
  130. {
  131.     常量 MAX_PATH <类型 = 整数 值 = @MAX_PATH 注释 = "编译器所支持的最长全路径名的长度">

  132.     方法 子类化回调模板 <静态 类型 = 变整数 折叠>
  133.     参数 窗口句柄 <类型 = 窗口句柄类>
  134.     参数 消息 <类型 = 系统保留窗口消息 注释 = "如果是用户数据,或者常量里没有,可以自己转为整数 去判断!">
  135.     参数 WPARAM <类型 = 变整数>
  136.     参数 LPARAM <类型 = 变整数>
  137.     {
  138.         变量 返回值 <类型 = 整数>
  139.         变量 原先的函数 <类型 = 变整数 注释 = "必须要赋值! 子类化窗口() 的返回值">
  140.         原先的函数 = 窗口句柄.取用户数据 ()  // 只是演示用法..需要自己设置才能获取到哦~

  141.         返回 (窗口句柄.调用原窗口过程 (原先的函数, 消息, WPARAM, LPARAM))
  142.     }

  143.     方法 子类化窗口 <公开 静态 类型 = 变整数 注释 = "替换窗口过程: HOOK,高级功能" 注释 = "可以用属性表,在回调函数里使用哦~~"
  144.             返回值注释 = "返回之前的函数地址~在回调中,务必使用此返回值,再使用后,必须还原回去!" 折叠 @嵌入式方法 = "">
  145.     参数 当前对象 <类型 = 窗口句柄类>
  146.     参数 替换函数 <注释 = "提供所欲执行的线程函数" @匹配方法 = "子类化回调模板">
  147.     {
  148.         @ (INT_P)SetWindowLongPtr (@<当前对象>, GWLP_WNDPROC, (LONG_PTR)&@<替换函数>)
  149.     }

  150.     方法 调用原窗口过程 <公开 静态 类型 = 变整数 注释 = "高级功能, 将消息信息传递给指定的窗口过程。" 折叠 @嵌入式方法 = "">
  151.     参数 窗口句柄 <类型 = 窗口句柄类>
  152.     参数 函数地址 <类型 = 变整数 注释 = "子类化窗口() 的返回值">
  153.     参数 消息 <类型 = 系统保留窗口消息>
  154.     参数 参数1 <类型 = 变整数>
  155.     参数 参数2 <类型 = 变整数>
  156.     {
  157.         @ (INT_P)CallWindowProc ((WNDPROC)@<函数地址>, @<窗口句柄>, (UINT)@<消息>, (WPARAM)@<参数1>, (LPARAM)@<参数2>)
  158.     }

  159.     方法 发送消息_超时 <公开 静态 类型 = 变整数 注释 = "高级功能, 同步把消息发到指定窗口(或广播到所有顶层窗口),但最多等 uTimeout 毫秒**;"
  160.             注释 = "时间一到或对方线程“卡死”,函数立即返回,避免自己也被挂死。" 返回值注释 = "如果函数失败或超时,则返回值为 0。" 折叠 @嵌入式方法 = "">
  161.     参数 当前对象 <类型 = 窗口句柄类>
  162.     参数 消息 <类型 = 系统保留窗口消息 注释 = "如果没有,自己强转">
  163.     参数 wParam <类型 = 变整数>
  164.     参数 lParam <类型 = 变整数>
  165.     参数 行为标志 <类型 = 整数 注释 = "可以自己 连续位或() 来组合~" 注释 = "默认为: SMTO_ABORTIFHUNG | SMTO_BLOCK"
  166.             注释 = "0x0000=等待时可处理本线程其他非队列消息。               SMTO_NORMAL"
  167.             注释 = "0x0001=阻塞本线程,等待期间不处理任何其他消息。          SMTO_BLOCK"
  168.             注释 = "0x0002=若接收线程已“挂起”,立即返回,不等待。          SMTO_ABORTIFHUNG"
  169.             注释 = "0x0008=只要对方未挂起,就不强制超时,一直等下去。        SMTO_NOTIMEOUTIFNOTHUNG"
  170.             注释 = "0x0020=窗口被销毁或线程死亡时返回 0 并设 ERROR_SUCCESS。 SMTO_ERRORONEXIT" @默认值 = 3>
  171.     参数 超时 <类型 = 整数 注释 = "超时期限的持续时间(以毫秒为单位)。 如果消息是广播消息,则每个窗口都可以使用全职超时期限。"
  172.             注释 = "例如,如果指定了 5 秒超时期限,并且有三个无法处理消息的顶级窗口,则最多可以延迟 15 秒。">
  173.     参数 接收消息处理结果 <类型 = 变整数 注释 = "可选;接收消息处理结果" @默认值 = 0>
  174.     {
  175.         @ (INT_P)SendMessageTimeout (@<当前对象>, (INT)@<消息>, (WPARAM)@<wParam>, (LPARAM)@<lParam>, (INT)@<行为标志>, @<超时>, (PDWORD_PTR)@<接收消息处理结果>)
  176.     }

  177.     方法 发送消息 <公开 静态 类型 = 变整数 注释 = "高级功能~" 折叠 @嵌入式方法 = "">
  178.     参数 当前对象 <类型 = 窗口句柄类>
  179.     参数 消息 <类型 = 系统保留窗口消息 注释 = "如果没有,自己强转">
  180.     参数 wParam <类型 = 变整数>
  181.     参数 lParam <类型 = 变整数>
  182.     {
  183.         @ (INT_P)SendMessage (@<当前对象>, (INT)@<消息>,(WPARAM)@<wParam>,(LPARAM)@<lParam>)
  184.     }

  185.     方法 投递消息 <公开 静态 类型 = 变整数 注释 = "高级功能~" 折叠 @嵌入式方法 = "">
  186.     参数 当前对象 <类型 = 窗口句柄类>
  187.     参数 消息 <类型 = 系统保留窗口消息 注释 = "如果没有,自己强转">
  188.     参数 wParam <类型 = 变整数>
  189.     参数 lParam <类型 = 变整数>
  190.     {
  191.         @ (INT_P)PostMessage (@<当前对象>, (INT)@<消息>,(WPARAM)@<wParam>,(LPARAM)@<lParam>)
  192.     }

  193.     方法 置父 <公开 静态 类型 = 窗口句柄类 返回值注释 = "返回前一个父窗口句柄!" 折叠 @嵌入式方法 = "">
  194.     参数 当前对象 <类型 = 窗口句柄类>
  195.     参数 父窗口句柄 <类型 = 窗口句柄类>
  196.     {
  197.         @ SetParent (@<当前对象>, @<父窗口句柄>)
  198.     }

  199.     方法 是否有效 <公开 静态 类型 = 逻辑型 注释 = "判断一个窗口句柄是否有效" 折叠 @嵌入式方法 = "">
  200.     参数 当前对象 <类型 = 窗口句柄类>
  201.     {
  202.         @ IsWindow (@<当前对象>)
  203.     }

  204.     方法 取DPI <公开 静态 类型 = 整数 注释 = "需要 Win10 1607+,失败返回0" 注释 = "计算DPI放大: @<所欲使用尺寸值> * @<DPI> / 96"
  205.             注释 = "计算DPI缩小: @<所欲使用尺寸值> * 96 / @<DPI>" 返回值注释 = "返回 96/120/144/192 等,做高 DPI 缩放必备。" 折叠>
  206.     参数 当前对象 <类型 = 窗口句柄类>
  207.     {
  208.         变量 回调函数 <类型 = 变整数>
  209.         变量 DPI <类型 = 整数>
  210.         回调函数 = 取DLL函数地址 ("User32.dll", "GetDpiForWindow")
  211.         如果 (回调函数 != 0)
  212.         {
  213.             DPI = 调用静态方法 (回调函数, 整数, 当前对象)
  214.         }
  215.         返回 (DPI)
  216.     }

  217.     方法 取DLL函数地址 <静态 类型 = 变整数 折叠 @嵌入式方法 = "">
  218.     参数 DLL <类型 = 文本型 注释 = "ntdll.dll">
  219.     参数 函数名称 <类型 = 文本型 @需求类型 = 立即数或常量>
  220.     {
  221.         @ (INT_P)GetProcAddress (GetModuleHandleW (@<DLL>.GetText()), &R@sn<quot>(@pvpt<函数名称>)@sn<quot>[0])
  222.     }

  223.     方法 "//隐藏" <公开 静态 类型 = 逻辑型 注释 = "隐藏窗口" 折叠 @嵌入式方法 = "">
  224.     参数 当前对象 <类型 = 窗口句柄类>
  225.     {
  226.         @ ShowWindow (@<当前对象>, SW_HIDE)
  227.     }

  228.     方法 显示 <公开 静态 类型 = 逻辑型 注释 = "显示窗口" 折叠 @嵌入式方法 = "">
  229.     参数 当前对象 <类型 = 窗口句柄类>
  230.     参数 是否显示 <类型 = 逻辑型 @默认值 = 真>
  231.     {
  232.         @ ShowWindow (@<当前对象>, @<是否显示> ? SW_SHOW : SW_HIDE)
  233.     }

  234.     方法 最小化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  235.     参数 当前对象 <类型 = 窗口句柄类 注释 = "窗口句柄">
  236.     {
  237.         @ (BOOL)ShowWindow(@<当前对象>, SW_MINIMIZE)
  238.     }

  239.     方法 最大化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  240.     参数 当前对象 <类型 = 窗口句柄类 注释 = "窗口句柄">
  241.     {
  242.         @ (BOOL)ShowWindow(@<当前对象>, SW_MAXIMIZE)
  243.     }

  244.     方法 是否最大化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  245.     参数 当前对象 <类型 = 窗口句柄类>
  246.     {
  247.         @ IsZoomed (@<当前对象>)
  248.     }

  249.     方法 是否最小化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  250.     参数 当前对象 <类型 = 窗口句柄类>
  251.     {
  252.         @ IsIconic (@<当前对象>)
  253.     }

  254.     方法 取消最小化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  255.     参数 当前对象 <类型 = 窗口句柄类>
  256.     {
  257.         @ OpenIcon((HWND)@<当前对象>)
  258.     }

  259.     方法 取消最大化 <公开 静态 类型 = 逻辑型 注释 = "顾名思义" 折叠 @嵌入式方法 = "">
  260.     参数 当前对象 <类型 = 窗口句柄类>
  261.     {
  262.         @ (BOOL)ShowWindow((HWND)@<当前对象>, SW_RESTORE)
  263.     }

  264.     方法 取类名 <公开 静态 类型 = 文本型 折叠>
  265.     参数 当前对象 <类型 = 窗口句柄类>
  266.     {
  267.         变量 类名 <类型 = "字符 [260]">
  268.         @ GetClassName (@<当前对象>, @<类名>, NUM_ELEMENTS_OF (@<类名>));
  269.         返回 (字符数组到文本 (类名, 取数组成员数 (类名)))
  270.     }

  271.     方法 取进程ID <公开 静态 类型 = 整数 注释 = "获取窗口的进程ID" 折叠>
  272.     参数 当前对象 <类型 = 窗口句柄类>
  273.     {
  274.         变量 进程ID <类型 = 整数>
  275.         变量 线程标识符 <类型 = 整数 注释 = "如果函数成功,则返回值是创建窗口的线程的标识符。 如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。">
  276.         @ @<线程标识符> = (INT)GetWindowThreadProcessId ((HWND)@<当前对象>, (LPDWORD)&@<进程ID>);
  277.         如果 (线程标识符 == 0)
  278.         {
  279.             返回 (0)
  280.         }
  281.         返回 (进程ID)
  282.     }

  283.     方法 取线程ID <公开 静态 类型 = 整数 注释 = "获取窗口所属的线程ID" 折叠 @嵌入式方法 = "">
  284.     参数 当前对象 <类型 = 窗口句柄类>
  285.     {
  286.         @ GetWindowThreadProcessId (@<当前对象>, NULL)
  287.     }

  288.     方法 激活窗口 <公开 静态 类型 = 逻辑型 @嵌入式方法 = "">
  289.     参数 当前对象 <类型 = 窗口句柄类>
  290.     {
  291.         @ SetForegroundWindow (@<当前对象>)
  292.     }

  293.     方法 枚举子窗口 <公开 静态 类型 = 变整数数组类 注释 = "自己强制转换后使用~懒得再新建一个类了" 注释 = "仅枚举指定父窗口下面的整个子窗口树" 返回值注释 = "窗口句柄类 数组" 折叠>
  294.     参数 当前对象 <类型 = 窗口句柄类>
  295.     {
  296.         变量 返回子窗口句柄数组 <类型 = 变整数数组类>
  297.         变量 回调函数 <类型 = 变整数>
  298.         返回子窗口句柄数组.删除所有成员 ()
  299.         回调函数 = 取静态方法地址 (__窗口枚举过程)
  300.         @ EnumChildWindows (@<当前对象>, (WNDENUMPROC)@<回调函数>, &@<返回子窗口句柄数组>);
  301.         返回 (返回子窗口句柄数组)
  302.     }

  303.     方法 __窗口枚举过程 <静态 类型 = 逻辑型 折叠>
  304.     参数 hWnd <类型 = 变整数>
  305.     参数 lParam <类型 = 变整数>
  306.     {
  307.         如果 (hWnd != 0)
  308.         {
  309.             读指针处对象 (lParam, 变整数数组类).加入成员 (hWnd)
  310.             返回 (真)
  311.         }
  312.         返回 (假)
  313.     }

  314.     方法 移动 <公开 静态 类型 = 逻辑型 注释 = "移动窗口或者组件" 折叠>
  315.     参数 当前对象 <类型 = 窗口句柄类>
  316.     参数 左边 <类型 = 整数>
  317.     参数 顶边 <类型 = 整数>
  318.     参数 新宽度 <类型 = 整数 注释 = "-1为不修改" @默认值 = -1>
  319.     参数 新高度 <类型 = 整数 注释 = "-1为不修改" @默认值 = -1>
  320.     {
  321.         变量 矩形 <类型 = 矩形类>
  322.         如果 (当前对象.是否有效 () == 假)
  323.         {
  324.             返回 (假)
  325.         }
  326.         如果 (新宽度 == -1 || 新高度 == -1)  // 获取信息~
  327.         {
  328.             矩形 = 当前对象.取位置 ()
  329.         }
  330.         如果 (新宽度 == -1)
  331.         {
  332.             新宽度 = 矩形.宽度
  333.         }
  334.         如果 (新高度 == -1)
  335.         {
  336.             新高度 = 矩形.高度
  337.         }
  338.         返回 (当前对象.置位置 (左边, 顶边, 新宽度, 新高度, 真))
  339.     }

  340.     方法 置位置 <公开 静态 类型 = 逻辑型 注释 = "更改指定窗口的位置和尺寸。 对于顶级窗口,位置和尺寸是相对于屏幕左上角的。 对于子窗口,它们相对于父窗口工作区的左上角。" 折叠
  341.             @嵌入式方法 = "">
  342.     参数 当前对象 <类型 = 窗口句柄类>
  343.     参数 左侧位置 <类型 = 整数>
  344.     参数 顶部位置 <类型 = 整数>
  345.     参数 新宽度 <类型 = 整数>
  346.     参数 新高度 <类型 = 整数>
  347.     参数 是否重画 <类型 = 逻辑型>
  348.     {
  349.         @ MoveWindow(@<当前对象>, @<左侧位置>, @<顶部位置>, @<新宽度>, @<新高度>, @<是否重画>)
  350.     }

  351.     方法 取位置 <公开 静态 类型 = 矩形类 注释 = "请确保窗口句柄有效" 折叠>
  352.     参数 当前对象 <类型 = 窗口句柄类>
  353.     {
  354.         变量 返回矩形变量 <类型 = 矩形类>
  355.         @ RECT rt;
  356.         @ if (GetWindowRect (@<当前对象>,&rt)){
  357.         @     @<返回矩形变量>.Copy (&rt);
  358.         @ }
  359.         返回 (返回矩形变量)
  360.     }

  361.     方法 取实例句柄 <公开 静态 类型 = 变整数 注释 = "窗口所属模块" 折叠 @嵌入式方法 = "">
  362.     参数 当前对象 <类型 = 窗口句柄类>
  363.     {
  364.         @ GetWindowLongPtr(@<当前对象>, GWLP_HINSTANCE)
  365.     }

  366.     方法 取文件路径 <公开 静态 类型 = 文本型 注释 = "得到 EXE/DLL 全路径" 折叠 "">
  367.     参数 当前对象 <类型 = 窗口句柄类>
  368.     {
  369.         变量 hInst <类型 = 变整数 注释 = "HINSTANCE">
  370.         变量 szPath <类型 = "字符 [260]">
  371.         hInst = 当前对象.取实例句柄 ()
  372.         @ GetModuleFileName((HINSTANCE)@<hInst>, @<szPath>, NUM_ELEMENTS_OF (@<szPath>));   // 得到 EXE/DLL 全路径
  373.         返回 (字符数组到文本 (szPath, 取数组成员数 (szPath)))
  374.     }

  375.     方法 取窗口标题 <公开 静态 类型 = 文本型 注释 = "窗口标题" 折叠>
  376.     参数 当前对象 <类型 = 窗口句柄类>
  377.     {
  378.         变量 标题长度 <类型 = 整数>
  379.         变量 获取标题 <类型 = 文本型>
  380.         @ @<标题长度> = GetWindowTextLength ((HWND)@<当前对象>);
  381.         如果 (标题长度 == 0)
  382.         {
  383.             返回 ("")
  384.         }
  385.         填充文本 (获取标题, 标题长度 + 1)
  386.         @ GetWindowText ((HWND)@<当前对象>,(LPWSTR)@<获取标题>.GetText(),(INT)@<获取标题>.GetLength ());
  387.         返回 (获取标题)
  388.     }

  389.     方法 置窗口标题 <公开 静态 类型 = 逻辑型 注释 = "设置窗口标题" 折叠 @嵌入式方法 = "">
  390.     参数 当前对象 <类型 = 窗口句柄类>
  391.     参数 要设置的标题 <类型 = 文本型>
  392.     {
  393.         @ SetWindowText ((HWND)@<当前对象>,@<要设置的标题>.GetText())
  394.     }

  395.     方法 取控件内容 <公开 静态 类型 = 文本型 注释 = "例如取指定编辑框中的内容" 折叠>
  396.     参数 当前对象 <类型 = 窗口句柄类>
  397.     参数 最大长度 <类型 = 整数 注释 = "0 为不限制~" @默认值 = 0>
  398.     参数 超时 <类型 = 整数 注释 = "单位: 毫秒 如果是 -1 则不设置超时~" @默认值 = 3000>
  399.     参数 返回是否成功 <类型 = 逻辑型类 @默认值 = 空对象>
  400.     {
  401.         变量 返回值 <类型 = 文本型>
  402.         变量 内容长度 <类型 = 整数>
  403.         如果 (超时 != -1)
  404.         {
  405.             内容长度 = (整数)当前对象.发送消息_超时 (系统保留窗口消息.文本长度, 0, 0, , 超时, 0)
  406.         }
  407.         否则
  408.         {
  409.             内容长度 = (整数)当前对象.发送消息 (系统保留窗口消息.文本长度, 0, 0)
  410.         }

  411.         如果 (内容长度 == 0)
  412.         {
  413.             返回是否成功.值 = 假
  414.             返回 ("")
  415.         }

  416.         如果 (最大长度 != 0 && 内容长度 > 最大长度)
  417.         {
  418.             内容长度 = 最大长度
  419.         }

  420.         如果 (超时 != -1)
  421.         {
  422.             返回是否成功.值 = 当前对象.发送消息_超时 (系统保留窗口消息.获取文本, 内容长度, 填充文本 (返回值, 内容长度), , 超时, 0) != 0
  423.         }
  424.         否则
  425.         {
  426.             返回是否成功.值 = 当前对象.发送消息 (系统保留窗口消息.获取文本, 内容长度, 填充文本 (返回值, 内容长度)) != 0
  427.         }

  428.         如果 (返回是否成功.值 == 假)
  429.         {
  430.             返回 ("")
  431.         }
  432.         返回 (返回值)
  433.     }

  434.     方法 置控件内容 <公开 静态 类型 = 逻辑型 注释 = "例如往指定的编辑框里写入内容" 折叠>
  435.     参数 当前对象 <类型 = 窗口句柄类>
  436.     参数 内容 <类型 = 文本型>
  437.     参数 超时 <类型 = 整数 注释 = "单位:毫秒, -1为不设置超时" @默认值 = -1>
  438.     {
  439.         变量 返回值 <类型 = 逻辑型>
  440.         如果 (超时 != -1)
  441.         {
  442.             返回值 = 当前对象.发送消息_超时 (系统保留窗口消息.设置文本, 0, 取文本指针 (内容), , 超时, 0) != 0
  443.         }
  444.         否则
  445.         {
  446.             返回值 = 当前对象.发送消息 (系统保留窗口消息.设置文本, 0, 取文本指针 (内容)) != 0
  447.         }
  448.         返回 (返回值)
  449.     }

  450.     方法 属性表_置值 <公开 静态 类型 = 逻辑型 注释 = "类似独属于"窗口/组件"的,文本到变整数哈希表,每一个窗口/组件,都有一个独立的表" 折叠 @嵌入式方法 = "">
  451.     参数 当前对象 <类型 = 窗口句柄类>
  452.     参数 属性名称 <类型 = 文本型>
  453.     参数 属性值 <类型 = 变整数>
  454.     {
  455.         @ ::SetProp (@<当前对象>, @<属性名称>.GetText (), (HANDLE)@<属性值>)
  456.     }

  457.     方法 属性表_取值 <公开 静态 类型 = 变整数 注释 = "类似独属于"窗口/组件"的,文本到变整数哈希表,每一个窗口/组件,都有一个独立的表" 折叠 @嵌入式方法 = "">
  458.     参数 当前对象 <类型 = 窗口句柄类>
  459.     参数 属性名称 <类型 = 文本型>
  460.     {
  461.         @ ::GetProp (@<当前对象>, @<属性名称>.GetText ())
  462.     }

  463.     方法 属性表_删除 <公开 静态 类型 = 变整数 注释 = "类似独属于"窗口/组件"的,文本到变整数哈希表,每一个窗口/组件,都有一个独立的表"
  464.             返回值注释 = "返回之前记录的值,用于回收, 如果不存在,则为0" 折叠 @嵌入式方法 = "">
  465.     参数 当前对象 <类型 = 窗口句柄类>
  466.     参数 属性名称 <类型 = 文本型>
  467.     {
  468.         @ (INT_P)RemoveProp (@<当前对象>, @<属性名称>.GetText ())
  469.     }

  470.     方法 属性表_枚举 <公开 静态 类型 = 整数 注释 = "类似独属于"窗口/组件"的,文本到变整数哈希表,每一个窗口/组件,都有一个独立的表" 折叠>
  471.     参数 当前对象 <类型 = 窗口句柄类>
  472.     参数 返回主键数组 <类型 = 文本数组类 @默认值 = 空对象>
  473.     参数 返回值数组 <类型 = 变整数数组类 @默认值 = 空对象>
  474.     {
  475.         变量 传递参数 <类型 = "变整数 [2]">
  476.         返回主键数组.删除所有成员 ()
  477.         返回值数组.删除所有成员 ()
  478.         传递参数 [0] = 返回主键数组.取对象自身指针 ()
  479.         传递参数 [1] = 返回值数组.取对象自身指针 ()
  480.         @ EnumPropsEx (@<当前对象>,(PROPENUMPROCEX)&@<窗口句柄类.__属性表_枚举_回调函数>, (LPARAM)&@<传递参数>);
  481.         返回 (返回主键数组.取成员数 ())
  482.     }

  483.     方法 属性表_清空 <公开 静态 类型 = 整数 注释 = "类似独属于"窗口/组件"的,文本到变整数哈希表,每一个窗口/组件,都有一个独立的表" 折叠>
  484.     参数 当前对象 <类型 = 窗口句柄类>
  485.     参数 返回被清空主键数组 <类型 = 文本数组类 @默认值 = 空对象>
  486.     参数 返回被清空值数组 <类型 = 变整数数组类 @默认值 = 空对象>
  487.     {
  488.         变量 i <类型 = 整数>
  489.         当前对象.属性表_枚举 (返回被清空主键数组, 返回被清空值数组)
  490.         循环 (0, 返回被清空主键数组.取成员数 (), i)
  491.         {
  492.             当前对象.属性表_删除 (返回被清空主键数组.取成员 (i))
  493.         }
  494.         返回 (返回被清空主键数组.取成员数 ())
  495.     }

  496.     方法 __属性表_枚举_回调函数 <静态 类型 = 逻辑型 折叠>
  497.     参数 窗口句柄 <类型 = 变整数>
  498.     参数 属性名 <类型 = 文本指针>
  499.     参数 属性值 <类型 = 变整数>
  500.     参数 用户数据 <类型 = 变整数>
  501.     {
  502.         变量 主键数组 <类型 = 变整数>
  503.         变量 值数组 <类型 = 变整数>
  504.         主键数组 = 读指针处值 (用户数据, 变整数)

  505.         值数组 = 读指针处值 (用户数据 + 取变整数尺寸 (), 变整数)
  506.         读指针处对象 (主键数组, 文本数组类).加入成员 (属性名.取文本 ())
  507.         读指针处对象 (值数组, 变整数数组类).加入成员 (属性值)
  508.         返回 (真)  // 返回 TRUE → 继续枚举下一项
  509.     }

  510.     方法 取用户数据 <公开 静态 类型 = 变整数 注释 = "组件/窗口的用户数据,类似 对象.标记值" 折叠 @嵌入式方法 = "">
  511.     参数 当前对象 <类型 = 窗口句柄类>
  512.     {
  513.         @ GetWindowLongPtr(@<当前对象>, GWLP_USERDATA)
  514.     }

  515.     方法 置用户数据 <公开 静态 类型 = 变整数 注释 = "组件/窗口的用户数据,类似 对象.标记值" 返回值注释 = "返回之前的用户数据" 折叠 @嵌入式方法 = "">
  516.     参数 当前对象 <类型 = 窗口句柄类>
  517.     参数 数据指针 <类型 = 变整数>
  518.     {
  519.         @ (INT_P)SetWindowLongPtr(@<当前对象>, GWLP_USERDATA, @<数据指针>)
  520.     }

  521.     方法 重画 <公开 静态 类型 = 逻辑型 注释 = "更新窗口(立即重绘,不经过消息队列)" 折叠 @嵌入式方法 = "">
  522.     参数 当前对象 <类型 = 窗口句柄类>
  523.     {
  524.         @ UpdateWindow(@<当前对象>)
  525.     }

  526.     方法 取用户区矩形 <公开 静态 类型 = 矩形类 注释 = "获取并返回当前组件的用户区矩形位置,对窗口而言,用户区域为窗口区域减去标题栏+菜单栏+边框后的区域." 折叠>
  527.     参数 当前对象 <类型 = 窗口句柄类>
  528.     {
  529.         变量 返回矩形变量 <类型 = 矩形类>
  530.         @ RECT rt;
  531.         @ if( GetClientRect (@<当前对象>,&rt)){
  532.         @     @<返回矩形变量>.Copy (&rt);  // 取回所获得的位置矩形
  533.         @ }
  534.         返回 (返回矩形变量)
  535.     }

  536.     方法 置顶 <公开 静态 类型 = 逻辑型 注释 = "对窗口进行置顶、激活等操作(注:非强制显示隐藏窗口)" 折叠 @禁止流程检查 = 真>
  537.     参数 当前对象 <类型 = 窗口句柄类 注释 = "窗口句柄">
  538.     参数 是否总在最前 <类型 = 逻辑型 注释 = "默认为假:取消总在最前  真:总在最前" @默认值 = 真>
  539.     参数 是否激活 <类型 = 逻辑型 注释 = "默认为激活,如果为假,窗口显示后不激活,不获取键盘焦点" @默认值 = 真>
  540.     {
  541.         常量 HWND_NOTOPMOST <类型 = 整数 值 = @HWND_NOTOPMOST 注释 = "-2">
  542.         常量 HWND_TOPMOST <类型 = 整数 值 = @HWND_TOPMOST 注释 = "-1">
  543.         常量 SWP_NOMOVE <类型 = 整数 值 = @SWP_NOMOVE 注释 = "2">
  544.         常量 SWP_NOSIZE <类型 = 整数 值 = @SWP_NOSIZE 注释 = "1">
  545.         常量 SWP_SHOWWINDOW <类型 = 整数 值 = @SWP_NOSIZE 注释 = "64">
  546.         常量 SWP_NOACTIVATE <类型 = 整数 值 = @SWP_NOACTIVATE
  547.                 注释 = "16 不激活窗口。如果未设置此标志,则激活窗口并将其移到最顶层或非顶层组的顶部(取决于hWndInsertAfter参数的设置)。">
  548.         变量 uFlags <类型 = 整数>
  549.         变量 返回值 <类型 = 逻辑型>
  550.         uFlags = 连续位或 (SWP_NOMOVE, SWP_NOSIZE, 选择 (是否激活, SWP_SHOWWINDOW, SWP_NOACTIVATE))  // 连续位或 (SWP_NOMOVE, SWP_NOSIZE, SWP_SHOWWINDOW)
  551.         @ @<返回值> = SetWindowPos (@<当前对象>, @ @<是否总在最前> ? HWND_TOPMOST : HWND_NOTOPMOST,0,0,0,0,uFlags);
  552.         如果 (返回值 && 是否激活)
  553.         {
  554.             @ SwitchToThisWindow (@<当前对象>, true);
  555.         }
  556.         返回 (返回值)
  557.     }

  558.     方法 取父句柄 <公开 静态 类型 = 窗口句柄类 注释 = "如果窗口是子窗口,则返回值是父窗口的句柄。 如果窗口是具有 WS_POPUP 样式的顶级窗口,则返回值是所有者窗口的句柄。" 折叠
  559.             @嵌入式方法 = "">
  560.     参数 当前对象 <类型 = 窗口句柄类>
  561.     {
  562.         @ GetParent (@<当前对象>)
  563.     }

  564.     方法 取扩展样式 <公开 静态 类型 = 窗口扩展样式 折叠 @嵌入式方法 = "">
  565.     参数 当前对象 <类型 = 窗口句柄类>
  566.     {
  567.         @ (@dt<窗口扩展样式>)GetWindowLongPtr(@<当前对象>, GWL_EXSTYLE)
  568.     }

  569.     方法 扩展样式是否存在 <公开 静态 类型 = 逻辑型 折叠 @嵌入式方法 = "">
  570.     参数 当前对象 <类型 = 窗口句柄类>
  571.     参数 判断样式 <类型 = 窗口扩展样式 注释 = "WS_EX_*">
  572.     {
  573.         @ (INT)GetWindowLongPtr(@<当前对象>, GWL_EXSTYLE) & (INT)@<判断样式> != 0
  574.     }

  575.     方法 置扩展样式 <公开 静态 类型 = 窗口扩展样式 注释 = "添加扩展样式" 返回值注释 = "返回旧样式" 折叠>
  576.     参数 当前对象 <类型 = 窗口句柄类>
  577.     参数 新增样式 <类型 = 窗口扩展样式 注释 = "WS_EX_* 位或组合">
  578.     {
  579.         变量 旧样式 <类型 = 窗口扩展样式>
  580.         旧样式 = 当前对象.取扩展样式 ()
  581.         @ SetWindowLongPtr(@<当前对象>, GWL_EXSTYLE, (INT)@<旧样式> | (INT)@<新增样式>);
  582.         返回 (旧样式)
  583.     }

  584.     方法 置透明度 <公开 静态 类型 = 逻辑型 注释 = "分层窗口透明度(需 WS_EX_LAYERED) 只对窗口有效!" 折叠 @禁止流程检查 = 真>
  585.     参数 当前对象 <类型 = 窗口句柄类>
  586.     参数 透明度 <类型 = 整数 注释 = "0-255, 255=不透明">
  587.     参数 添加样式 <类型 = 逻辑型 @默认值 = 真>
  588.     {
  589.         如果 (添加样式 == 真 && 当前对象.扩展样式是否存在 (窗口扩展样式.分层) == 假)
  590.         {
  591.             当前对象.置扩展样式 (窗口扩展样式.分层)
  592.         }
  593.         @ return SetLayeredWindowAttributes(@<当前对象>, 0, @<透明度>, LWA_ALPHA);
  594.     }

  595.     方法 闪烁 <公开 静态 类型 = 逻辑型 折叠 @禁止流程检查 = 真>
  596.     参数 当前对象 <类型 = 窗口句柄类>
  597.     参数 闪烁次数 <类型 = 整数 @默认值 = 5>
  598.     参数 闪烁间隔 <类型 = 整数 注释 = "使用系统默认间隔" @默认值 = 0>
  599.     {
  600.         @ FLASHWINFO info ;
  601.         @ info.cbSize = sizeof (info);
  602.         @ info.hwnd   = @<当前对象>;
  603.         @ info.dwFlags = FLASHW_CAPTION | FLASHW_TRAY;   // 标题栏+任务栏
  604.         @ info.uCount  = @<闪烁次数>;
  605.         @ info.dwTimeout = @<闪烁间隔>;          // 使用系统默认间隔
  606.         @ return FlashWindowEx(&info);
  607.     }

  608.     方法 是否可见 <公开 静态 类型 = 逻辑型 注释 = "它只判断“自身样式”+“父链”,不判断是否被别的窗口遮挡、不判断是否被最小化、不判断是否在屏幕外。"
  609.             返回值注释 = "真=窗口本身体式可见且从顶层到它的父链全部没被隐藏"
  610.             返回值注释 = "假=只要有一层 ShowWindow(SW_HIDE)、SetWindowPos 带 SWP_HIDEWINDOW、WS_VISIBLE 样式被清掉,就返回 FALSE" 折叠
  611.             @嵌入式方法 = "">
  612.     参数 当前对象 <类型 = 窗口句柄类>
  613.     {
  614.         @ IsWindowVisible (@<当前对象>)
  615.     }

  616.     方法 是否置顶 <公开 静态 类型 = 逻辑型 折叠 @嵌入式方法 = "">
  617.     参数 当前对象 <类型 = 窗口句柄类>
  618.     {
  619.         @ ((INT)GetWindowLongPtr (@<当前对象>, GWL_EXSTYLE) & WS_EX_TOPMOST) != 0
  620.     }

  621.     方法 通知关闭窗口 <公开 静态 注释 = "将指定窗口销毁(无返回值)" 折叠 @嵌入式方法 = "">
  622.     参数 当前对象 <类型 = 窗口句柄类>
  623.     {
  624.         @ PostMessage (@<当前对象>, WM_CLOSE, NULL, NULL)
  625.     }

  626.     方法 通知退出程序 <公开 静态 注释 = "通知退出程序啦~" @嵌入式方法 = "">
  627.     参数 当前对象 <类型 = 窗口句柄类>
  628.     参数 退出码 <类型 = 整数 @默认值 = 0>
  629.     {
  630.         @ PostMessage (@<当前对象>, WM_QUIT, @<退出码>, NULL)
  631.     }

  632.     #
  633. }
复制代码




回复

使用道具 举报

458

主题

2840

帖子

9707

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9707
沙发
发表于 昨天 11:43 | 只看该作者
不错,小蜗牛技术很强
回复

使用道具 举报

19

主题

231

帖子

2668

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2668
板凳
发表于 昨天 12:11 来自手机 | 只看该作者
辛苦了蜗牛大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-11-5 04:19 , Processed in 0.082726 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表