WindowEx:将背景颜色设置为透明

时间:2012-11-20 15:45:57

标签: user-interface window transparency autoit

我正在使用以下代码:

#include <WinAPI.au3>
#include <WindowsConstants.au3>

Global Const $WC_LINK = "SysLink"
Global Const $WC_LINKA = $WC_LINK
Global Const $WC_LINKW = $WC_LINK

$g_hLink = _WinAPI_CreateWindowEx(0, $WC_LINK, _
        'Test, [url="http://www.microsoft.com"]click here[/url], [url="http://www.microsoft.com"]here[/url] or [url=""]here[/url]', _
        BitOR($WS_VISIBLE, $WS_CHILD, $WS_TABSTOP), _
        10, 10, 300, 60, $Form2 _
)
GUIRegisterMsg($WM_NOTIFY, "MY_LINK_NOTIFY")

Func MY_LINK_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local Const $tagNMLINK = $tagNMHDR & ";" & "UINT mask; int iLink; UINT state; UINT stateMask; WCHAR szID[48]; WCHAR szUrl[2083];"
    Local $NMHDR = DllStructCreate($tagNMHDR, $lParam)
    Local $hwndFrom = DllStructGetData($NMHDR, "hwndFrom");
    Switch $hwndFrom
        Case $g_hLink
            Switch DllStructGetData($NMHDR, "code")
                Case $NM_CLICK
                    ContinueCase
                Case $NM_RETURN
                    $NMHDR = DllStructCreate($tagNMLINK, $lParam)
                    Local $iLink = DllStructGetData($NMHDR, "iLink")
                    Local $szURL = DllStructGetData($NMHDR, "szURL")
                    Local $szID = DllStructGetData($NMHDR, "szID")

                    If $szURL <> "" Then
                        ShellExecute($szURL, "", "", "open", @SW_SHOW);
                    EndIf
            EndSwitch
    EndSwitch
EndFunc

使我的syslinks可点击:

enter image description here

问题在于我希望它只显示文本...并将此白色/灰色背景设置为透明。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

似乎这是不可能的。

LWS_TRANSPARENT样式,但它不会使SysLink透明,只是将其背景颜色设置为窗口背景颜色。

此外,SysLink支持WM_CTLCOLORSTATIC消息,但您无法使背景颜色透明。