catch mouse event
-
Hello All I am trying to catch a right button down event for a control before the form sends it to this control; Is there any way to do that?
IMHO the event travels in the opposite direction, i.e. the message comes to the control that usually notify it to its parent. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
-
Hello All I am trying to catch a right button down event for a control before the form sends it to this control; Is there any way to do that?
Mouse events are sent by the system, not a form (unless you have a form that sends them). Subclass the control and you'll get the first look at the messages and you can decide what messages to let the control handle. Are you using MFC or straight Win32 APIs? Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
-
Mouse events are sent by the system, not a form (unless you have a form that sends them). Subclass the control and you'll get the first look at the messages and you can decide what messages to let the control handle. Are you using MFC or straight Win32 APIs? Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
Actually I am using MFC but I am able to use direct win32 And I got what you mean by sub classing the control, But the problem is that I am trying to catch mouse event send to a com component not an ordinary control, so that I can't subclass it, it is a black box But I believe that I should be able to catch the event through the default window Proc and before dispatching it, where the application itself dispatch the every event and send it any GUI item But I am new in that area so I found difficulty And I need help.
-
Actually I am using MFC but I am able to use direct win32 And I got what you mean by sub classing the control, But the problem is that I am trying to catch mouse event send to a com component not an ordinary control, so that I can't subclass it, it is a black box But I believe that I should be able to catch the event through the default window Proc and before dispatching it, where the application itself dispatch the every event and send it any GUI item But I am new in that area so I found difficulty And I need help.
In that case, override CWinApp::PreTranslateMessage()[^] in your application class. You can filter messages there. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
-
In that case, override CWinApp::PreTranslateMessage()[^] in your application class. You can filter messages there. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
many thx, it works and here is the code const UINT RBUTTONDOWN = 0x204; const UINT RBUTTONUP= 0x205; BOOL Cmfc01App::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case RBUTTONDOWN:return true; case RBUTTONUP:return true; default:CWinApp::PreTranslateMessage(pMsg); } }
-
many thx, it works and here is the code const UINT RBUTTONDOWN = 0x204; const UINT RBUTTONUP= 0x205; BOOL Cmfc01App::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case RBUTTONDOWN:return true; case RBUTTONUP:return true; default:CWinApp::PreTranslateMessage(pMsg); } }
Remember, that disables ALL RBUTTON messages for ALL windows :) You can also check the message and filter by HWND if you need to. Cheers, Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
-
Remember, that disables ALL RBUTTON messages for ALL windows :) You can also check the message and filter by HWND if you need to. Cheers, Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
hey i tried to use the handle to not disable all the RButton messages and i used this code but it fails BOOL Cmfc01App::PreTranslateMessage(MSG* pMsg) { CButton* pb = (CButton*) GetDlgItem( m_pMainWnd->m_hWnd,IDC_BUTTON5); switch (pMsg->message) { case RBUTTONDOWN:if(pMsg->hwnd==pb->m_hWnd)return true; default:CWinApp::PreTranslateMessage(pMsg); } } give me an exception " Access violation reading location 0x00100d46." plz help
-
hey i tried to use the handle to not disable all the RButton messages and i used this code but it fails BOOL Cmfc01App::PreTranslateMessage(MSG* pMsg) { CButton* pb = (CButton*) GetDlgItem( m_pMainWnd->m_hWnd,IDC_BUTTON5); switch (pMsg->message) { case RBUTTONDOWN:if(pMsg->hwnd==pb->m_hWnd)return true; default:CWinApp::PreTranslateMessage(pMsg); } } give me an exception " Access violation reading location 0x00100d46." plz help