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

Kopfzeileafxwin.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 lpszFullStringder extrahiert werden soll.

chSep
Trennzeichen, das zum Trennen von Teilzeichenfolgen verwendet wird.

Rückgabewert

TRUEwenn 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 ; NULLandernfalls 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

Kopfzeileafxwin.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 rStringgespeichert. 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

Kopfzeileafxwin.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 rStringgespeichert. 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

Kopfzeileafxwin.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 nIDHelpgefunden. Wenn der Standardwert nIDHelp (-1) verwendet wird, nIDPromptwird 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);

Siehe auch

Makros und Globalen
CStringT Klasse