CFormView not seeing control event
Ed Jennings -- edj@whidbey.com Tuesday, April 30, 1996 I am using VC++ 4.1 on Win NT 3.51. I have used Control Wizard to generate an OLE control. I have used the OLE Events tab of Class Wizard to add the standard MouseDown stock event to my control. To make my control container application I have: - used AppWizard to generate a SDI application that contains a CFormView class - used Insert Component to get VC++ to generate the files with the IDispatch wrapper class so my control can be accessed. - used the Message Maps tab of Class Wizard to get an event map sink and event handler generated for the MouseDown event of my control. Here's what gets inserted in my control container app by Class Wizard: BEGIN_EVENTSINK_MAP(CFv1View, CFormView) //{{AFX_EVENTSINK_MAP(CFv1View) ON_EVENT(CFv1View, IDC_AC1CTRL1, -605 /* MouseDown */, OnMouseDownAc1ctrl1, VTS_I2 VTS_I2 VTS_I4 VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CFv1View::OnMouseDownAc1ctrl1(short Button, short Shift, long x, long y) { // TODO: Add your control notification handler code here } The control gets created in the control container app when the user picks a menu item. This creation is done by calling the wrapper class Create() which in turn calls CreateControl(). When the cursor is positioned over my control and the mouse is pressed down my control container application's CFormView's OnMouseDownAc1ctrl1 function never gets called. I have also tried making the MouseDown a custom event in my control and this does not work either. I have verified that the FireMouseDown() is called from my control when I made the MouseDown a custom event. Why isn't my control container's OnMouseDownAc1ctrl1() getting called? Any suggestions to what I might be doing wrong would be greatly appreciated. Thanks. - Ed ===================================================== Ed Jennings Email : edj@whidbey.com Jennings & Associates 6215 S. Windfall Rd. Voice : 360-341-3868 Clinton, WA 98236 =====================================================
Mike Blaszczak -- mikeblas@interserv.com Wednesday, May 01, 1996 [Mini-digest: 2 responses] On Tue, 30 Apr 1996, Ed Jenningswrote: >I am using VC++ 4.1 on Win NT 3.51. Thanks. >Why isn't my control container's OnMouseDownAc1ctrl1() getting >called? Maybe you didn't create the control the same ID you used in the EVENT_SINK() map. You said you coded > ON_EVENT(CFv1View, IDC_AC1CTRL1, -605 /* MouseDown */, if you didn't call Create() to make the control to be IDC_AC1CTRL1, MFC will not be able to match the event notification from the control to the entry in the map. >Any suggestions to what I might be doing wrong would be greatly >appreciated. If you insert your control in the Test Container and use the event log, are the events found by the Test Container as you would expect? > Clinton, WA 98236 Three weekends ago, I went through that town. What do the police cars look like in that part of Washington? I never speed, but it's always nice to know. .B ekiM -- TCHAR szDisc[] = _T("These words are my own; I do not speak for Microsoft."); -----From: Mark Kramer Ed - Check to make sure that the ID you give the control in the Create() function is the same ID that you have in the event map. Mark
| Вернуться в корень Архива |