Siarzhuk писал(а):Вы, наверное, с javascript-а пришли.
нет, я его вообще не понимаю
особенно когда аргументов функции может быть тело анонимной функции
я даже специальную тему создал, где я негодую
я за 25 лет перебрал всякого гавна, но нихера не понимаю, потому что инвалид на левое полужопие мозга
я должен представлять в голове образы, а не абстгакции
я четко представляю себе функцию как типа мясорубку
в одну дырку помещается исходник, из другой дырки выходит переработанное
я так же боле менее представляю указатель
но я уже не представляю себе указатель на функцию
функции обратного вызова я вижу как веревку, за которую дергает какая-то функция, аргументом которой есть моя функция обратного вызова
я сейчас декомпилировал оберту шарповую над чистой длл
разглядываю исходник типа и вот обнаружил эти л и в парам
и перехват сообщений виндовса
т.е. есть константа wm_user которая 1024 и пользовательские сообщения, которые в длл определены со своими смещениями
Код: Выделить всё
// PSKCoreWrap.PSKCore
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 2024:
if (this.DataReady != null && this.Running)
{
this.DataReady(this, new DataReadyArgs((int)m.WParam, (int)m.LParam));
return;
}
break;
case 2025:
if (this.CharReady != null && this.Running)
{
this.CharReady(this, new CharReadyArgs((char)((int)m.WParam), (int)m.LParam));
return;
}
я правда не понял, что такое CharReady
CharReadyArgs это eventhandler
в шарпе оно вот так делается
Код: Выделить всё
private void frmMain_Load(object sender, EventArgs e)
{
// Hook up a DataReady event handler
_pskCore.DataReady += _pskCore_DataReady;
_pskCore.CharReady += _pskCore_CharReady;
}
хер знает как это работает и что значит
Код: Выделить всё
private void _pskCore_CharReady(object sender, CharReadyArgs e)
{
lblchar.Text = e.Character.ToString();
}
_pskCore_CharReady это типа обработчик события CharReady
а CharReadyArgs имеет свойство Character
new CharReadyArgs((char)((int)m.WParam), (int)m.LParam));
я так понимаю, что если сообщение имеет код case 2025: , то вызывается как раз функция обратного вызова CharReadyArgs и в нее передаются 2 переменные парам
когда мыш подводиш, то там всплывает подсказка и указаны уже конкретные переменные
если нажать на функцию, то перебрасывает на код
Код: Выделить всё
// PSKCoreWrap.CharReadyArgs
public CharReadyArgs(char Character, int Channel)
{
this.Character = Character;
this.Channel = Channel;
}
ты имел в виду это - своя функция, которая типа зажигает светодиоды
вобщем хер знает как это все устроено
