2009-10-07 10 views
1

J'essaie d'envoyer du texte à une boîte de saisie en utilisant win32. Du texte apparaît dans la zone de saisie, mais tout est brouillé (????????? a ??????).Envoyer le texte à une entrée en utilisant win32 api

Le code est:

SendMessage (myHandle, WM_SETTEXT, 1, "A")

+0

est la boîte d'entrée dans le même processus? Est-ce une boîte de saisie Win32 standard? Est-ce qu'il attend unicode? – Brannon

+0

Oui, Oui (je crois que la partie entrée est techniquement une édition) et je ne suis pas sûr. Exemples que j'ai vus, utilisez simplement du texte brut. – jedd

+0

Voici l'article msdn: http://msdn.microsoft.com/en-us/library/bb775462%28VS.85%29.aspx – jedd

Répondre

3

Je ne sais pas si cela est la cause fondamentale, mais aussi longtemps que la fenêtre cible (zone d'édition dans votre cas) est dans le même processus, vous devez appeler SetWindowText() plutôt que d'envoyer WM_TEXT directement.

HTH,

+0

+1 à ceci; SetWindowText prend une chaîne typée en tant que param (plutôt que la LPARAM générique de SendMessage), donc il est presque impossible d'obtenir une chaîne Unicode/Ansi mélangée. Si vous passez accidentellement le mauvais type, vous obtiendrez une erreur de compilateur utile. (... et si vous obtenez une telle erreur, corrigez-la en utilisant le type de chaîne approprié, pas en le 'rejetant', ce qui est une erreur de débutant commun.) – BrendanMcK

0

Il devrait y avoir quelque chose comme ça, comme mentionné ci-dessous: -

SendMessage(myHandle,WM_SETTEXT,NULL,(LPARAM)L"A"); 
+1

Ceci est la bonne réponse * en supposant que l'application est compilé avec UNICODE défini. – BrendanMcK

Questions connexes