E语言 将编辑框或控件变成透明的方法求助

查看 10|回复 0
作者:Love0912   
本人想将E语言窗口中的编辑框或者控件变成透明色(也就是做个美化),但是不会,找了一些教程和资料,可能是水平低的原因没有看懂。特找各位大佬要一份教学资料,最好是教学视频,能让我学会就好,
这是我找到的一个大神传的资料代码,能实现我说的效果,但是没看懂怎么实现的
[Asm] 纯文本查看 复制代码.版本 2
.程序集 窗口程序集1
.程序集变量 hBkBitmap, 整数型
.程序集变量 OldMainProc, 整数型
.程序集变量 OldEditProc, 整数型
.程序集变量 ImageObject, 对象
.子程序 __启动窗口_创建完毕
OldMainProc = SetWindowLongA (取窗口句柄 (), #GWL_WNDPROC, 到数值 (&NewProc_Main))
OldEditProc = SetWindowLongA (编辑框1.取窗口句柄 (), #GWL_WNDPROC, 到数值 (&NewProc_Edit))
.子程序 NewProc_Main, 整数型
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.判断开始 (Msg = #WM_CTLCOLOREDIT)
    .判断开始 (lParam = 编辑框1.取窗口句柄 ())
        SetTextColor (wParam, #蓝色)
        SetBkMode (wParam, #TRANSPARENT)
        返回 (GetStockObject (#NULL_BRUSH))
    .默认
    .判断结束
.判断 (Msg = #WM_COMMAND)
    .判断开始 (lParam = 编辑框1.取窗口句柄 ())
        .判断开始 (右移 (wParam, 16) = #EN_VSCROLL)
            InvalidateRect (lParam, 0, 真)
        .判断 (右移 (wParam, 16) = #EN_HSCROLL)
            InvalidateRect (lParam, 0, 真)
        .判断 (右移 (wParam, 16) = #EN_CHANGE)
            InvalidateRect (lParam, 0, 真)
        .默认
        .判断结束
    .默认
    .判断结束
.默认
.判断结束
返回 (CallWindowProcA (OldMainProc, hWnd, Msg, wParam, lParam))
.子程序 NewProc_Edit, 整数型
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 hMemDC_BkPicture, 整数型
.局部变量 hOldBitmap, 整数型
.局部变量 rect, RECT
.局部变量 hBrush, 整数型
.局部变量 hOldBrush, 整数型
.局部变量 hTempMemBitmap, 整数型
.局部变量 hScrDC, 整数型
.局部变量 hOldTempMemBitmap, 整数型
.局部变量 hMemDC_BkColor, 整数型
.判断开始 (Msg = #WM_ERASEBKGND)
    .如果真 (hBkBitmap = 0)
        编辑框1.可视 = 假
        处理事件 ()
        .如果真 (ImageObject.创建图片对象 (快照 (编辑框1.取窗口句柄 (), , )))
            hBkBitmap = ImageObject.读数值属性 (“handle”, )
        .如果真结束
        编辑框1.可视 = 真
    .如果真结束
    GetClientRect (hWnd, rect)
    hScrDC = GetDC (0)
    hMemDC_BkColor = CreateCompatibleDC (hScrDC)
    hTempMemBitmap = CreateCompatibleBitmap (hScrDC, rect.right, rect.bottom)
    hOldTempMemBitmap = SelectObject (hMemDC_BkColor, hTempMemBitmap)
    hBrush = CreateSolidBrush (#白色)
    hOldBrush = SelectObject (hMemDC_BkColor, hBrush)
    FillRect (hMemDC_BkColor, rect, hBrush)
    SelectObject (hMemDC_BkColor, hOldBrush)
    DeleteObject (hBrush)
    hMemDC_BkPicture = CreateCompatibleDC (hScrDC)
    hOldBitmap = SelectObject (hMemDC_BkPicture, hBkBitmap)
    BitBlt (hMemDC_BkColor, rect.left, rect.top, rect.right, rect.bottom, hMemDC_BkPicture, 0, 0, #SRCCOPY)
    BitBlt (wParam, rect.left, rect.top, rect.right, rect.bottom, hMemDC_BkColor, 0, 0, #SRCCOPY)
    SelectObject (hMemDC_BkPicture, hOldBitmap)
    DeleteDC (hMemDC_BkPicture)
    SelectObject (hMemDC_BkColor, hOldTempMemBitmap)
    DeleteObject (hTempMemBitmap)
    DeleteDC (hMemDC_BkColor)
    ReleaseDC (0, hScrDC)
    InvalidateRect (hWnd, 0, 假)
.判断 (Msg = #WM_VSCROLL)
    InvalidateRect (hWnd, 0, 真)
.判断 (Msg = #WM_HSCROLL)
    InvalidateRect (hWnd, 0, 真)
.判断 (Msg = #WM_DESTROY)
    .如果真 (取反 (ImageObject.是否为空 ()))
        ImageObject.清除 ()
    .如果真结束
.默认
.判断结束
返回 (CallWindowProcA (OldEditProc, hWnd, Msg, wParam, lParam))
效果图大概是这个样子的
[i]

整数, 变量

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

返回顶部