CString Affichage de la mise en forme et de la zone de message

Un certain nombre de fonctions sont fournies pour mettre en forme et analyser des CString objets. Vous pouvez utiliser ces fonctions chaque fois que vous devez manipuler des CString objets, mais ils sont particulièrement utiles pour la mise en forme de chaînes qui s’affichent dans le texte de la zone de message.

Ce groupe de fonctions inclut également une routine globale pour afficher une boîte de message.

CString Fonctions

Nom Description
AfxExtractSubString Extrait les sous-chaînes séparées par un caractère unique d’une chaîne source donnée.
AfxFormatString1 Remplace une chaîne donnée pour les caractères de format « %1 » dans une chaîne contenue dans la table de chaînes.
AfxFormatString2 Remplace deux chaînes pour les caractères de format « %1 » et « %2 » dans une chaîne contenue dans la table de chaînes.
AfxMessageBox Affiche une zone de message.

Spécifications

En-têteafxwin.h

AfxExtractSubString

Cette fonction globale peut être utilisée pour extraire une sous-chaîne d’une chaîne source donnée.

BOOL AFXAPI AfxExtractSubString (
    CString& rString,
    LPCTSTR lpszFullString,
    int iSubString,
    TCHAR chSep  = '\n');

Paramètres

rString
Référence à un CString objet qui recevra une sous-chaîne individuelle.

lpszFullString
Chaîne contenant le texte intégral de la chaîne à extraire.

iSubString
Index de base zéro de la sous-chaîne à extraire de lpszFullString.

chSep
Caractère séparateur utilisé pour délimiter les sous-chaînes.

Valeur de retour

TRUE si la fonction a correctement extrait la sous-chaîne à l’index fourni ; sinon, FALSE.

Notes

Cette fonction est utile pour extraire plusieurs sous-chaînes d’une chaîne source lorsqu’un caractère unique connu sépare chaque sous-chaîne. Cette fonction effectue une recherche à partir du début du lpszFullString paramètre chaque fois qu’elle est appelée.

Cette fonction retourne FALSE si lpszFullString la valeur est définie NULL ou si la fonction atteint la fin de lpszFullString sans rechercher iSubStringd’occurrences +1 du caractère de séparation spécifié. Le rString paramètre ne sera pas modifié à partir de sa valeur d’origine si lpszFullString elle a été définie NULLsur ; sinon, le rString paramètre est défini sur la chaîne vide si la sous-chaîne n’a pas pu être extraite pour l’index spécifié.

Exemple

// The following example extracts a series of name, value pairs from a
// given source string:

// Input string consisting of a number of name, value pairs
LPCTSTR lpszSource = _T("\"Name\"=\"John Smith\"\n")
_T("\"Company\"=\"Contoso, Ltd\"\n\"Salary\"=\"25,000\"");

CString strNameValue; // an individual name, value pair

int i = 0; // substring index to extract
while (AfxExtractSubString(strNameValue, lpszSource, i))
{
   // Prepare to move to the next substring
   i++;

   CString strName, strValue; // individual name and value elements

   // Attempt to extract the name element from the pair
   if (!AfxExtractSubString(strName, strNameValue, 0, _T('=')))
   {
      // Pass an error message to the debugger for display
      OutputDebugString(_T("Error extracting name\r\n"));
      continue;
   }

   // Attempt to extract the value element from the pair
   if (!AfxExtractSubString(strValue, strNameValue, 1, _T('=')))
   {
      // Pass an error message to the debugger for display
      OutputDebugString(_T("Error extracting value element\r\n"));
      continue;
   }

   // Pass the name, value pair to the debugger for display
   CString strOutput = strName + _T(" equals ") + strValue + _T("\r\n");
   OutputDebugString(strOutput);
}

Spécifications

En-têteafxwin.h

AfxFormatString1

Remplace la chaîne pointée par lpsz1 toutes les instances des caractères "%1" de la ressource de chaîne de modèle identifiée par nIDS.

void  AfxFormatString1(
    CString& rString,
    UINT nIDS,
    LPCTSTR lpsz1);

Paramètres

rString
Référence à un CString objet qui contiendra la chaîne résultante après l’exécution de la substitution.

nIDS
ID de ressource de la chaîne de modèle sur laquelle la substitution sera effectuée.

lpsz1
Chaîne qui remplacera les caractères "%1" de format dans la chaîne de modèle.

Notes

La chaîne nouvellement formée est stockée dans rString. Par exemple, si la chaîne de la table de chaînes est "File %1 not found", et lpsz1 est égale à "C:\MYFILE.TXT", rString elle contiendra la chaîne "File C:\MYFILE.TXT not found". Cette fonction est utile pour mettre en forme les chaînes envoyées aux boîtes de message et à d’autres fenêtres.

Si les caractères "%1" de format apparaissent dans la chaîne plusieurs fois, plusieurs substitutions sont effectuées.

Exemple

void DisplayFileNotFoundMessage(LPCTSTR pszFileName)
{
   CString strMessage;

   // The IDS_FILENOTFOUND string resource contains "Error: File %1 not found"
   AfxFormatString1(strMessage, IDS_FILENOTFOUND, pszFileName);
   // In the previous call, substitute the actual file name for the
   // %1 placeholder
   AfxMessageBox(strMessage);  // Display the error message
}

Spécifications

En-têteafxwin.h

AfxFormatString2

Remplace la chaîne pointée par lpsz1 toutes les instances des caractères "%1", et la chaîne pointée par lpsz2 toutes les instances des caractères "%2", dans la ressource de chaîne de modèle identifiée par nIDS.

void AfxFormatString2(
    CString& rString,
    UINT nIDS,
    LPCTSTR lpsz1,
    LPCTSTR lpsz2);

Paramètres

rString
Référence à celle CString qui contiendra la chaîne résultante après l’exécution de la substitution.

nIDS
ID de table de chaîne de la chaîne de modèle sur laquelle la substitution sera effectuée.

lpsz1
Chaîne qui remplacera les caractères "%1" de format dans la chaîne de modèle.

lpsz2
Chaîne qui remplacera les caractères "%2" de format dans la chaîne de modèle.

Notes

La chaîne nouvellement formée est stockée dans rString. Par exemple, si la chaîne de la table de chaînes est "File %1 not found in directory %2", pointe vers "MYFILE.TXT", et lpsz2 pointe vers "C:\MYDIR", puis rString contient la chaîne "File MYFILE.TXT not found in directory C:\MYDIR"lpsz1 .

Si les caractères "%1" de format ou "%2" apparaissent dans la chaîne plusieurs fois, plusieurs substitutions sont effectuées. Ils n’ont pas besoin d’être dans l’ordre numérique.

Exemple

void DisplayFileNotFoundMessage(LPCTSTR pszFileName, LPCTSTR pszDirectory)
{
   CString strMessage;

   // The IDS_FILENOTFOUND string resource contains "Error: File %1 not 
   // found in directory %2"
   AfxFormatString2(strMessage, IDS_FILENOTFOUND2, pszFileName, pszDirectory);
   // In the previous call, substitute the actual file and directory 
   // names into the message string
   AfxMessageBox(strMessage);  // Display the error message
}

Spécifications

En-têteafxwin.h

AfxMessageBox

Affiche une boîte de message à l’écran.

int AfxMessageBox(
    LPCTSTR lpszText,
    UINT nType = MB_OK,
    UINT nIDHelp = 0);

int AFXAPI AfxMessageBox(
    UINT nIDPrompt,
    UINT nType = MB_OK,
    UINT nIDHelp = (UINT) -1);

Paramètres

lpszText
Pointe vers un CString objet ou une chaîne terminée par null contenant le message à afficher dans la zone de message.

nType
Style de la zone de message. Appliquez l’un des styles de boîte de message à la zone.

nIDHelp
ID de contexte d’aide pour le message ; 0 indique que le contexte d’aide par défaut de l’application sera utilisé.

nIDPrompt
ID unique utilisé pour référencer une chaîne dans la table de chaînes.

Valeur de retour

Zéro s’il n’y a pas suffisamment de mémoire pour afficher la boîte de message ; sinon, l’une des valeurs suivantes est retournée :

  • IDABORT Le bouton Abandonner a été sélectionné.

  • IDCANCEL Le bouton Annuler a été sélectionné.

  • IDIGNORE Le bouton Ignorer a été sélectionné.

  • IDNO Le bouton Non a été sélectionné.

  • IDOK Le bouton OK a été sélectionné.

  • IDRETRY Le bouton Nouvelle tentative a été sélectionné.

  • IDYES Le bouton Oui a été sélectionné.

Si une boîte de message a un bouton Annuler, la IDCANCEL valeur est retournée si la touche ÉCHAP est enfoncée ou si le bouton Annuler est sélectionné. Si la boîte de message n’a pas de bouton Annuler, l’appui sur la touche ÉCHAP n’a aucun effet.

Les fonctions AfxFormatString1 et AfxFormatString2 peuvent être utiles dans la mise en forme du texte qui s’affiche dans une boîte de message.

Notes

La première forme de cette fonction surchargée affiche une chaîne de texte pointée vers la lpszText zone de message et utilise nIDHelp pour décrire un contexte d’aide. Le contexte d’aide est utilisé pour accéder à une rubrique d’aide associée lorsque l’utilisateur appuie sur la touche d’aide (généralement F1).

La deuxième forme de la fonction utilise la ressource de chaîne avec l’ID nIDPrompt pour afficher un message dans la zone de message. La page d’aide associée est trouvée par le biais de la valeur de nIDHelp. Si la valeur par défaut est nIDHelp utilisée (-1), l’ID de ressource de chaîne, nIDPromptest utilisé pour le contexte d’aide. Pour plus d’informations sur la définition des contextes d’aide, consultez la note technique 28.

Exemple

// A simple message box, with only the OK button.
AfxMessageBox(_T("Simple message box."));

// A message box that uses a string from a string table
// with yes and no buttons and the stop icon.
// NOTE: nStringID is an integer that contains a valid id of
// a string in the current resource.
AfxMessageBox(nStringID, MB_YESNO | MB_ICONSTOP);

Voir aussi

Macros et globals
CStringT Classe