Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

WM_SETTEXT   Найти похожие ветки 

 
Lexa1900   (2002-11-03 00:48) [0]

var h:hwnd;
txt:string;
begin
txt:="Hello, World!";
//допустим h - это уже handle какого-нибудь Edit"a
SendMessage(h,WM_SETTEXT,0,Longint(PChar(txt)));
end;

Почему не получается осуществить данную процедуру, если в поле ввода той программы, которой передаём команду, нельзя вставлять что-либо из буфера. Как вообще действует эта sw_settext?

Спасибо, что после прочтения собрались ответить.


 
Ihor Osov'yak   (2002-11-03 02:56) [1]

Ой леха, с тебя сегодня пиво.

SendMessage(h,WM_SETTEXT,0,Longint(PChar(txt))) будет успешным тогда, когда оконная процедура соотв. окошка обрабатывает WM_SETTEXT, и обрабатывает так, как ты этого хочешь, то есть принимает текст. А это уже в руках разработчика соответствующего
контрола (а в общем случае и не только в его руках). То есть - хочу - обрабатываю, а не хочу - ну и нет.

А вообще возьми почитай про обработку и маршрутизацию сообщений в какой-то толковой книжке ....


 
Ich Hasse   (2002-11-03 10:43) [2]

Функция SetWindowText(hWindow,PChar(text)); вроде должно работать


 
Ihor Osov'yak   (2002-11-03 11:25) [3]


2 Ich Hasse © (03.11.02 10:43)

Смотрим MSDN:

- An application sends a WM_SETTEXT message to set the text of a window.

- The SetWindowText function changes the text of the specified window"s title bar (if it has one). If the specified window is a control, the text of the control is changed. However, SetWindowText cannot change the text of a control in another application.

То есть SetWindowText - для установки "title bar", SendMessage(h,WM_SETTEXT - для установки текста. То есть, это несколько разные вещи. Кроме того - SetWindowText cannot change the text of a control in another application. - хотя, если мне не изменяет память, Юрий Зотов здесь примерно месяц назад утверждал, что SetWindowText все же работает и для чужого приложения. Я этого не проверял, так что ни подтвердить, ни опровергнуть не могу. Не проверял по той причине, что раз написано "не работает", а на самом деле работает - то может после очередного сервиспака или в очередной версии винды перестать работать....

Но еще раз повторюсь - реакция на WM_SETTEXT в руках автора "другого" приложения, а не наших, и не всегда эта реакция будет такой, как нам нужно/мы ожидаем. SetWindowText - в общем случае устанавливает не видимый текст, а заголовок окна. Хотя и есть контролы, в которых заголовок окна интерпритируется как видимый текст.

PS. Cорри перед Юрием Зотовым, если меня память подвела. Такой вариант также не исключен.


 
Song   (2002-11-03 11:47) [4]

WM_SETTEXT работает для всех визуальных контролов, которые были созданы из соответствующих АПИ контролов (CreateWindow). Поэтому например, для контролов, которые были созданы через Java, сообщение работать не будет.
Для едита эта преемственность сохраняется в любом случае т.к. это обычное edit окно АПИ.


 
Ihor Osov'yak   (2002-11-03 14:28) [5]

2 Song © (03.11.02 11:47)


> WM_SETTEXT работает для всех визуальных контролов, которые
> были созданы из соответствующих АПИ контролов (CreateWindow).


Не совсем корректное высказывание. Вы, возможно, имеете ввиду
стандартные делфийские контролы. Но никто не мешает автору программы или контрола применить сабклассинг, в котором будет перехватыватся WM_SETTEXT с последующим игнором.
Или что значительно более вероятно в соотв. оконной процедуре для "не АПИ контролов" напрочь игнорировать тот же WM_SETTEXT.

Зы. Недельки две назад имел очень долгий акт с некоторыми mfc контролами в "чужой" порограмме, которые напрочь игнорировали всякие SetWindowText/GetWindowText, WM_SETTEXT/WM_GETTEXT ...
Поверте мне, очень было увлекательним занятие на предмет получения текста с этих контролов...




 
Song   (2002-11-03 22:25) [6]

Я не имел ввиду те контролы, у которых принудительно перехватывается оконный обработчик и сообщение вырезается хирурически.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
14-51962
id_privin
2002-11-26 13:13
2002.12.16
Переход D5->D7


14-51923
han_malign
2002-11-25 12:58
2002.12.16
Opera 7+ Win98+ UniCirillic


1-51668
--Magic--
2002-12-04 15:44
2002.12.16
Перестал открываться файл проекта


4-51992
Nick N A
2002-10-27 06:58
2002.12.16
Enum & CallBack


14-51956
danilka
2002-11-26 09:30
2002.12.16
разбор математических выражений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский