Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   GUICtrlCreateLabel +$WS_VSCROLL не работает (http://forum.oszone.net/showthread.php?t=175785)

Centrinar 15-05-2010 23:37 1414190

GUICtrlCreateLabel +$WS_VSCROLL не работает
 
GUICtrlCreateLabel("text", 40, 300, 300, 50,$ES_AUTOVSCROLL+$WS_VSCROLL). Должно получиться текст с вертикальной прокруткой но прокрутка почему то не работает, где ошибка?

FlatX007 16-05-2010 00:26 1414220

Давно ли у лэйбла прокрутка ?

Код:

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

Global $Text = "12345"

$Form1 = GUICreate("", 208, 150)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 185, 89, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL))
$Button1 = GUICtrlCreateButton("Ok", 120, 112, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case
$Button1
            For $i = 0 To 20
                Sleep(100)
                GUICtrlSetData($Edit1, $Text * Random(999, 999999), $Edit1)
            Next
    EndSwitch
WEnd


Creat0R 16-05-2010 00:44 1414230

Цитата:

Цитата Centrinar
Должно получиться текст с вертикальной прокруткой »

Кто сказал? :)
Чтобы сделать “эффект” текста с прокруткой, нужно использовать Edit:

Код:

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

$hGUI = GUICreate("Scrollable Label Imitation Example", 300, 200)

$sLabelData = ""

For $i = 1 To 50
    $sLabelData &= "This is my Label Line #" & $i & @CRLF
Next

$nDummyCtrl = GUICtrlCreateLabel("", -100, -100)
$nCntxtMenu = GUICtrlCreateContextMenu($nDummyCtrl)
$nCopy_CntxtMenuItem = GUICtrlCreateMenuItem("Copy", $nCntxtMenu)

$nEdit = GUICtrlCreateEdit($sLabelData, 20, 20, 260, 150, BitOr(BitAND($GUI_SS_DEFAULT_EDIT, BitNOT($WS_HSCROLL)), $ES_READONLY), $WS_EX_TRANSPARENT)
GUICtrlSetCursor($nEdit, 2)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_SECONDARYDOWN
            $aCursorInfo = GUIGetCursorInfo($hGUI)

            If $aCursorInfo[4] = $nEdit Then
                _ShowContextMenu($hGUI, $nCntxtMenu)
            EndIf
        Case $nCopy_CntxtMenuItem
            ClipPut(GUICtrlRead($nEdit))
    EndSwitch
WEnd

Func _ShowContextMenu($hWnd, $nContextID)
    Local $hMenu = GUICtrlGetHandle($nContextID)
    Local $arPos = MouseGetPos()
    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $arPos[0], "int", $arPos[1], "hwnd", $hWnd, "ptr", 0)
EndFunc

Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    Local $hCtrl = $lParam

    Switch $nID
        Case $nEdit
            Switch $nNotifyCode
                Case $EN_CHANGE, $EN_UPDATE

                Case $EN_SETFOCUS
                    ControlFocus($hWnd, "", $nDummyCtrl)
                Case $EN_KILLFOCUS

            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc



Время: 16:42.

Время: 16:42.
© OSzone.net 2001-