Share via


CString Opmaak en Message-Box weergave

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Er worden een aantal functies aangeboden voor het opmaken en parseren CString van objecten. U kunt deze functies gebruiken wanneer u objecten moet bewerken CString , maar ze zijn met name handig voor het opmaken van tekenreeksen die worden weergegeven in de tekst van het berichtvak.

Deze groep functies bevat ook een algemene routine voor het weergeven van een berichtvak.

CString Functies

Naam Description
AfxExtractSubString Extraheert subtekenreeksen gescheiden door één teken uit een bepaalde brontekenreeks.
AfxFormatString1 Vervangt een bepaalde tekenreeks voor de notatietekens%1in een tekenreeks in de tekenreekstabel.
AfxFormatString2 Vervangt twee tekenreeksen voor de notatietekens "%1" en "%2" in een tekenreeks in de tekenreekstabel.
AfxMessageBox Geeft een berichtvak weer.

Requirements

Headerafxwin.h

AfxExtractSubString

Deze globale functie kan worden gebruikt om een subtekenreeks uit een bepaalde brontekenreeks te extraheren.

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

Parameterwaarden

rString
Verwijzing naar een CString object dat een afzonderlijke subtekenreeks ontvangt.

lpszFullString
Tekenreeks met de volledige tekst van de tekenreeks waaruit moet worden geëxtraheerd.

iSubString
Op nul gebaseerde index van de subtekenreeks waaruit lpszFullStringmoet worden geëxtraheerd.

chSep
Scheidingsteken dat wordt gebruikt om subtekenreeksen te scheiden.

Retourwaarde

TRUE als de functie de subtekenreeks op de opgegeven index heeft geëxtraheerd; anders, FALSE.

Opmerkingen

Deze functie is handig voor het extraheren van meerdere subtekenreeksen uit een brontekenreeks wanneer één bekend teken elke subtekenreeks scheidt. Deze functie zoekt vanaf het begin van de lpszFullString parameter telkens wanneer deze wordt aangeroepen.

Deze functie wordt geretourneerd FALSE als lpszFullString deze is ingesteld op NULL of als de functie het einde lpszFullString bereikt zonder +1 exemplaren van het opgegeven scheidingsteken te vinden iSubString. De rString parameter wordt niet gewijzigd van de oorspronkelijke waarde als lpszFullString deze is ingesteld op NULL; anders wordt de rString parameter ingesteld op de lege tekenreeks als de subtekenreeks niet kan worden geëxtraheerd voor de opgegeven index.

Example

// 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);
}

Requirements

Headerafxwin.h

AfxFormatString1

Vervangt de tekenreeks die wordt verwezen door lpsz1 voor alle exemplaren van de tekens "%1" in de sjabloontekenreeksresource die wordt geïdentificeerd door nIDS.

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

Parameterwaarden

rString
Een verwijzing naar een CString object dat de resulterende tekenreeks bevat nadat de vervanging is uitgevoerd.

nIDS
De resource-id van de sjabloontekenreeks waarop de vervanging wordt uitgevoerd.

lpsz1
Een tekenreeks die de notatietekens "%1" in de sjabloontekenreeks vervangt.

Opmerkingen

De zojuist gevormde tekenreeks wordt opgeslagen in rString. Als de tekenreeks in de tekenreekstabel bijvoorbeeld gelijk lpsz1 is "File %1 not found"aan"C:\MYFILE.TXT", bevat deze rString de tekenreeks"File C:\MYFILE.TXT not found". Deze functie is handig voor het opmaken van tekenreeksen die naar berichtvakken en andere vensters worden verzonden.

Als de notatietekens "%1" meer dan één keer in de tekenreeks worden weergegeven, worden er meerdere vervangingen uitgevoerd.

Example

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
}

Requirements

Headerafxwin.h

AfxFormatString2

Vervangt de tekenreeks die wordt verwezen door lpsz1 voor alle exemplaren van de tekens "%1"en de tekenreeks die wordt verwezen lpsz2 door voor alle exemplaren van de tekens "%2", in de sjabloonreeksresource die wordt geïdentificeerd door nIDS.

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

Parameterwaarden

rString
Een verwijzing naar de CString tekenreeks die de resulterende tekenreeks bevat nadat de vervanging is uitgevoerd.

nIDS
De tekenreekstabel-id van de sjabloontekenreeks waarop de vervanging wordt uitgevoerd.

lpsz1
Een tekenreeks die de notatietekens "%1" in de sjabloontekenreeks vervangt.

lpsz2
Een tekenreeks die de notatietekens "%2" in de sjabloontekenreeks vervangt.

Opmerkingen

De zojuist gevormde tekenreeks wordt opgeslagen in rString. Als de tekenreeks in de tekenreekstabel bijvoorbeeld is "File %1 not found in directory %2", lpsz1 verwijst naar "MYFILE.TXT"en lpsz2 verwijst naar "C:\MYDIR", bevat deze rString de tekenreeks "File MYFILE.TXT not found in directory C:\MYDIR".

Als de notatietekens "%1" meer "%2" dan één keer in de tekenreeks worden weergegeven, worden er meerdere vervangingen aangebracht. Ze hoeven niet in numerieke volgorde te zijn.

Example

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
}

Requirements

Headerafxwin.h

AfxMessageBox

Hiermee wordt een berichtvak op het scherm weergegeven.

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

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

Parameterwaarden

lpszText
Verwijst naar een CString object of null-beëindigde tekenreeks die het bericht bevat dat in het berichtvak moet worden weergegeven.

nType
De stijl van het berichtvak. Pas een van de berichtvakstijlen toe op het vak.

nIDHelp
De Help-context-id voor het bericht; 0 geeft aan dat de standaard-Help-context van de toepassing wordt gebruikt.

nIDPrompt
Een unieke id die wordt gebruikt om te verwijzen naar een tekenreeks in de tekenreekstabel.

Retourwaarde

Nul als er onvoldoende geheugen is om het berichtvak weer te geven; anders wordt een van de volgende waarden geretourneerd:

  • IDABORT De knop Afbreken is geselecteerd.

  • IDCANCEL De knop Annuleren is geselecteerd.

  • IDIGNORE De knop Negeren is geselecteerd.

  • IDNO De knop Nee is geselecteerd.

  • IDOK De knop OK is geselecteerd.

  • IDRETRY De knop Opnieuw proberen is geselecteerd.

  • IDYES De knop Ja is geselecteerd.

Als een berichtvak een knop Annuleren heeft, wordt de IDCANCEL waarde geretourneerd als de ESC-toets wordt ingedrukt of als de knop Annuleren is geselecteerd. Als het berichtvak geen knop Annuleren heeft, heeft het drukken op de ESC-toets geen effect.

De functies AfxFormatString1 en AfxFormatString2 kunnen handig zijn bij het opmaken van tekst die wordt weergegeven in een berichtvak.

Opmerkingen

In de eerste vorm van deze overbelaste functie wordt een tekenreeks weergegeven die in het berichtvak wordt verwezen lpszText en wordt gebruikt nIDHelp om een Help-context te beschrijven. De Help-context wordt gebruikt om naar een gekoppeld Help-onderwerp te gaan wanneer de gebruiker op de Help-toets drukt (meestal F1).

De tweede vorm van de functie maakt gebruik van de tekenreeksresource met de id nIDPrompt om een bericht weer te geven in het berichtvak. De bijbehorende Help-pagina vindt u via de waarde van nIDHelp. Als de standaardwaarde nIDHelp wordt gebruikt (-1), wordt de tekenreeksresource-id, nIDPromptgebruikt voor de Help-context. Zie Technische opmerking 28 voor meer informatie over het definiëren van Help-contexten.

Example

// 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);

Zie ook

macro's en globale
CStringT klasse