Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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ête afxwin.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ête afxwin.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ête afxwin.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ête afxwin.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 :
IDABORTLe bouton Abandonner a été sélectionné.IDCANCELLe bouton Annuler a été sélectionné.IDIGNORELe bouton Ignorer a été sélectionné.IDNOLe bouton Non a été sélectionné.IDOKLe bouton OK a été sélectionné.IDRETRYLe bouton Nouvelle tentative a été sélectionné.IDYESLe 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);