Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обработать сообщение


Страницы:   1 2

Юрий_К ©   (2007-08-14 23:31:00) 

Добавkztvм к примеру в контекстное меню в подменю "Open With" функцией InsertMenuItem свой пункт с WMID = 1111 и со строкой названия некоторой программы (например Notepad). В листбоксе с названиями файлов по правой кнопке вызывается меню и по нажатию на этот пункт подменю та программа должна начать работу с этим файлом. Как эту обработку сообщения WM_COMMAND с WMID = 1111 добавить в основную программу на Delphi, где этот листбокс и находится?


Юрий_К   (2007-08-16 00:15:00) [21]

Нет захода в функцию TFormMain.WMCommand вообще.


Юрий_К   (2007-08-16 00:13:00) [22]

Не помогло, не знаю, что не так.
Коды такие:
В ДЛЛ на СИ, вызывается программой на Дельфи.

                 if (nOpenWith >= 0)
                 {
                   char szText[] = "Notepad";
                  MENUITEMINFO mii = {
                   sizeof(mii),
                   MIIM_TYPE,
                   MFT_STRING,
                   0,
                   wmID,
                   0,
                   0,
                   0,
                   0,
                   szText,
                     sizeof(szText)};
                   InsertMenuItem(hSubMenu, nCnt, true, &mii);
                   
                 }

В программе на Дельфи.

procedure TFormMain.WMCommand(var Message: TWMCommand);
var sPath: string;
begin
 if (Message.ItemID = 1111) then
 begin
   sPath := lstFiles.Items[lstFiles.ItemIndex];
   ShellExecute(0, 'open', 'notepad.exe', PCHAR(sPath), nil, SW_SHOWNORMAL);
 end
 else
   inherited;
end;


DrPass   (2007-08-15 13:44:00) [23]

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


Юрий_К   (2007-08-15 13:41:00) [24]

"б) добавить к ее форме обработчик WM_COMMAND и перекомпилировать"

Добавить как? Просто этого делать не приходилось. Обработка сообщений происходить в модуле Forms, не туда же добавлять.


DrPass   (2007-08-14 23:47:00) [25]

Ну... если исходников нет, то
а) Внедрить туда свою DLL, с ее помощью подменить оконную функцию той формы, в новой оконной функции обрабатывать WM_COMMAND либо в остальных случаях передавать управление старой оконной функции
Если исходники есть, то
б) добавить к ее форме обработчик WM_COMMAND и перекомпилировать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо