Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Nov 18, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Force an MDI Window Refresh

I sometimes want an MDI parent window to be repainted. For example, if a modal dialog is displayed over the MDI form and you click on OK, the dialog is hidden and an operation occurs, which takes a few seconds to complete. In the meantime, remnants of the dialog are still visible because Windows doesn't have time to complete the paint operation, and the screen looks messy. MDI forms don't have a Refresh method, and I don't want to throw a DoEvents into my code because it's dangerous. This code gives my MDI form a Refresh method:
Public Sub Refresh()
	Call RedrawWindow(Me.hWnd, 0&, 0&, _
End Sub
You need to declare these API constants:
Public Const RDW_ALLCHILDREN = &H80
Public Const RDW_UPDATENOW = &H100

' Note: The data type of the lprcUpdate 
' parameter has been changed
' from RECT to Any so 0& (NULL) can be passed.
#If Win32 Then
	Declare Function RedrawWindow Lib _
		"user32" (ByVal hwnd As Long, _
		lprcUpdate As Any, ByVal hrgnUpdate _
		As Long, ByVal fuRedraw As Long) As Long
#ElseIf Win16 Then
	Declare Function RedrawWindow Lib "User" _
		(ByVal hWnd As Integer, lprcUpdate As Any, _
		ByVal hrgnUpdate As Integer, ByVal fuRedraw As _
		Integer) As Integer
#End If
Thomas Weiss
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date