CString
Formatierung und Meldungsfeldanzeige
Es werden eine Reihe von Funktionen bereitgestellt, um Objekte zu formatieren und zu analysieren CString
. Sie können diese Funktionen immer verwenden, wenn Sie Objekte bearbeiten CString
müssen, aber sie sind besonders nützlich für die Formatierung von Zeichenfolgen, die im Meldungsfeldtext angezeigt werden.
Diese Gruppe von Funktionen enthält auch eine globale Routine zum Anzeigen eines Meldungsfelds.
CString
Funktionen
Name | Beschreibung |
---|---|
AfxExtractSubString |
Extrahiert Teilzeichenfolgen, die durch ein einzelnes Zeichen aus einer bestimmten Quellzeichenfolge getrennt sind. |
AfxFormatString1 |
Ersetzt eine angegebene Zeichenfolge für die Formatzeichen "%1" in einer Zeichenfolge, die in der Zeichenfolgentabelle enthalten ist. |
AfxFormatString2 |
Ersetzt zwei Zeichenfolgen für die Formatzeichen "%1" und "%2" in einer Zeichenfolge, die in der Zeichenfolgentabelle enthalten ist. |
AfxMessageBox |
Zeigt ein Meldungsfeld an. |
Anforderungen
Kopfball afxwin.h
AfxExtractSubString
Diese globale Funktion kann verwendet werden, um eine Teilzeichenfolge aus einer bestimmten Quellzeichenfolge zu extrahieren.
BOOL AFXAPI AfxExtractSubString (
CString& rString,
LPCTSTR lpszFullString,
int iSubString,
TCHAR chSep = '\n');
Parameter
rString
Verweisen auf ein CString
Objekt, das eine einzelne Teilzeichenfolge empfängt.
lpszFullString
Zeichenfolge, die den vollständigen Text der zu extrahierenden Zeichenfolge enthält.
iSubString
Nullbasierter Index der Teilzeichenfolge, aus lpszFullString
der extrahiert werden soll.
chSep
Trennzeichen, das zum Trennen von Teilzeichenfolgen verwendet wird.
Rückgabewert
TRUE
wenn die Funktion die Teilzeichenfolge erfolgreich im angegebenen Index extrahiert hat; andernfalls . FALSE
Hinweise
Diese Funktion ist nützlich, um mehrere Teilzeichenfolgen aus einer Quellzeichenfolge zu extrahieren, wenn ein bekanntes einzelnes Zeichen jede Teilzeichenfolge trennt. Diese Funktion durchsucht jedes Mal, wenn sie aufgerufen wird, vom Anfang des lpszFullString
Parameters.
Diese Funktion wird zurückgegeben FALSE
, wenn entweder lpszFullString
festgelegt NULL
ist oder die Funktion das Ende lpszFullString
erreicht, ohne +1 Vorkommen des angegebenen Trennzeichens zu finden iSubString
. Der rString
Parameter wird nicht von seinem ursprünglichen Wert geändert, wenn lpszFullString
er auf ; NULL
andernfalls wird der rString
Parameter auf die leere Zeichenfolge festgelegt, wenn die Teilzeichenfolge nicht für den angegebenen Index extrahiert werden konnte.
Beispiel
// 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);
}
Anforderungen
Kopfball afxwin.h
AfxFormatString1
Ersetzt die Zeichenfolge, auf lpsz1
die durch alle Instanzen der Zeichen "%1"
in der Vorlagenzeichenfolgenressource verwiesen wird, die durch nIDS
.
void AfxFormatString1(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1);
Parameter
rString
Ein Verweis auf ein CString
Objekt, das die resultierende Zeichenfolge nach der Ersetzung enthält.
nIDS
Die Ressourcen-ID der Vorlagenzeichenfolge, für die die Ersetzung ausgeführt wird.
lpsz1
Eine Zeichenfolge, die die Formatzeichen "%1"
in der Vorlagenzeichenfolge ersetzt.
Hinweise
Die neu gebildete Zeichenfolge wird in rString
gespeichert. Wenn die Zeichenfolge in der Zeichenfolgentabelle z. B. gleich ist"File %1 not found"
, enthält sie rString
die Zeichenfolge"File C:\MYFILE.TXT not found"
.lpsz1
"C:\MYFILE.TXT"
Diese Funktion eignet sich zum Formatieren von Zeichenfolgen, die an Meldungsfelder und andere Fenster gesendet werden.
Wenn die Formatzeichen "%1"
in der Zeichenfolge mehrmals angezeigt werden, werden mehrere Ersetzungen vorgenommen.
Beispiel
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
}
Anforderungen
Kopfball afxwin.h
AfxFormatString2
Ersetzt die Zeichenfolge, auf lpsz1
die durch alle Instanzen der Zeichen "%1"
verwiesen wird, und die Zeichenfolge, auf lpsz2
die für alle Instanzen der Zeichen "%2"
verwiesen wird, in der von der Vorlagenzeichenfolgenressource identifiziert.nIDS
void AfxFormatString2(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1,
LPCTSTR lpsz2);
Parameter
rString
Ein Verweis auf die CString
resultierende Zeichenfolge, nachdem die Ersetzung durchgeführt wurde.
nIDS
Die Zeichenfolgentabellen-ID der Vorlagenzeichenfolge, für die die Ersetzung ausgeführt wird.
lpsz1
Eine Zeichenfolge, die die Formatzeichen "%1"
in der Vorlagenzeichenfolge ersetzt.
lpsz2
Eine Zeichenfolge, die die Formatzeichen "%2"
in der Vorlagenzeichenfolge ersetzt.
Hinweise
Die neu gebildete Zeichenfolge wird in rString
gespeichert. Wenn die Zeichenfolge in der Zeichenfolgentabelle "File %1 not found in directory %2"
z. B. auf , lpsz1
zeigt auf "MYFILE.TXT"
und lpsz2
zeigt auf "C:\MYDIR"
, dann rString
enthält die Zeichenfolge "File MYFILE.TXT not found in directory C:\MYDIR"
.
Wenn die Formatzeichen "%1"
oder "%2"
die Zeichenfolge mehrmals in der Zeichenfolge angezeigt werden, werden mehrere Ersetzungen vorgenommen. Sie müssen nicht in numerischer Reihenfolge sein.
Beispiel
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
}
Anforderungen
Kopfball afxwin.h
AfxMessageBox
Zeigt ein Meldungsfeld auf dem Bildschirm an.
int AfxMessageBox(
LPCTSTR lpszText,
UINT nType = MB_OK,
UINT nIDHelp = 0);
int AFXAPI AfxMessageBox(
UINT nIDPrompt,
UINT nType = MB_OK,
UINT nIDHelp = (UINT) -1);
Parameter
lpszText
Zeigt auf ein CString
-Objekt oder auf eine auf NULL endende Zeichenfolge, worin die im Meldungsfeld anzuzeigende Meldung enthalten ist.
nType
Der Stil des Meldungsfelds. Wenden Sie eine der Nachrichtenfeldformatvorlagen auf das Feld an.
nIDHelp
Die Hilfekontext-ID für die Meldung; 0 gibt an, dass der Standardhilfekontext der Anwendung verwendet wird.
nIDPrompt
Eine eindeutige ID, die verwendet wird, um auf eine Zeichenfolge in der Zeichenfolgentabelle zu verweisen.
Rückgabewert
Null (0), wenn nicht genügend Arbeitsspeicher vorhanden ist, um des Meldungsfelds anzuzeigen; andernfalls wird einer der folgenden Werte zurückgegeben:
IDABORT
Die Schaltfläche "Abbrechen" wurde ausgewählt.IDCANCEL
Die Schaltfläche "Abbrechen" wurde ausgewählt.IDIGNORE
Die Schaltfläche "Ignorieren" wurde ausgewählt.IDNO
Die Schaltfläche "Nein" wurde ausgewählt.IDOK
Die Schaltfläche "OK" wurde ausgewählt.IDRETRY
Die Schaltfläche "Wiederholen" wurde ausgewählt.IDYES
Die Schaltfläche "Ja" wurde ausgewählt.
Wenn ein Meldungsfeld über eine Schaltfläche "Abbrechen" verfügt, wird der IDCANCEL
Wert zurückgegeben, wenn entweder die ESC-Taste gedrückt wird oder die Schaltfläche "Abbrechen" ausgewählt ist. Enthält das Meldungsfeld keine Schaltfläche "Abbrechen", hat das Drücken der ESC-TASTE keine Auswirkung.
Die Funktionen AfxFormatString1
und AfxFormatString2
können beim Formatieren von Text nützlich sein, der in einem Meldungsfeld angezeigt wird.
Hinweise
Die erste Form dieser überladenen Funktion zeigt eine Textzeichenfolge an, auf lpszText
die im Meldungsfeld verwiesen wird und verwendet nIDHelp
wird, um einen Hilfekontext zu beschreiben. Der Hilfekontext wird verwendet, um zu einem zugeordneten Hilfethema zu wechseln, wenn der Benutzer die Hilfetaste drückt (in der Regel F1).
Die zweite Form der Funktion verwendet die Zeichenfolgenressource mit der ID nIDPrompt
, um eine Meldung im Meldungsfeld anzuzeigen. Die zugehörige Hilfeseite wird über den Wert von nIDHelp
gefunden. Wenn der Standardwert nIDHelp
(-1) verwendet wird, nIDPrompt
wird die Zeichenfolgenressourcen-ID für den Hilfekontext verwendet. Weitere Informationen zum Definieren von Hilfekontexten finden Sie in technischem Hinweis 28.
Beispiel
// 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);