Как поймать NM_RETURN в ListView'шнике
От: __Vovan_H__ Россия  
Дата: 23.12.04 08:14
Оценка:
ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??

Зараннее спасибо,
Вован.
Re: Как поймать NM_RETURN в ListView'шнике
От: Crab Украина  
Дата: 23.12.04 08:53
Оценка:
Здравствуйте, __Vovan_H__, Вы писали:

__V>ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??


__V>Зараннее спасибо,

__V>Вован.

Есть метод. У диалога переопределить PreTranslateMessage(), и там обрабатывать энтеры.

I'm the hero I'm back
With weapons and with magic spells
Re[2]: Как поймать NM_RETURN в ListView'шнике
От: __Vovan_H__ Россия  
Дата: 23.12.04 09:02
Оценка:
Здравствуйте, Crab, Вы писали:

C>Здравствуйте, __Vovan_H__, Вы писали:


__V>>ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??


__V>>Зараннее спасибо,

__V>>Вован.

C>Есть метод. У диалога переопределить PreTranslateMessage(), и там обрабатывать энтеры.


А эта функция тока в МФС классах?
я тока чистыми АПИшными средствами пользуюсь.. есть ли рецепт при таком раскладе вещей?
Re[3]: Как поймать NM_RETURN в ListView'шнике
От: Crab Украина  
Дата: 23.12.04 09:07
Оценка:
Здравствуйте, __Vovan_H__, Вы писали:

__V>Здравствуйте, Crab, Вы писали:


C>>Здравствуйте, __Vovan_H__, Вы писали:


__V>>>ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??


__V>>>Зараннее спасибо,

__V>>>Вован.

C>>Есть метод. У диалога переопределить PreTranslateMessage(), и там обрабатывать энтеры.


__V>А эта функция тока в МФС классах?

__V>я тока чистыми АПИшными средствами пользуюсь.. есть ли рецепт при таком раскладе вещей?

Нууу....

Можно сделать как в главном обработчике апликухи.

while (GetMessage())
DispatchMessage()

То же для PeekMessage()..... TranslateMessage()....

I'm the hero I'm back
With weapons and with magic spells
Re[4]: Как поймать NM_RETURN в ListView'шнике
От: __Vovan_H__ Россия  
Дата: 23.12.04 09:57
Оценка:
Здравствуйте, Crab, Вы писали:

C>Здравствуйте, __Vovan_H__, Вы писали:


__V>>Здравствуйте, Crab, Вы писали:


C>>>Здравствуйте, __Vovan_H__, Вы писали:


__V>>>>ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??


__V>>>>Зараннее спасибо,

__V>>>>Вован.

C>>>Есть метод. У диалога переопределить PreTranslateMessage(), и там обрабатывать энтеры.


__V>>А эта функция тока в МФС классах?

__V>>я тока чистыми АПИшными средствами пользуюсь.. есть ли рецепт при таком раскладе вещей?

C>Нууу....


C>Можно сделать как в главном обработчике апликухи.


C>while (GetMessage())

C> DispatchMessage()

C>То же для PeekMessage()..... TranslateMessage()....


Ясненько... спасибо большое буду дальше исследовать..
(просто это мне тоже не очень подходит, т.к. я сам лично не организовываю цикл выборки сообщений аппликухи — я просто в ресурсах создаю окно, пишу к нему Мессадж Хандлер (процедуру обработки оконных дилаговых сообщений) и все это запускаю с пом. DialogBox())
Re: Как поймать NM_RETURN в ListView'шнике
От: tdv  
Дата: 24.12.04 05:56
Оценка:
__V>ListView расположен на диалоговом окне, перехват нажатия конопок типа SPACE и т.п. — нормально... но вот как перехватить нажатие Ентера??

Я делаю это так.

LRESULT CALLBACK MyControlProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
 {
  WNDPROC oldwndproc=(WNDPROC)GetProp(hWnd,TEXT("NATIVEPROC"));
  if(msg==WM_NCDESTROY) RemoveProp(hWnd,TEXT("NATIVEPROC"));
  LRESULT res=CallWindowProc(oldwndproc,hWnd, msg,wParam,lParam);
  if(msg==WM_GETDLGCODE) 
   {
    if(lParam&&(((LPMSG)lParam)->message==WM_KEYDOWN)&&(((LPMSG)lParam)->wParam == VK_RETURN)) res|=DLGC_WANTMESSAGE;
   }
  return res;
 }

void SubclassControlForReturnProcessing(HWND hWnd)
 {
  WNDPROC nativeproc=(WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)MyControlProc);
  SetProp(hWnd,TEXT("NATIVEPROC"),(HANDLE)nativeproc);   // Save original window procedure
 }


Это надо вызывать например при обработке WM_INITDIALOG
SubclassControlForReturnProcessing(GetDlgItem(hWnd,IDC_LIST));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.