VS2017 utilise le problème de non-concordance des paramètres TextOutW() ; "BOOL CDC :: TextOutW(int, int, const CString &)": le paramètre 3 ne peut pas être modifié à partir de "const char [18]"

Récemment, l'enseignant m'a confié la tâche d'être un ordinateur hôte.Bien que différents langages et environnements de programmation puissent être vus, mais en raison du manque de fondement personnel, et les choses existantes qui peuvent être référencées et empruntées sont toutes VC6.0 + Environnement MFC, donc je ne peux que tomber dans ce grand gouffre. Lors de l'apprentissage des bases de MFC selon "MFC Windows Application Programming" (Ren Zhe. 2004) publié par Tsinghua University Press (de nombreuses routines sont issues de ce livre), puisque l'éditeur utilise l'environnement VC6.0, et je suis VS2017+win10 , et j'ai trouvé un petit problème lorsque j'ai reproduit le programme dans le chapitre "Souris et clavier". Après une recherche en ligne, j'ai constaté que ce problème se produisait dans toutes les versions de VS, mais les déclarations données dans les solutions des quelques versions sont toujours insatisfaisantes et ne peuvent pas résoudre complètement le problème de la modification des cas dans le livre. Voici donc ma méthode de modification. Bien que je comprenne généralement les raisons spécifiques, je n'expliquerai pas si je ne suis pas sûr.

Description de l'erreur : La fonction de sortie de texte est utilisée dans le programme VC, TextOut(20,20, pDoc->m_pStr), les deux premiers éléments sont les coordonnées du texte affiché et le troisième élément est un pointeur de chaîne, parmi lesquels pDoc est la vue obtenue par GetDocument Le pointeur de document de m_pStr est une chaîne assignée dans d'autres structures de fonction, déclarée comme "char * m_pStr;". En utilisant ce code dans VS2017, il affichera "E0304 Aucune instance de fonction surchargée "CDC::TextOutW" correspondant à la liste de paramètres" et "C2664 "BOOL CDC ::TextOutW(int,int,const CString &)": Impossible de convertir le paramètre 3 converti de 'char *' en 'const CString &'".

Les méthodes de modification données sur Internet à propos des caractères larges (modification de la configuration ou ajout de _T, etc.) ne s'appliquent pas à la situation où j'utilise des pointeurs pour transférer des informations ici.

Solution : C'est le troisième élément de TextOut qui doit être modifié. Il ne peut pas changer le pointeur vers le type requis, et la modification du code doit être ajoutée manuellement. Tout comme l'invite d'erreur pour le modifier.

code afficher comme ci-dessous:

//pDC->TextOut(20, 20, pDoc->m_pStr);//L'instruction d'erreur utilisée à l'origine

//char *mpstr = pDoc->m_pStr ;
CString str1(pDoc->m_pStr/*mpstr*/);//type de variable de conversion
pDC->TextOut(20, 20, str1);//int, int, type CString tour à tour

Je suppose que tu aimes

Origine blog.csdn.net/starfire_hit/article/details/79144571
conseillé
Classement