Je suis un peu nouveau pour la programmation de Windows GUI. J'ai un peu de code qui fonctionne bien sur Windows 32 bits mais qui devient bizarre sur Win7 64 bits (même exe).Des sorties bizarres de SendMessage sur Windows 64 bits
LWG_CEDIT_GET(m_hwnd, IDC_EDIT_NUM_TEST, g_tmp_str, 4096);
où LWG_CEDIT_GET est défini comme:
#define LWG_CEDIT_GET(h,id,v,m) \
((*((U32*)(v))=(m)),SendMessage(GetDlgItem((h),(id)),EM_GETLINE,0,(LPARAM)(char*)(v))
Sur Windows XP 32, cela me donne g_tmp_str="1"
(bien sûr, j'entré '1' dans le champ de texte dans le dialogue). Mais, sur Win7 64, cela me donne g_tmp_str=""
(Oups, le caractère bizarre ne peut pas être affiché dans stackoverflow, quel que soit, char impair. [0] = 49'1 '[1] = 16' ').
En règle générale, le programme exe 32 bits peut fonctionner parfaitement sur Win7 64, alors, pourquoi mon programme a échoué? Merci.
Édition 1: IsWindowsUnicode (m_hwnd) renvoie la valeur FALSE.
J'ai compilé une seule fois sur une plate-forme 32 bits. J'ai couru cet exe 32 bits sur les deux 32 et 64 bits gagner. – solotim
(J'ai supprimé ma précédente réponse/commentaire car j'ai mal compris les choses.J'ai oublié à quel point le contrôle d'édition et EM_GETLINE en particulier sont horribles :) :)) Nouvelle question: À quelle fenêtre pointez-vous cela? Est-ce votre propre fenêtre ou celle d'un autre processus? La fenêtre cible est-elle unicode ou ansi? –
Merci, c'est la fenêtre de mon processus. Le programme est un simple processus un processus d'un thread. Comment puis-je dire la question 'unicode' ou 'ansi'? – solotim