|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отправка сообщения с помощью SendMessage()
Всем доброго времени суток. У меня такая проблема - необходимо в программе через SendMessage() отправить сообщение самому себе. Делаю так:
1. Объявляю константы сообщения: const WM_MY_MESSAGES = WM_USER + 1983; MSG_ADD2LOG = WM_MY_MESSAGES + 1; 2. Декларирую обработчик в главной форме приложения: // Мои обработчики событий procedure OnMsg_ADD2LOG(var Msg: TMessage); message MSG_ADD2LOG; 3. Мне необходимо отправить сообщение с неким параметром, в данном случае это указатель на строку pChar. Делаю так: var ErrMsg: string; pErr: pChar; begin pErr := '123'; SendMessage(Handle, MSG_ADD2LOG, 0, Integer(@pErr)); 4. В обработчике OnMsg_ADD2LOG пишу: procedure TfrmMain.OnMsg_ADD2LOG(var Msg: TMessage); var pErr: PChar; begin ShowMessage('da da da!!!'); pErr := PChar(Pointer(Msg.LParam)^); ShowMessage(pErr); end; Вопрос: правомерна ли такая передача параметра, не будет ли утечки памяти (ведь созданная строка не освобождается), правильно ли передавать указатель на локальную переменную, память под которую будет освобождена при выходе из функции? |
#2
|
||||
|
||||
Цитата:
Конечно, да ты не имеешь права освобождать память в обработчике сообщения --------------------------------------------- Программирование - не профессия, а стиль жизни |
#3
|
||||
|
||||
dzr_gregory, не совсем понятно, зачем передавать указатель на указатель??? Тип PChar это указатель на символ (строку), т.е. запись @pErr это указатель на указатель.
Не профи, но и не чайник . D6 - лучше не придумали. Пока. |
#4
|
|||
|
|||
Цитата:
|