LButton Press Problem
Shankara Narayana Giri -- giri@ndrgw.ndr.co.jp Wednesday, May 15, 1996 Environment : WIN 95, WINNT 3.51, VC4.0, VB 4.0 Hello EveryBody, I hope somebody might have experienced the same problem. Please help me if anyone does. Thanks in advance. Here is my problem. I have a OCX built with OLE ControlWizard. The only addition I have made to it is to trap WM_LBUTTONDOWN. void CMsgtestCtrl::OnLButtonDown(UINT nFlags, CPoint point) { MessageBox("here"); COleControl::OnLButtonDown(nFlags, point); } Then I used VB 4.0 to test it. What I did was to place 2 objects of the same OCX on a form. Let me call it msgtest1 and msgtest2. I hope when I place a few controls upon a VB form, the focus lies with the oldest one(Am I right?). After placing them on the form, I ran it from within VB. I clicked msgtest2(2nd object). My MessageBox got displayed. But from then wherever I click, whether on the form or outside the form, or on window of some other application, My MessageBox kept on appearing. Even I could not STOP the program, nor I was able to destroy the form window. So, finally I had to use right button of the mouse to display some properties and change the focus. I also tried clicking msgtest1(First object) first. Until I clicked the second object, evrything went fine. But once clicked it, same thing happened once again. I also tried the same thing with TEST CONTAINER supplied with VC 4.0 The result was the same, the only difference being that in the case Test Container, the focus lies with the youngest control. So once I happened to click the First object, the problem started. Can anybody thow light upon this ASAP? Is displaying Message Box inside OnLButtonDown itself is a mistake? Also, I need one more help. Can anybody teach me how to use DUAL interface to achieve direct communication between OCXs on VB form? Thanks once again, S.N. GIRI ---------------------------------------------------------------- SHANKARA NARAYANA GIRI Residential Address: Design Division 606, SUNSHINE MKM IMAZATO Development & Engineering Dept. 10-5,O IMAZATO-NISHI 3-CHOME NDR Co. Ltd. HIGASHI NARI-KU OSAKA, JAPAN OSAKA 537, JAPAN e-mail: giri@ndrgw.ndr.co.jp Tel : 81-6-539-5511 (OFF) Tel : 81-6-977-1517(RES) 81-6-539-5512 (OFF) Fax : 81-6-539-2111 (OFF) ----------------------------------------------------------------
Mark Kramer -- markkra@microsoft.com Tuesday, May 21, 1996 Your problem is that even though you have handled the WM_LBUTTONDOWN message yourself, you are still passing it on to the default behavior provided by COleControl. Do it like this and it will work. > void CMsgtestCtrl::OnLButtonDown(UINT nFlags, CPoint point) > { > MessageBox("here"); // COleControl::OnLButtonDown(nFlags, point); <== remove >this line > } If you step in to the COleControl code, you will see that there is a SetCapture() happening that gets released in the button up code. Your dialog box is short circuiting the button up message and so your ocx gets stuck with a captured mouse. Good luck. >From the desk of ... Mark Kramer MFC QA >---------- >From: Shankara Narayana Giri[SMTP:giri@ndrgw.ndr.co.jp] >Sent: Wednesday, May 15, 1996 12:31 AM >To: mfc-l@netcom.com >Cc: miyamoto@ndrgw.ndr.co.jp; itomen@ndrgw.ndr.co.jp >Subject: LButton Press Problem > > > > Environment : WIN 95, WINNT 3.51, VC4.0, VB 4.0 > > Hello EveryBody, > > I hope somebody might have experienced the same problem. >Please > help me if anyone does. Thanks in advance. > > Here is my problem. > > I have a OCX built with OLE ControlWizard. The only addition I >have made > to it is to trap WM_LBUTTONDOWN. > > void CMsgtestCtrl::OnLButtonDown(UINT nFlags, CPoint point) > { > MessageBox("here"); > COleControl::OnLButtonDown(nFlags, point); > } > > Then I used VB 4.0 to test it. What I did was to place 2 >objects of the > same OCX on a form. Let me call it msgtest1 and msgtest2. I >hope when > I place a few controls upon a VB form, the focus lies with the >oldest > one(Am I right?). After placing them on the form, I ran it from >within > VB. > > I clicked msgtest2(2nd object). My MessageBox got displayed. >But from > then wherever I click, whether on the form or outside the form, >or on > window of some other application, My MessageBox kept on >appearing. Even > I could not STOP the program, nor I was able to destroy the >form window. > So, finally I had to use right button of the mouse to display >some > properties and change the focus. > > I also tried clicking msgtest1(First object) first. Until I >clicked the > second object, evrything went fine. But once clicked it, same >thing > happened once again. > > I also tried the same thing with TEST CONTAINER supplied with >VC 4.0 > The result was the same, the only difference being that in the >case > Test Container, the focus lies with the youngest control. So >once I > happened to click the First object, the problem started. > > Can anybody thow light upon this ASAP? Is displaying Message >Box > inside OnLButtonDown itself is a mistake? > > Also, I need one more help. Can anybody teach me how to use >DUAL > interface to achieve direct communication between OCXs on VB >form? > > Thanks once again, > S.N. GIRI > > >---------------------------------------------------------------- > > SHANKARA NARAYANA GIRI > > Residential Address: >Design Division 606, SUNSHINE MKM IMAZATO >Development & Engineering Dept. 10-5,O IMAZATO-NISHI 3-CHOME >NDR Co. Ltd. HIGASHI NARI-KU >OSAKA, JAPAN OSAKA 537, JAPAN >e-mail: giri@ndrgw.ndr.co.jp > >Tel : 81-6-539-5511 (OFF) Tel : 81-6-977-1517(RES) > 81-6-539-5512 (OFF) > >Fax : 81-6-539-2111 (OFF) >---------------------------------------------------------------- >
| Вернуться в корень Архива |