- Сообщения
- 5,379
- Репутация
- 2,724
Вот простой пример:
Казалось бы, в консоли мы должны увидеть следующее:
А нет, на деле получается так:
По ходу дела, разработчики реализовали возможность посылки значений в Dummy, так сказать, "на сдачу", совершенно не беспокоясь об очереди сообщений. Сообщения то приходить приходят, а вот посылаемые значения затирают друг друга (возможно все идет через один буфер). Я конечно не уверен, что это бага, но это несомненно нужно учитывать при написании кода, активно использующего Dummy. Вот возможный вариант решения этой "проблемы" (создание собственного буфера):
Код:
GUICreate('MyGUI')
$Dummy = GUICtrlCreateDummy()
GUISetState()
GUICtrlSendToDummy($Dummy, 1)
GUICtrlSendToDummy($Dummy, 2)
GUICtrlSendToDummy($Dummy, 3)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $Dummy
ConsoleWrite(GUICtrlRead($Dummy) & @CR)
EndSwitch
WEnd
Казалось бы, в консоли мы должны увидеть следующее:
Код:
1
2
3
А нет, на деле получается так:
Код:
3
3
3
По ходу дела, разработчики реализовали возможность посылки значений в Dummy, так сказать, "на сдачу", совершенно не беспокоясь об очереди сообщений. Сообщения то приходить приходят, а вот посылаемые значения затирают друг друга (возможно все идет через один буфер). Я конечно не уверен, что это бага, но это несомненно нужно учитывать при написании кода, активно использующего Dummy. Вот возможный вариант решения этой "проблемы" (создание собственного буфера):
Код:
Global $Buff = ''
GUICreate('MyGUI')
$Dummy = GUICtrlCreateDummy()
GUISetState()
_SendToDummy($Dummy, 1)
_SendToDummy($Dummy, 2)
_SendToDummy($Dummy, 3)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $Dummy
ConsoleWrite(_ReadFromDummy($Dummy) & @CR)
EndSwitch
WEnd
Func _ReadFromDummy($iDummy)
Local $Data = $Buff
$Buff = StringTrimLeft($Buff, StringInStr($Buff, '|'))
Return Number(StringLeft($Data, StringInStr($Data, '|') - 1))
EndFunc ;==>_ReadFromDummy
Func _SendToDummy($iDummy, $iValue)
$Buff &= $iValue & '|'
GUICtrlSendToDummy($iDummy)
EndFunc ;==>_SendToDummy