找回密码
 加入
搜索
查看: 5737|回复: 12

[GUI管理] 求助设置edit控件样式的问题

  [复制链接]
发表于 2012-8-12 11:17:13 | 显示全部楼层 |阅读模式
请问下下面代码为何设置样式无效呢?
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <guiedit.au3>
#include <string.au3>

$Form1 = GUICreate("", 190, 240)
$Edit1 = _GUICtrlEdit_Create($Form1,"", 0, 0, 190, 190)
$Button1 = GUICtrlCreateButton("显示", 10, 200, 150, 30)
GUISetState(@SW_SHOW)

local $flag=0

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
if $flag then
$flag=1
else
$flag=0
endif
_setautoline($Edit1,$flag)
        EndSwitch
WEnd

Func _SetAutoLine($hEdit,$flag=0)
if $flag=0 then;不自动换行
guictrlsetstyle($hEdit,bitor($ES_MULTILINE, $ES_WANTRETURN))
else;自动换行
guictrlsetstyle($hEdit,bitor($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
endif
EndFunc;setautoline
发表于 2012-8-12 12:26:52 | 显示全部楼层
_WinAPI_GetWindowLong?
 楼主| 发表于 2012-8-12 13:37:52 | 显示全部楼层
不行啊,蛋兄。
要设置,不是获取呢。。。
发表于 2012-8-12 14:04:26 | 显示全部楼层
本帖最后由 netegg 于 2012-8-12 14:05 编辑

回复 3# kxing
获取完了,再bit*对应的试试
发表于 2012-8-13 15:52:41 | 显示全部楼层
本帖最后由 xiehuahere 于 2012-8-13 16:28 编辑

回复 1# kxing

_GUICtrlEdit_Create返回的是控件句柄,而后面内置函数guictrlsetstyle要求的是控件ID,不匹配。
你还是使用内置函数GUICtrlCreateEdit来创建Edit控件吧,这里没必要用UDF的。
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("", 190, 240)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 190, 190, bitor($ES_MULTILINE, $ES_WANTRETURN)) ;非自动换行
$Button1 = GUICtrlCreateButton("显示", 10, 200, 150, 30)
GUISetState(@SW_SHOW)

local $flag=0 ;非自动换行

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        if $flag Then ;当前为自动换行
                                $flag = 0 ;变为非自动换行
                        Else  ;当前为非自动换行
                                $flag = 1 ;变为自动换行
                        endif
                        _setautoline($Edit1, $flag)
        EndSwitch
WEnd

Func _SetAutoLine($Edit, $flag=0)
        if $flag=0 Then ;不自动换行
                guictrlsetstyle($Edit, bitor($ES_MULTILINE, $ES_WANTRETURN))
        else;自动换行
                guictrlsetstyle($Edit, bitor($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
        endif
EndFunc;setautoline
发表于 2012-8-13 15:56:58 | 显示全部楼层
需要修改控件吧?
 楼主| 发表于 2012-8-13 17:05:34 | 显示全部楼层
感谢啦,原来要用这个函数创建。
 楼主| 发表于 2012-8-13 17:09:11 | 显示全部楼层
但是为何设置成没有水平滚动的也不会自动换行呢?
 楼主| 发表于 2012-8-13 17:11:50 | 显示全部楼层
是不是原来设置的样式不能撤销。
发表于 2012-8-13 18:42:47 | 显示全部楼层
回复  kxing
获取完了,再bit*对应的试试
netegg 发表于 2012-8-12 14:04



   直接是 不行的,用_WinAPI_SetWindowLong这样子的,必须再重绘Edit控件,才能使Modify的Style生效的。
发表于 2012-8-13 21:34:01 | 显示全部楼层
回复 8# kxing


    不懂你什么意思。我上面的代码是可以自动换行的。
 楼主| 发表于 2012-8-18 06:52:37 | 显示全部楼层
我是想要和记事本那样的效果,能自动换行或不自动换行切换。
发表于 2012-8-20 12:55:24 | 显示全部楼层
回复 12# kxing


请使用“回复”按钮,否则无法及时收到。

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("", 190, 240)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 190, 190, bitor($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))
$Button1 = GUICtrlCreateButton("显示", 10, 200, 150, 30)
GUISetState(@SW_SHOW)

local $flag = 0

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        _SetAutoLine()
        EndSwitch
WEnd

Func _SetAutoLine()
        Local $text
        GUICtrlSetState($Button1, $GUI_DISABLE)
        If $flag Then ;不自动换行,有水平滚动条
                $text = GUICtrlRead($Edit1)
                GUICtrlDelete($Edit1)
                $Edit1 = GUICtrlCreateEdit($text, 0, 0, 190, 190, bitor($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))
                $flag = 0
        Else ;自动换行,无水平滚动条
                $text = GUICtrlRead($Edit1)
                $text = StringReplace($text, @CRLF, "")
                GUICtrlDelete($Edit1)
                $Edit1 = GUICtrlCreateEdit($text, 0, 0, 190, 190, bitor($ES_MULTILINE, $ES_WANTRETURN, $WS_HSCROLL, $ES_AUTOHSCROLL))
                $flag = 1
        EndIf
        GUICtrlSetState($Button1, $GUI_ENABLE)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 11:14 , Processed in 0.073969 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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