PRB: Accelerator Keys Don't Work with Disabled MDI Form
Article ID: 129804
Article Last Modified on 1/8/2003
APPLIES TO
- Microsoft Visual Basic 4.0 Standard Edition
- Microsoft Visual Basic 4.0 Professional Edition
- Microsoft Visual Basic 4.0 Professional Edition
- Microsoft Visual Basic 4.0 16-bit Enterprise Edition
- Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
- Microsoft Visual Basic 3.0 Professional Edition
- Microsoft Visual Basic 3.0 Professional Edition
This article was previously published under Q129804
SYMPTOMS
When a MDI Form is programmatically disabled (Form1.Enabled = False),
accelerator keys on the MDI Parent form will not respond to user input.
CAUSE
By disabling the window with the keyboard focus, you now have a disabled
window with the focus. Because it has the focus, all keystrokes are
directed to it, but because it is disabled, those keystrokes are not
processed. This is true even for accelerators on the MDI parent form.
RESOLUTION
This behavior exists in both versions 3.0 and 4.0 of Microsoft Visual Basic
for Windows. This is, in fact, standard Windows MDI behavior.
The solution is to always move the focus off the MDI child form when it
becomes disabled programmatically. If the focus is on a disabled MDI child,
the accelerator keys will not work under Windows, because Windows doesn't
send up the WM_KEYDOWN message that Visual Basic would have to process for
the accelerator's keystroke.
STATUS
This behavior is by design. This is standard Windows MDI form behavior.
Additional query words: 4.00 vb4win vb4all
Keywords: kbprb KB129804