Разработка прикладных программ для ОС WINDOWS с помощью интегрированных сред Delphi / C++Builder. Баканов В.М. - 14 стр.

UptoLike

Составители: 

- 14 -
общение. При равенстве этого параметра HWND_BROADCAST сообщение
передается всем окнам верхнего уровня в системе (включая недоступные, не-
видимые, перекрытые другими и всплывающие), за исключением дочерних
окон. Если этот параметр равен NULL, то сообщение ставится в очередь (ес-
ли она есть) сообщений текущего процесса. Параметр Msg определяет собст-
венно передаваемое сообщение, параметры
wParam и lParam содержат до-
полнительную информацию (при необходимости). При успехе функция
PostMessage возвращает ненулевое значение, при неудаче - нуль (причину
ошибки можно установить вызовом функции GetLastError).
LPRESULT
SendMessage(HWND hwnd, // дескриптор окна, которому
// передается сообщение
UINT Msg, // собственно сообщение
WPARAM wParam, // первый параметр сообщения
LPARAM lParam); // второй параметр сообщения
Параметры функции SendMessage в основном идентичны таковым функ-
ции PostMessage; возвращаемое функцией значение зависит от вида сообще-
ний.
При непрямой передаче сообщение помещается в очередь окна-адресата;
если очередь не пуста, окно получит данное сообщение лишь после обработ-
ки всех предыдущих (на что потребно некоторое время).
При прямой передаче
происходит обращение непосредственно к процеду-
ре окна, минуя очередь (применяется при необходимости немедленной реак-
ции на сообщение). Например, следующее WINDOWS API-предписание по-
сылает сообщение EM_LINEFROMCHAR компоненту (понятие компонента
см. ниже) Memo_1 с целью получения номера первого выделенного в
Memo_1 символа
var
LineNumb: Longint; { номер начального символа
выделенного участка текста в Memo_1 }
LineNumb:=SendMessage(Memo_1.Handle,EM_LINEFROMCHAR,
Memo_1.SelStart, 0);
В системах C++Builder и Delphi определена (в качестве метода класса
TControl) функция Perform, обладающей функциональностью вышеприве-
денных
int __fastcall Perform(Cardinal Msg,
int WParam,
int LParam);
                                       - 14 -


общение. При равенстве этого параметра HWND_BROADCAST сообщение
передается всем окнам верхнего уровня в системе (включая недоступные, не-
видимые, перекрытые другими и всплывающие), за исключением дочерних
окон. Если этот параметр равен NULL, то сообщение ставится в очередь (ес-
ли она есть) сообщений текущего процесса. Параметр Msg определяет собст-
венно передаваемое сообщение, параметры wParam и lParam содержат до-
полнительную информацию (при необходимости). При успехе функция
PostMessage возвращает ненулевое значение, при неудаче - нуль (причину
ошибки можно установить вызовом функции GetLastError).

LPRESULT
SendMessage(HWND hwnd, // дескриптор окна, которому
                         // передается сообщение
            UINT Msg, // собственно сообщение
            WPARAM wParam, // первый параметр сообщения
            LPARAM lParam); // второй параметр сообщения

    Параметры функции SendMessage в основном идентичны таковым функ-
ции PostMessage; возвращаемое функцией значение зависит от вида сообще-
ний.
   При непрямой передаче сообщение помещается в очередь окна-адресата;
если очередь не пуста, окно получит данное сообщение лишь после обработ-
ки всех предыдущих (на что потребно некоторое время).
   При прямой передаче происходит обращение непосредственно к процеду-
ре окна, минуя очередь (применяется при необходимости немедленной реак-
ции на сообщение). Например, следующее WINDOWS API-предписание по-
сылает сообщение EM_LINEFROMCHAR компоненту (понятие компонента
см. ниже) Memo_1 с целью получения номера первого выделенного в
Memo_1 символа

var
  LineNumb: Longint; { номер начального символа
                       выделенного участка текста в Memo_1 }
  LineNumb:=SendMessage(Memo_1.Handle,EM_LINEFROMCHAR,
                           Memo_1.SelStart, 0);

   В системах C++Builder и Delphi определена (в качестве метода класса
TControl) функция Perform, обладающей функциональностью вышеприве-
денных

int __fastcall Perform(Cardinal Msg,
                       int WParam,
                       int LParam);