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ê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 iSubString
d’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 NULL
sur ; 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 :
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, nIDPrompt
est 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);