Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизКак преобразовать параметр сообщения WM_SETTEXT в строку? Найти похожие ветки
← →
Islander (2004-05-05 12:56) [0]Здравствуйте!
Посылаю свой одной форме текст
IntRes:=SendMessage(Handle,WM_SETTEXT ,0,LongInt(PChar(S)));
Как мне его у формы-получателя преобразовать в строку?
← →
Семен Сорокин © (2004-05-05 12:58) [1]StrPas + F1
← →
Digitman © (2004-05-05 13:01) [2]
> Посылаю свой одной форме текст
надо понимать, "свой одной форме" = "одной своей форме" ?
и это путешествие в соседний чум через Москву чем-то оправдано ?
← →
Islander (2004-05-05 14:17) [3]Да, это разные копии одного и того же моего приложения. Запускается вторая копия, я передаю первой параметры командной строки и выгружаю вторую
← →
Digitman © (2004-05-05 14:29) [4]
> передаю первой параметры командной строки
т.е. вот эта бодяга с WM_SETTEXT каким-то боком связана с передачей параметров ком.строки запуска ?!
← →
Islander (2004-05-05 14:33) [5]Ну грубо говоря, я делаю
S:=ParamStr (1);
SendMessage(FirstCopyFormHandle,WM_USER, MyConstant, LongInt(PChar(S)));
Где MyConstant спец. число, которое обозначает, что я передаю строку
← →
Skier © (2004-05-05 14:34) [6]>Islander (05.05.04 14:17) [3]
"В огороде бузина, а в Киеве дядька"
← →
oleg_art (2004-05-05 14:38) [7]To Islander:
procedure TControl.DefaultHandler(var Message);
var
P: PChar;
begin
with TMessage(Message) do
case Msg of
WM_GETTEXT:
begin
if FText <> nil then P := FText else P := "";
Result := StrLen(StrLCopy(PChar(LParam), P, WParam - 1));
end;
WM_GETTEXTLENGTH:
if FText = nil then Result := 0 else Result := StrLen(FText);
WM_SETTEXT:
begin
P := StrNew(PChar(LParam));
StrDispose(FText);
FText := P;
SendDockNotification(Msg, WParam, LParam);
end;
end;
end;
Вот тебе реал-ция в TControl.
← →
Digitman © (2004-05-05 14:40) [8]
> Skier © (05.05.04 14:34) [6]
согласен
← →
Skier © (2004-05-05 14:46) [9]>Islander (05.05.04 14:33) [5]
Попробуй объяснить более внятно, что нужно сделать...
...если нужен обмен данными между приложениями, то вполне можно использовать стандартное сообщение WM_COPYDATE,...если нужно запускать только одну копию приложения, то ответ ищи в FAQ на этом сайте и не только на этом, по этой теме ну очень много написано...
← →
Islander (2004-05-05 14:53) [10]2Skier
Надо передать строку из одного приложения в другое. Сейчас как раз разбираюсь с WM_COPYDATE
← →
Digitman © (2004-05-05 14:58) [11]
> Надо передать строку из одного приложения в другое
передать при старте оного ? на то есть ком.строка запуска
← →
Skier © (2004-05-05 14:59) [12]>Islander (05.05.04 14:53) [10]
> Сейчас как раз разбираюсь с WM_COPYDATE
только правильно WM_COPYDATA (я ошибся...)
← →
Islander (2004-05-05 15:41) [13]Кстати, появилась другая проблема. Почему-то у меня получается отправить сообщение WM_COPYDATA из своего окна своему же, вот из другой копии не получается. Хендл у меня точно верен, т.к. сообщение WM_USER доходит до другой копии, а вот WM_COPYDATA нет. Т.е. я ставлю брейку в обработчик этого сообщения и видно, что прога туда не заходит. Может быть, тут есть какие-нибудь подводные камни?
← →
Семен Сорокин © (2004-05-05 15:45) [14]Islander (05.05.04 15:41) [13]
может ты путаешь Application.Handle и MainForm.Handle?
← →
Islander (2004-05-05 15:46) [15]Нет, точно не путаю, я же говорию, WM_USER проходит.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c