Home
Home

--- Soumis par Dev Ashish---

Éliminer le message "Loading Image".

(Q) Au lieu d'emmagasiner les images dans un table, je n'y conserve que le nom du chemin et du fichier, et j'utilise un contrôle d'image. Par contre, je n'aime pas voir s'afficher le message "Loading Image" lors du chargement. Comment le cacher?

(A) Le message "Loading Image" est affiché par le filtre affichant l'image. Nous n'avons aucun contrôle direct sur celui-ci.

    Par contre, on peut utiliser la même technique que celle de l'article Suppress the "Printing" Dialog, soit en cachant le message du moment qu'il se montre le bout du nez.

   Appeler la sous-routine suivante depuis la procédure événementielle  OnTimer du formulaire (avec la propriété TimerInterval assigné à un petit nombre, disons 200).

Private Sub Form_Timer()
  Call sHideLoadingImageDialog(hWndAccessApp)
End Sub
'************* Code Start *************
Private Declare Function apiGetClassName Lib "user32" _
  Alias "GetClassNameA" _
  (ByVal hWnd As Long, _
  ByVal lpClassname As String, _
  ByVal nMaxCount As Long) _
  As Long

Private Declare Function apiGetWindowText Lib "user32" _
  Alias "GetWindowTextA" _
  (ByVal hWnd As Long, _
  ByVal lpString As String, _
  ByVal aint As Long) _
  As Long
  
Private Declare Function apiGetLastActivePopup Lib "user32" _
  Alias "GetLastActivePopup" _
  (ByVal hWndOwnder As Long) _
  As Long
  
Private Declare Function apiShowWindow Lib "user32" _
  Alias "ShowWindow" _
  (ByVal hWnd As Long, _
  ByVal nCmdShow As Long) _
  As Long
  
Private Const MAX_LEN = 255
Private Const GW_HWNDNEXT = 2
Private Const SW_HIDE = 0
Private Const SW_MINIMIZE = 6
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWDEFAULT = 10

Sub sHideLoadingImageDialog(ByVal hWndApp As Long)
'Requis: hWndAccessApp (poignée de référence à l'application)
'
  On Error GoTo Err_Handler
  Dim lnghWndChild As Long
  Dim strCaption As String
  Dim strClass As String
  Dim lngRet As Long
  
  'Retrouver le dernier formulaire popup de l'application hWndApp
  lnghWndChild = apiGetLastActivePopup(hWndApp)
  strClass = fGetClassName(lnghWndChild)
  strCaption = fGetCaption(lnghWndChild)
  'est-ce une fenêtre modale?
  If strClass = "#32770" And Trim(strCaption) = vbNullString Then
    lngRet = apiShowWindow(lnghWndChild, SW_HIDE)
  End If

Exit_Here:
  Exit Sub
Err_Handler:
  MsgBox "Error #: " & Err.Number & vbCrLf & Err.Description, _
    vbCritical + vbOKOnly, "sHideLoadingImageDialog-Runtime Error"
  Resume Exit_Here
End Sub

Private Function fGetClassName(ByVal hWnd As Long) As String
Dim strBuffer As String
Dim lngRet As Long
  strBuffer = String$(32, 0)
  lngRet = apiGetClassName(hWnd, strBuffer, Len(strBuffer))
  If lngRet > 0 Then
    fGetClassName = Left$(strBuffer, lngRet)
  End If
End Function

Private Function fGetCaption(ByVal hWnd As Long) As String
Dim strBuffer As String
Dim lngRet As Long
  strBuffer = String$(MAX_LEN, 0)
  lngRet = apiGetWindowText(hWnd, strBuffer, Len(strBuffer))
  If lngRet > 0 Then
    fGetCaption = Left$(strBuffer, lngRet)
  End If
End Function
'************ Code End ***************