Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 163
  • Last Modified:

protection fault on VB Menu

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
ofirg
Asked:
ofirg
  • 5
  • 4
  • 3
  • +2
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
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
 
AzraSoundCommented:
I couldnt reproduce it either
0
 
AzraSoundCommented:
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
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

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

Cheers
0
 
Erick37Commented:
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
 
ofirgAuthor Commented:
The PopUpMenu opens all the time
and as a meter of fact have nothing to do with the problem!
Sorry.
0
 
ofirgAuthor Commented:
This question has a deletion request Pending
0
 
Erick37Commented:
This question no longer is pending deletion
0
 
Erick37Commented:
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
 
ofirgAuthor Commented:
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
 
AzraSoundCommented:
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
 
Erick37Commented:
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
 
Erick37Commented:
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
 
ofirgAuthor Commented:
Cool! the menu refresh did help!

Joy and Happiness...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 5
  • 4
  • 3
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now