PDA

Просмотр полной версии : Вопросы по Win Api :-))


frostmourne
19.02.2009, 19:51
Какой функцией можно воспользоваться чтобы передать текст из приложения в делфи в окно класса edit. Дескриптор окна известен, нужно сделать так чтобы при нажатии кнопки в делфи текст из edit1 передавался в открытое окно блокнота например

Serhio_61
19.02.2009, 20:41
Несколько лет не касался,так что сорри,если где совру...
SetWindowText или более рабочее SendMessage c WM_SETTEXT

frostmourne
19.02.2009, 21:03
Несколько лет не касался,так что сорри,если где совру...
SetWindowText или более рабочее SendMessage c WM_SETTEXT

Не работает. Либо я делаю неправильно подскажите плз как надо?

Serhio_61
19.02.2009, 23:32
Не исключено,что окно-приёмник надо обновить...

frostmourne
20.02.2009, 14:27
Не исключено,что окно-приёмник надо обновить...

По подробнее можно?

Serhio_61
20.02.2009, 16:39
По подробнее можно?
Точно не упомню,что-то вроде UpdateWindow...

Не мешает посмотреть стили окна-приёмника,может ли оно вообще принимать(хранить) строку.
Кстати,как вариант,текст(как изображение) в окне-приёмнике может просто рисоваться на DC,а текст(как последовательность символов) может храниться где-нибудь в буфере.

Vasuha
20.02.2009, 17:36
var s:string;
begin
SendMessage(Edit1.Handle, WM_SETTEXT, Length(s) + 1, Integer(s));
end;
Так делаете?

frostmourne
20.02.2009, 20:26
Vasuha спасибо все получилось

frostmourne
23.02.2009, 12:21
Мне нужно получить текст окна зная его дескриптор. Знаю что можно воспользоваться функцией WM_GETTEXT но как правильно её использовать я не знаю. Подскажите пожалуйста

Serhio_61
23.02.2009, 17:55
Да просто:
Пардон за С...

int CharCount=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);
char Txt[CharCount+1];
SendMessage(hWnd,WM_GETTEXT,(WPARAM)(CharCount+1), (LPARAM)Txt);

в итоге в Txt - текст из окна...

frostmourne
24.02.2009, 13:53
У меня еще такая проблемка: имеются 2 дочерних окна с одинаковыми классами и без названия(окна класса edit) я не могу обратиться ко второму окну подскажите как это сделать?

zss
24.02.2009, 16:34
В Visual Studio дескриптор дочернего окна возвращается фнкцией
HWND hwnd_x=GetDlgItem(hwnd,IDC_X);
IDC_X - это ID, присвоенное Вами окну при его создании.

frostmourne
24.02.2009, 16:42
В Visual Studio дескриптор дочернего окна возвращается фнкцией
HWND hwnd_x=GetDlgItem(hwnd,IDC_X);
IDC_X - это ID, присвоенное Вами окну при его создании.

Я не создаю это окно, оно из другого приложения. И еще желательно как это делать в делфи а не С++

Добавлено через 37 минут
И еще вопрос: ws32 показывает дескриптор окна, но когда я его использую то выдается ошибка несоответствия типов. Как преобразовать то что выдает ws32 в HWND?

Vasuha
25.02.2009, 10:36
У меня еще такая проблемка: имеются 2 дочерних окна с одинаковыми классами и без названия(окна класса edit) я не могу обратиться ко второму окну подскажите как это сделать?

А как насчет EnumChildWindows..

Serhio_61
25.02.2009, 23:57
А как насчет EnumChildWindows.. от родительского окна.

frostmourne
27.02.2009, 18:26
Вот еще вопрос: Как сделать так чтобы можно было получить текст окна и передать его в richedit при этом текст чтобы сохранял стиль шрифта, цвет и т.д? wm_gettext и wm_settext вставляют текст не сохраняя стилей