damien2008
Осваивающий
- Сообщения
- 178
- Репутация
- 34
Всем добрый вечер. Прошу помочь.
Столкнулся с такой проблемой:
С помощью функции
пытаюсь получить номер строки в RichEdit.
При клике мышкой, выдает неправильный результат 0,1,2,2,2,2,2 каждый раз.
А при выборе стрелками ВВЕРХ/ВНИЗ вообще ничего не происходит.
Что делаю не так? подскажите...
код::
Столкнулся с такой проблемой:
С помощью функции
Код:
_GUICtrlRichEdit_GetLineNumberFromCharPos
При клике мышкой, выдает неправильный результат 0,1,2,2,2,2,2 каждый раз.
А при выборе стрелками ВВЕРХ/ВНИЗ вообще ничего не происходит.
Что делаю не так? подскажите...
код::
Код:
#cs ------------------------------------------------------------------------
Версия AutoIt: 3.3.12.0
Автор: myName
Описание: Шаблон программы на языке AutoIt
#ce ------------------------------------------------------------------------
; Код программы
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GuiMenu.au3>
#include <Constants.au3>
#include <WinAPI.au3>
#include <GUIRichEdit.au3>
#include <Misc.au3>
Global Const $VK_UP = 0x26
Global Const $VK_DOWN = 0x28
Global Enum $idOpen = 1000, $idSave, $idInfo
Global $hGUI = GUICreate("Test", 300, 200)
$Edit1 = _GUICtrlRichEdit_Create($hGUI, "", 10, 10, 280, 150, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE))
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu, "Open", $idOpen)
_GUICtrlMenu_AddMenuItem($hMenu, "Save", $idSave)
_GUICtrlMenu_AddMenuItem($hMenu, "Info", $idInfo)
GUISetState()
$wProcHandle = DllCallbackRegister("_WindowProc", "ptr", "hwnd;uint;wparam;lparam")
$wProcOld = _WinAPI_SetWindowLong($Edit1, $GWL_WNDPROC, DllCallbackGetPtr($wProcHandle))
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete($hGUI)
DllCallbackFree($wProcHandle)
Func _WindowProc($hWnd, $Msg, $wParam, $lParam)
Switch $hWnd
Case $Edit1
Switch $Msg
Case $WM_RBUTTONUP
_GUICtrlMenu_TrackPopupMenu($hMenu, $hWnd)
Return 0
Case $WM_LBUTTONUP
ConsoleWrite(_GUICtrlRichEdit_GetLineNumberFromCharPos($hWnd, 1) & @CRLF)
;Return 0
Case $VK_UP
ConsoleWrite(_GUICtrlRichEdit_GetLineNumberFromCharPos($hWnd, 1) & @CRLF)
Case $VK_DOWN
ConsoleWrite(_GUICtrlRichEdit_GetLineNumberFromCharPos($hWnd, 1) & @CRLF)
Case $WM_COMMAND
Switch $wParam
Case $idOpen
ConsoleWrite("-> Open" & @LF)
Case $idSave
ConsoleWrite("-> Save" & @LF)
Case $idInfo
ConsoleWrite("-> Info" & @LF)
EndSwitch
EndSwitch
EndSwitch
Local $aRet = DllCall("user32.dll", "int", "CallWindowProc", "ptr", $wProcOld, _
"hwnd", $hWnd, "uint", $Msg, "wparam", $wParam, "lparam", $lParam)
Return $aRet[0]
EndFunc ;==>_WindowProc