Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.10;
Скачать: CL | DM;

Вниз

Не работает Tab в форме   Найти похожие ветки 

 
Alex_Y   (2009-03-26 12:24) [0]

Привет всем.
Столкнулся со следующим:
В 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, то все прекрасно работает.
Мож кто сталкивался? Где я чего мог пропустить, а то голова уже не варит под вечер.

Заранее спасибо.


 
Сергей М. ©   (2009-03-26 12:37) [1]


> Где я чего мог пропустить


Чужое приложение попросту знать ничего не знает о том как обрабатывать WM_TAB в твоей форме


 
Alex_Y   (2009-03-26 12:40) [2]

а это решаемо?


 
Сергей М. ©   (2009-03-26 12:45) [3]

Решаемо, но искл-но ректальным способом


 
Alex_Y   (2009-03-26 12:56) [4]

например?


 
Сергей М. ©   (2009-03-26 13:19) [5]

Не надо решать задачу через задний проход.

Вопрос тебе на засыпку: хендл какого окна ты ожидаешь получать параметром в свой ф-ции, если она будет вызвана, например, из приложения, разработанного в среде Visual Suahili ?


 
clickmaker ©   (2009-03-26 13:21) [6]

> Хотя если вместо Show сделать ShowModal, то все прекрасно
> работает.

ShowModal запускает отдельный цикл обработки сообщений, независимый от основного. Поэтому и работает.


 
Alex_Y   (2009-03-26 13:28) [7]

Сергей М.
функция вызывается из конкретного приложения, приходит HWND этого приложения. приложение левое, со своим метаязыком из которого и вызываю


 
Alex_Y   (2009-03-26 13:31) [8]

в принципе я оттуда могу даже интерфейс передать (что и делаю) но для данной проблемы это не поможет


 
Сергей М. ©   (2009-03-26 13:33) [9]


> приходит HWND этого приложения


Приложения может не создавать ни единого окна, равно как может создавать множество окон, да еще и в разных кодовых потоках.

Так я и задаю вопрос : хэндл какого из окон тебе передает это самое "конкретное левое приложение" ? Или ему фиолетово какой передавать ? Или тебе фиолетово какой ожидать ?


 
Сергей М. ©   (2009-03-26 13:35) [10]


> я оттуда могу даже интерфейс передать


Не понял, откуда куда "можешь" и что за интерфейс ?


 
Alex_Y   (2009-03-26 13:36) [11]

этого приложения


 
Сергей М. ©   (2009-03-26 13:37) [12]


> этого приложения


Чего "этого приложения" ?


 
Alex_Y   (2009-03-26 13:38) [13]

идея в чем - есть сторонне приложение, в нем свой макроязык, на этом языке из этого приложения вызываю функию показа моего окна из моей длл.
в мою lkk передаю хэндл этого приложения


 
Сергей М. ©   (2009-03-26 13:57) [14]


> в мою lkk передаю хэндл этого приложения


У приложения нет хэндла.
Требуемый в твоей lkk хэндл есть хэндл окна. И не просто какого-то там окна. а некоего "главного окна".


 
Alex_Y   (2009-03-26 14:03) [15]

да, так и есть, я это прекрасно понимаю, только чего делать-то?


 
Сергей М. ©   (2009-03-26 14:13) [16]

Подменять оконную ф-цию переданного окна на свою.
Это и будет ректальным способом)


 
Alex_Y   (2009-03-26 14:21) [17]

а как это сделать, если не секрет?


 
Сергей М. ©   (2009-03-26 14:22) [18]

см. SetWindowLong


 
Alex_Y   (2009-03-26 14:30) [19]

понятно, будем пробовать, спасибо за подсказку



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

Текущий архив: 2009.05.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
15-1236203903
Германн
2009-03-05 00:58
2009.05.10
Welcom Page


2-1238076003
igorntk
2009-03-26 17:00
2009.05.10
Как запретить дублирование данных в поле таблицы?


2-1238493524
начинающий96
2009-03-31 13:58
2009.05.10
ООП


2-1238427650
Brauberg
2009-03-30 19:40
2009.05.10
Поиск и запись в строке


10-1155886244
Alvin
2006-08-18 11:30
2009.05.10
Защита документа Word