找回密码
 加入
搜索
查看: 3304|回复: 6

[GUI管理] GDI画了线之后隐藏不能显示的问题

  [复制链接]
发表于 2014-10-14 21:51:29 | 显示全部楼层 |阅读模式
代码如下,按回车键隐藏、显示窗口,但是隐藏再显示之后GDI画的线便没有了,求解决~~
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

$Form1 = GUICreate("Form1", 801, 601, 192, 124)
$Pic1 = GUICtrlCreatePic("",-1,-1,1,1)
GUISetState(@SW_SHOW)
$hWnd = GUICtrlGetHandle($Pic1)
                $hDC = _WinAPI_GetDC($hWnd)
                $hPen_PS_SOLID = _WinAPI_CreatePen($PS_SOLID, 3, 0x000000);红色实线画笔宽度为10
                $hBrush = _WinAPI_GetStockObject($NULL_BRUSH);空画刷
                
                $oldPen = _WinAPI_SelectObject($hDC, $hPen_PS_SOLID)
                $oldBrush = _WinAPI_SelectObject($hDC, $hBrush)
                $tRECT = _WinAPI_CreateRect(31, 26, 769, 572)
                _WinAPI_Rectangle($hDC, $tRECT)
                _WinAPI_SelectObject($hDC, $oldPen)
                _WinAPI_SelectObject($hDC, $oldBrush)
                
                
                ;删除 建立的对象
                _WinAPI_DeleteObject($hPen_PS_SOLID)
                _WinAPI_DeleteObject($hBrush)

$SS = 1
While 1
        HotKeySet('{ENTER}','SHOW')
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

Func SHOW()
        If $SS = 1 Then
                GUISetState(@SW_HIDE, $Form1)
                $ss = 0
        Else
                GUISetState(@SW_SHOW, $Form1)
                $ss = 1
        EndIf
EndFunc
发表于 2014-10-18 06:45:45 | 显示全部楼层
把画线那部分做成子函数,调用就完了
 楼主| 发表于 2014-10-18 08:06:11 | 显示全部楼层
回复 3# netegg


    试过,不行~~   虽然隐藏和显示解决了,但是你拖动一下窗口,线还是会出问题的~
如果能解决,求码......
发表于 2014-10-18 15:11:40 | 显示全部楼层
把场景踢掉
发表于 2014-10-18 21:55:41 | 显示全部楼层
要有重绘机制
 楼主| 发表于 2014-10-22 21:09:30 | 显示全部楼层
回复 6# sd23


    能提供一下代码吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 15:29 , Processed in 0.072444 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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