menfan1 发表于 2011-6-1 14:46:29

学会搜索嘛这个早就有了啊

dalanmao 发表于 2011-6-12 09:55:17

好,又学会一招

lxz 发表于 2011-6-12 10:59:22

代码收下了,学习学习

Cygerist 发表于 2011-6-13 00:04:40

可以做为鼠标和窗口操做的例子。

auhj887 发表于 2011-6-13 07:55:42

{:face (411):}

minghui 发表于 2011-6-16 16:07:43

留个记号,以后慢慢消化

auhj887 发表于 2011-6-21 20:37:58

{:face (301):}

502762378 发表于 2011-6-24 19:07:36

这东西,看着看着外边就下雨了

menfan1 发表于 2011-7-2 15:51:08

搜索一下一大把

曼菲士 发表于 2011-7-2 17:15:07

很好的代码,谢谢分享。

forestchi 发表于 2011-7-11 20:56:06

这个好像有点问题,窗口有时会突然最大化。。。。

happytc 发表于 2011-7-12 02:03:44

本帖最后由 happytc 于 2011-7-12 03:33 编辑

看到居然这么多人对这个感兴趣,贴一个我以前写的这个功能的函数:


Func HideCaptureBar($hwdGuiBar, $Duration = 500)
        Local $MousePos, $WinPos, $AW_SHOW = 0, $Flag = 0
       
        If Not IsHWnd($hwdGuiBar) Then Return
       
        $MousePos = MouseGetPos()
        $WinPos = WinGetPos($hwdGuiBar)       
        If Not IsArray($WinPos) Or Not IsArray($MousePos) Then Return
       
        If $MousePos <= 1 And Not BitAND(WinGetState($hwdGuiBar), 2) Then
                If $WinPos < 0 Then
                        $WinPos = 0
                        WinMove($hwdGuiBar, "", $WinPos, $WinPos)
                EndIf               
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_SHOW + $AW_VER_POSITIVE, $Duration)
                $Flag = 1
        ElseIf $MousePos >= @DesktopHeight - 1 And Not BitAND(WinGetState($hwdGuiBar), 2) Then
                If $WinPos > @DesktopHeight - $WinPos Then
                        $WinPos = @DesktopHeight - $WinPos
                        WinMove($hwdGuiBar, "", $WinPos, $WinPos)
                EndIf               
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_SHOW + $AW_VER_NEGATIVE, $Duration)
                $Flag = 1
        ElseIf $MousePos >= @DesktopWidth - 1 And Not BitAND(WinGetState($hwdGuiBar), 2) Then
                If $WinPos > @DesktopWidth - $WinPos Then
                        $WinPos = @DesktopWidth - $WinPos
                        WinMove($hwdGuiBar, "", $WinPos, $WinPos)
                EndIf               
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_SHOW + $AW_HOR_NEGATIVE, $Duration)       
                $Flag = 1
        ElseIf $MousePos <= 1 And Not BitAND(WinGetState($hwdGuiBar), 2) Then
                If $WinPos < 0 Then
                        $WinPos = 0
                        WinMove($hwdGuiBar, "", $WinPos, $WinPos)
                EndIf               
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_SHOW + $AW_HOR_POSITIVE, $Duration)       
                $Flag = 1       
        EndIf
       
        If $Flag Then Return

        If $WinPos < 0 And BitAND(WinGetState($hwdGuiBar), 2) Then
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_HIDE + $AW_VER_NEGATIVE, $Duration)              
        ElseIf $WinPos + $WinPos > @DesktopHeight And BitAND(WinGetState($hwdGuiBar), 2) Then
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_HIDE + $AW_VER_POSITIVE, $Duration)               
        ElseIf $WinPos + $WinPos > @DesktopWidth And BitAND(WinGetState($hwdGuiBar), 2)Then
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_HIDE + $AW_HOR_POSITIVE, $Duration)
        ElseIf $WinPos < 0 And BitAND(WinGetState($hwdGuiBar), 2)Then
                _WinAPI_AnimateWindow($hwdGuiBar, $AW_SLIDE + $AW_HIDE + $AW_HOR_NEGATIVE, $Duration)
        EndIf
EndFunc

forestchi 发表于 2011-7-12 09:32:44

楼上的大侠,用不了呀,用的是最新WinAPIEx_3.3....

happytc 发表于 2011-7-12 09:50:34

回复 28# forestchi


    这个问问题的方式
就一信息都没有,啥叫“用不了呀”
你只少得给出错误信息吧,不然,我怎么知道你用不了呢?

happytc 发表于 2011-7-12 10:07:25

回复 28# forestchi


    自己定义下_WinAPI_AnimateWindow函数就可以了
Func _WinAPI_AnimateWindow($hWnd, $iFlags, $iDuration = 500)
        Local $ret = DllCall('user32.dll', 'int', 'AnimateWindow', 'hwnd', $hWnd, 'dword', $iDuration, 'dword', $iFlags)
        If (@error) Or (Not $ret) Then
                Return SetError(1, 0, 0)
        EndIf
        Return 1
EndFunc

常量也自己定义,在:http://msdn.microsoft.com/en-us/library/ms632669(v=vs.85).aspx

很可能你用的不是跟WinAPIEx配套的别的函数,特别常量的定义
所以最好不要单独更某个函数,还是用官方统一更新的函数包吧
页: 1 [2] 3
查看完整版本: 如何使gui窗口靠近桌面边缘时自动隐藏?