Solved

protection fault on VB Menu

Posted on 2000-03-19
14
152 Views
Last Modified: 2010-05-02
I have a form wich contain menu with the following items:

File
    Open
    Save

I also have a timer that call the property mnuFile.Visible = False

The problem is that if I press the File
and then place the mouse on the Open/Save sub menus, I have a "Protection Fault" the minute the timer call it's property.

How do I solve it?
 
0
Comment
Question by:ofirg
  • 5
  • 4
  • 3
  • +2
14 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 2633616
I couldn't reproduce your problem; in fact when I was on the Open/Save menus, and the timer did the File menu unvisible, the submenu remained visible until i clicked it, but not Protection Fault. There must be something else.

ET: more input, more input
0
 
LVL 28

Expert Comment

by:AzraSound
ID: 2633777
I couldnt reproduce it either
0
 
LVL 28

Expert Comment

by:AzraSound
ID: 2633795
actually i found where i could get an error...if i had the menu open and then when file disappeared, if I tried to move the mouse while file was missing it would crash the program.  
0
 
LVL 27

Expert Comment

by:Ark
ID: 2634202
Hi
Sorry, if I don't understand question, but what's about:
Private Sub mnuFile_Click ()
  Timer1.Enabled = False
End Sub

Cheers
0
 
LVL 32

Expert Comment

by:Erick37
ID: 2634515
I was able to reproduce the Fault in VB5.  By calling PopupMenu before hiding the menu stops the crash:

Option Explicit

Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 1000
End Sub

Private Sub mnuFile_Click()
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    PopupMenu mnuFile
    mnuFile.Visible = False
    Timer1.Enabled = False
End Sub
0
 
LVL 1

Author Comment

by:ofirg
ID: 2636645
The PopUpMenu opens all the time
and as a meter of fact have nothing to do with the problem!
Sorry.
0
 
LVL 1

Author Comment

by:ofirg
ID: 2636646
This question has a deletion request Pending
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 32

Expert Comment

by:Erick37
ID: 2637045
This question no longer is pending deletion
0
 
LVL 32

Expert Comment

by:Erick37
ID: 2637046
Can you post the code you are using?
It is unusual to hide a menu while it is opened, if in fact this is what you are doing.

Without knowing more about what you are trying to do, everyone is speculating.

Perhaps you noticed the menu popup all the time because you did not disable the timer once the menu was hidden.

Private Sub Timer1_Timer()
    PopupMenu mnuFile
    mnuFile.Visible = False
    'Disable timer
    Timer1.Enabled = False
End Sub
0
 
LVL 1

Author Comment

by:ofirg
ID: 2637102
Ok... let us be more specific.

How can I refresh the menu with API call

I think this will close all the open sub
menus.


0
 
LVL 28

Expert Comment

by:AzraSound
ID: 2637199
i tried the popup menu option that Erick posted and it closed the submenus for me...only thing to change is to allow for the File menu option to become visible again
0
 
LVL 32

Accepted Solution

by:
Erick37 earned 100 total points
ID: 2637742
Send the WM_CANCELMODE message to your window to close the opened submenus:

Option Explicit

Const WM_CANCELMODE = &H1F
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, lParam As Any) As Long

Private Sub Command1_Click()
    mnuFile.Visible = True
    mnuFile.Enabled = True
End Sub

Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 1000
End Sub

Private Sub mnuFile_Click()
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Call SendMessage(Me.hwnd, WM_CANCELMODE, 0, 0)
    mnuFile.Enabled = False
    mnuFile.Visible = False
    Timer1.Enabled = False
End Sub

0
 
LVL 32

Expert Comment

by:Erick37
ID: 2638051
I noticed you have a duplicate question open regarding MDI menus.  If your menu appears on the MDIMain form, you have to cancel that dropdown by calling:

Call SendMessage(MDIForm1.hwnd, WM_CANCELMODE, 0, 0)
0
 
LVL 1

Author Comment

by:ofirg
ID: 2639324
Cool! the menu refresh did help!

Joy and Happiness...
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now