mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
8 mai 2008 à 16:05
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
10 mai 2008 à 01:09
Ce qui est bizarre, c'est que cela fonctionne dans un Executable simple, mais pas dans mon Add-in (est-ce lié au sous-classement ?)
Voici mes 2 méthodes qui échouent, je ne vous liste que le principal :
Private Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim mWndProc As Long
Dim Point As POINTAPI
Dim sTextClipboard As String
Dim oDataClipboard As Object
mWndProc = GetProp(hwnd, PRPNAME)
If (mWndProc = 0) Then Exit Function
WindowProc = CallWindowProc(mWndProc, hwnd, uMsg, wParam, lParam)
'METHODE 1 Select Case wParam
Case WM_MBUTTONDOWN
GetCursorPos Point 'récupère X & Y
' on récupère les données du presse-papier
sTextClipboard = Clipboard.GetText
'Set oDataClipboard = Clipboard.GetData
'Clipboard.Clear
'restauration du presse-papier
'Clipboard.Clear
'Clipboard.SetData oDataClipboard
Clipboard.SetText sTextClipboard
End Select'FIN METHODE 1 'METHODE 2 Select Case wParam
Case WM_MBUTTONDOWN
GetCursorPos Point 'récupère X & Y
Select Case NbLines
Case 1
sTextToInsert = ExtractSelection(sTextOfLines, MyStartColumn, MyEndColumn)
Case Is > 1
For i = 1 To NbLines
If i = 1 Then
sTextToInsert = ExtractSelection(sTextOfLines, MyStartColumn) & vbCrLf
ElseIf i = NbLines - 1 Then
sTextToInsert = sTextToInsert & ExtractSelection(sTextOfLines, 1, MyEndColumn)
Else
sTextToInsert = sTextToInsert & ExtractSelection(sTextOfLines, 1) & vbCrLf
End If
Next i
End Select
' on récupère les données du presse-papier
hStrPtr = GetClipboardData(CF_TEXT)
If hStrPtr <> 0 Then
lLength = lstrlen(hStrPtr)
If lLength > 0 Then
sTextClipboard = Space$(lLength)
CopyMemory ByVal sTextClipboard, ByVal hStrPtr, lLength
End If
End If
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 8 mai 2008 à 18:03
Re
je tiens à préciser que j'ai une 3 ème méthode (un peu comme la seconde, mais au lieu de faire une simulation de Ctrl V, je parse la ligne d'arrivée pour la réecrire avec InsertLines).
Je me demande, vu que je sous-classe, si il n'y a pas 'mélange' de messages Windows.
J'ai l'impression qu'il n'a pas eu le temps de traiter ma proc, et d'autres messages windows arrivent et peut-être qu'il se mélange les pinceaux.
Enfin, une piste à suivre..
Merci Renfield pour l'aide apportée, qui m'a permis de comprendre pourquoi je n'arrivais pas à mes fins avec mes méthodes (et erreurs).
Pour éviter d'expliquer le pourquoi du comment, j'ai mis plus haut le lien vers les commentaires (lire le 15eme, jusqu'à présent, le plus long [code de Renfield]), les autres comprendront où j'avais faux.
Pas encore MAJ à l'heure de ce post mais dans un futur (très) proche, ce sera fait
(les modifs apportées sont énumérées dans l'entête du module de la source)