OVH Cloud OVH Cloud

masquer boutons de commondialog

9 réponses
Avatar
TouTenN
Bonjour

J'ai bien vu que pour le controle "Commondialog", la propriété Flag permet
de personnaliser les options de ce contrôle. Malheureusement rien pour
masquer les boutons "Afficher bureau" et "Créer un nouveau dossier".

Est-ce qd même possible de les masquer???

GuY

--

9 réponses

Avatar
François Picalausa
Hello,

La common dialog est entièrement "hookable" pour pas cher comme décrit ici:
http://groups.google.com/groups?selm=%23ZF0Xs89DHA.2316%40TK2MSFTNGP11.phx.gbl

Au lieu de repositionner, il faudrait intercepter le message de création de
la toolbar pour ensuite la sous classer et empêcher l'ajout (si c'est
faisable...) ou plus simplement attendre la fin de la création de la boite
de dialogue pour supprimer les bouttons en envoyant des messages
TB_HIDEBUTTON (il faudrait lors de la création de la toolbar avoir récupéré
son hwnd)

Pour cette seconde méthode, les messages à intercepter seraient (non
vérifié):
WM_CREATE (création du contrôle)
CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand le
boutton est créé)

En fonction du temps qu'il me faudra pour étudier math, je ferai peut-être
un exemple ;-)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6iscc$pf3$
J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".

Est-ce qd même possible de les masquer???


Avatar
François Picalausa
Hello,

voici l'exemple promis:
'Dans une form, Form1:
Option Explicit

' Déclaration de l'API
Private Declare Function GetOpenFileName _
Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" _
( _
pOpenfilename As OPENFILENAME _
) _
As Long

' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum

Public Function OpenFileDialog(Optional DialogTitle As String, _
Optional sFilter As String, _
Optional Flags As OFN_Constants, _
Optional InitialDir As String, _
Optional hInstance As Long _
) _
As String

Dim OFName As OPENFILENAME

With OFName
.lStructSize = Len(OFName)
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = String$(260, vbNullChar)
.nMaxFile = 255
.lpstrFileTitle = String$(260, vbNullChar)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
.lpfnHook = GetProcAddress(AddressOf OFNHookProc)
End With

If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If
End Function

Private Sub Form_Load()
OpenFileDialog "Choississez un fichier...", "Tous les fichiers (*.*)" &
_
vbNullChar & "*.*" & vbNullChar & vbNullChar, _
OFN_EXPLORER Or OFN_ENABLEHOOK, _
"", App.hInstance
End Sub

Private Function GetProcAddress(ProcAddress As Long) As Long
GetProcAddress = ProcAddress
End Function

'Dans un module standard, module1:
Option Explicit

Private Const WM_NOTIFY = &H4E

Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)

Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)

Private Const TOOLBARCLASSNAME = "ToolbarWindow32"

Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type

Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type

Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type

Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)

Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long

Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long


Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long

'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)


Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam, LenB(udtNotifyStruct)

Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0,
TOOLBARCLASSNAME, vbNullString)

If hWndToolbar Then 'toolbar trouvée
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2, False
'ou masquer par command id qui peut se révéler plus
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal
1&
End If
End Select
End Select

OFNHookProc = 0
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"François Picalausa" a écrit dans le message de
news:
Hello,

La common dialog est entièrement "hookable" pour pas cher comme
décrit ici:



http://groups.google.com/groups?selm=%23ZF0Xs89DHA.2316%40TK2MSFTNGP11.phx.gbl

Au lieu de repositionner, il faudrait intercepter le message de
création de la toolbar pour ensuite la sous classer et empêcher
l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
la création de la boite de dialogue pour supprimer les bouttons en
envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
de la toolbar avoir récupéré son hwnd)

Pour cette seconde méthode, les messages à intercepter seraient (non
vérifié):
WM_CREATE (création du contrôle)
CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
le boutton est créé)

En fonction du temps qu'il me faudra pour étudier math, je ferai
peut-être un exemple ;-)


"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6iscc$pf3$
J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".

Est-ce qd même possible de les masquer???




Avatar
TouTenN
> voici l'exemple promis:
'Dans une form, Form1:
Option Explicit





Salut François

Je viens tout juste de tester cela me semble convenir...

merci encore

GuY
Avatar
TouTenN
> > voici l'exemple promis:
> 'Dans une form, Form1:
> Option Explicit



Je viens de repérer la commande d'exécution du masquage mais comment savoir
les autres numéros des boutons (ici 40962 pour la création d'un dossier)???
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1



Merci

GuY
Avatar
Ludovic SOEUR
Wahoo, il me plait ton example ! Je vois enfin comment personnaliser
entièrement cette fameuse boite de dialogue.
Merci beaucoup François.

"François Picalausa" a écrit dans le message de news:

Hello,

voici l'exemple promis:
'Dans une form, Form1:
Option Explicit

' Déclaration de l'API
Private Declare Function GetOpenFileName _
Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" _
( _
pOpenfilename As OPENFILENAME _
) _
As Long

' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum

Public Function OpenFileDialog(Optional DialogTitle As String, _
Optional sFilter As String, _
Optional Flags As OFN_Constants, _
Optional InitialDir As String, _
Optional hInstance As Long _
) _
As String

Dim OFName As OPENFILENAME

With OFName
.lStructSize = Len(OFName)
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = String$(260, vbNullChar)
.nMaxFile = 255
.lpstrFileTitle = String$(260, vbNullChar)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
.lpfnHook = GetProcAddress(AddressOf OFNHookProc)
End With

If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If
End Function

Private Sub Form_Load()
OpenFileDialog "Choississez un fichier...", "Tous les fichiers (*.*)"


&
_
vbNullChar & "*.*" & vbNullChar & vbNullChar, _
OFN_EXPLORER Or OFN_ENABLEHOOK, _
"", App.hInstance
End Sub

Private Function GetProcAddress(ProcAddress As Long) As Long
GetProcAddress = ProcAddress
End Function

'Dans un module standard, module1:
Option Explicit

Private Const WM_NOTIFY = &H4E

Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)

Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)

Private Const TOOLBARCLASSNAME = "ToolbarWindow32"

Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type

Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type

Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type

Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)

Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long

Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long


Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long

'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)


Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam,


LenB(udtNotifyStruct)

Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0,
TOOLBARCLASSNAME, vbNullString)

If hWndToolbar Then 'toolbar trouvée
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2,


False
'ou masquer par command id qui peut se révéler


plus
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962,


ByVal
1&
End If
End Select
End Select

OFNHookProc = 0
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"François Picalausa" a écrit dans le message de
news:
> Hello,
>
> La common dialog est entièrement "hookable" pour pas cher comme
> décrit ici:
>



http://groups.google.com/groups?selm=%23ZF0Xs89DHA.2316%40TK2MSFTNGP11.phx.g
bl
>
> Au lieu de repositionner, il faudrait intercepter le message de
> création de la toolbar pour ensuite la sous classer et empêcher
> l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
> la création de la boite de dialogue pour supprimer les bouttons en
> envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
> de la toolbar avoir récupéré son hwnd)
>
> Pour cette seconde méthode, les messages à intercepter seraient (non
> vérifié):
> WM_CREATE (création du contrôle)
> CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
> le boutton est créé)
>
> En fonction du temps qu'il me faudra pour étudier math, je ferai
> peut-être un exemple ;-)
>
>
> "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
> de news:c6iscc$pf3$
>> J'ai bien vu que pour le controle "Commondialog", la propriété Flag
>> permet de personnaliser les options de ce contrôle. Malheureusement
>> rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
>> dossier".
>>
>> Est-ce qd même possible de les masquer???




Avatar
François Picalausa
Hello!

Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)

Le message est TB_GETBUTTON et il s'utilise avec la structure appropriée
qu'est TBBUTTON

(pour traduire les structures documentées dans la MSDN, il y a un traducteur
automatique qui fonctionne pas si mal sur
http://apisvb.europe.webmatrixhosting.net )

Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
iString As Long
End Type

Const TB_GETBUTTON = (WM_USER+23)

Avec
Dim ButtonInfos As TBBUTTON

SendMessage ToolbarWindow, TB_GETBUTTON, IndexBoutton, ButtonInfos 'dernier
argument déclaré As Any

On retrouve l'id par:
ButtonInfos.idCommand

Voila voila :-)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6l2nf$n5b$
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit





Je viens de repérer la commande d'exécution du masquage mais comment
savoir les autres numéros des boutons (ici 40962 pour la création
d'un dossier)???
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1



Merci

GuY


Avatar
TouTenN
Salut

Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)



Je dois être mirrot ou pas réveillé mais je ne trouve pas la partie du code
qui me renvoie les numéro des boutons....

????

GuY

--

"François Picalausa" a écrit dans le message news:

Hello!

Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)

Le message est TB_GETBUTTON et il s'utilise avec la structure appropriée
qu'est TBBUTTON

(pour traduire les structures documentées dans la MSDN, il y a un


traducteur
automatique qui fonctionne pas si mal sur
http://apisvb.europe.webmatrixhosting.net )

Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
iString As Long
End Type

Const TB_GETBUTTON = (WM_USER+23)

Avec
Dim ButtonInfos As TBBUTTON

SendMessage ToolbarWindow, TB_GETBUTTON, IndexBoutton, ButtonInfos


'dernier
argument déclaré As Any

On retrouve l'id par:
ButtonInfos.idCommand

Voila voila :-)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6l2nf$n5b$
>>> voici l'exemple promis:
>>> 'Dans une form, Form1:
>>> Option Explicit
>
> Je viens de repérer la commande d'exécution du masquage mais comment
> savoir les autres numéros des boutons (ici 40962 pour la création
> d'un dossier)???
>> SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
>
> Merci
>
> GuY




Avatar
François Picalausa
Hello!

Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)



Je dois être mirrot ou pas réveillé mais je ne trouve pas la partie
du code qui me renvoie les numéro des boutons....



hmm.. je parlais de moi.. parce que j'ai effacé cette partie.

Enfin, voici la modification de l'exemple kivabien:

'Dans le module standard, module1:
Option Explicit

Private Const WM_NOTIFY = &H4E

Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)

Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)

Private Const TOOLBARCLASSNAME = "ToolbarWindow32"
Private Const TB_GETBUTTON = (WM_USER + 23)

Private Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
dwData As Long
iString As Long
End Type

Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type

Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type

Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type

Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)

Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long

Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long


Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long

'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)


Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam, LenB(udtNotifyStruct)

Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0, _
TOOLBARCLASSNAME, vbNullString)

If hWndToolbar Then 'toolbar trouvée
Dim Btn As TBBUTTON

SendMessage hWndToolbar, TB_GETBUTTON, _
0, Btn
MsgBox "Le code pour le boutton id = 0 est : " & _
Btn.idCommand
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2, False
'ou masquer par command id qui peut se révéler plus
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal
1&
End If
End Select
End Select

OFNHookProc = 0

End Function




'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2, False
'ou masquer par command id qui peut se révéler plus
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal
1&
End If
End Select
End Select

OFNHookProc = 0
End Function



--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
Avatar
GuY - TouTenN
> hmm.. je parlais de moi.. parce que j'ai effacé cette partie.
Enfin, voici la modification de l'exemple kivabien:
'Dans le module standard, module1:
Option Explicit

Private Const WM_NOTIFY = &H4E



Plus de problèmes merci...
--
GuY