求助设置edit控件样式的问题
请问下下面代码为何设置样式无效呢?#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 _WinAPI_GetWindowLong? 不行啊,蛋兄。
要设置,不是获取呢。。。 本帖最后由 netegg 于 2012-8-12 14:05 编辑
回复 3# kxing
获取完了,再bit*对应的试试 本帖最后由 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 需要修改控件吧? 感谢啦,原来要用这个函数创建。 但是为何设置成没有水平滚动的也不会自动换行呢? 是不是原来设置的样式不能撤销。 回复kxing
获取完了,再bit*对应的试试
netegg 发表于 2012-8-12 14:04 http://www.autoitx.com/images/common/back.gif
直接是 不行的,用_WinAPI_SetWindowLong这样子的,必须再重绘Edit控件,才能使Modify的Style生效的。 回复 8# kxing
不懂你什么意思。我上面的代码是可以自动换行的。 我是想要和记事本那样的效果,能自动换行或不自动换行切换。 回复 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
页:
[1]