devxlogo

Force an MDI Window Refresh

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&, _		RDW_ALLCHILDREN Or RDW_UPDATENOW)End Sub

You need to declare these API constants:

 Public Const RDW_ALLCHILDREN = &H80Public 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
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist