![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает Tab в форме [D2005]
Alex_Y © (2009-03-26 12:24:00)Привет всем.
Столкнулся со следующим:
В dll создаю форму
function ShowInfoDialog(const App : HWND) : HWND; stdCall;
begin
Result := 0;
Application.Handle := App;
with TfmInfo.Create(Application) do
try
Result := Handle;
Show;
except on E: Exception do begin
MessageBox(Application.Handle, pChar(E.Message), MSG_ERROR, MB_OK);
Free;
end; end;
end;
На форме несколько едитов.
Вызываю из другого приложения. Все нормально открывается, работает как надо, но не работают клавиши Tab, Esc и пр., только бип звучит что типа нажатие недоступно.
Хотя если вместо Show сделать ShowModal, то все прекрасно работает.
Мож кто сталкивался? Где я чего мог пропустить, а то голова уже не варит под вечер.
Заранее спасибо.
Alex_Y (2009-03-26 14:30:00) [1]понятно, будем пробовать, спасибо за подсказку
Сергей М. (2009-03-26 14:22:00) [2]см. SetWindowLong
Alex_Y (2009-03-26 14:21:00) [3]а как это сделать, если не секрет?
Сергей М. (2009-03-26 14:13:00) [4]Подменять оконную ф-цию переданного окна на свою.
Это и будет ректальным способом)
Alex_Y (2009-03-26 14:03:00) [5]да, так и есть, я это прекрасно понимаю, только чего делать-то?
Сергей М. (2009-03-26 13:57:00) [6]
> в мою lkk передаю хэндл этого приложения
У приложения нетхэндла.
Требуемый в твоей lkk хэндл есть хэндл окна. И не просто какого-то там окна. а некоего "главного окна".
Alex_Y (2009-03-26 13:38:00) [7]идея в чем - есть сторонне приложение, в нем свой макроязык, на этом языке из этого приложения вызываю функию показа моего окна из моей длл.
в мою lkk передаю хэндл этого приложения
Сергей М. (2009-03-26 13:37:00) [8]
> этого приложения
Чего "этого приложения" ?
Alex_Y (2009-03-26 13:36:00) [9]этого приложения
Сергей М. (2009-03-26 13:35:00) [10]
> я оттуда могу даже интерфейс передать
Не понял, откуда куда "можешь" и что за интерфейс ?
Сергей М. (2009-03-26 13:33:00) [11]
> приходит HWND этого приложения
Приложения может не создавать ни единого окна, равно как может создавать множество окон, да еще и в разных кодовых потоках.
Так я и задаю вопрос : хэндл какогоиз окон тебе передает это самое "конкретное левое приложение" ? Или ему фиолетово какой передавать ? Или тебе фиолетово какой ожидать ?
Alex_Y (2009-03-26 13:31:00) [12]в принципе я оттуда могу даже интерфейс передать (что и делаю) но для данной проблемы это не поможет
Alex_Y (2009-03-26 13:28:00) [13]Сергей М.
функция вызывается из конкретного приложения, приходит HWND этого приложения. приложение левое, со своим метаязыком из которого и вызываю
clickmaker (2009-03-26 13:21:00) [14]> Хотя если вместо Show сделать ShowModal, то все прекрасно
> работает.
ShowModal запускает отдельный цикл обработки сообщений, независимый от основного. Поэтому и работает.
Сергей М. (2009-03-26 13:19:00) [15]Не надо решать задачу через задний проход.
Вопрос тебе на засыпку: хендл какого окна ты ожидаешь получать параметром в свой ф-ции, если она будет вызвана, например, из приложения, разработанного в среде Visual Suahili ?
Alex_Y (2009-03-26 12:56:00) [16]например?
Сергей М. (2009-03-26 12:45:00) [17]Решаемо, но искл-но ректальным способом
Alex_Y (2009-03-26 12:40:00) [18]а это решаемо?
Сергей М. (2009-03-26 12:37:00) [19]
> Где я чего мог пропустить
Чужое приложение попросту знать ничего не знает о том как обрабатывать WM_TAB в твоейформе