PRB: Accelerator Keys Don't Work with Disabled MDI Form (129804)
The information in this article applies to:
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Professional Edition, 16-bit, for Windows 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Enterprise Edition, 16-bit, for Windows 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Standard Edition for Windows 3.0
- Microsoft Visual Basic Professional Edition for Windows 3.0
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.
Modification Type: | Minor | Last Reviewed: | 1/8/2003 |
---|
Keywords: | kbprb KB129804 |
---|
|