CString Formattazione e visualizzazione della finestra di messaggio

Sono disponibili diverse funzioni per formattare e analizzare CString gli oggetti. È possibile usare queste funzioni ogni volta che è necessario modificare gli oggetti, ma sono particolarmente utili per la formattazione CString delle stringhe che verranno visualizzate nel testo della finestra di messaggio.

Questo gruppo di funzioni include anche una routine globale per la visualizzazione di una finestra di messaggio.

CString Funzioni

Nome Descrizione
AfxExtractSubString Estrae sottostringhe separate da un singolo carattere da una determinata stringa di origine.
AfxFormatString1 Sostituisce una determinata stringa per i caratteri di formato "%1" in una stringa contenuta nella tabella di stringhe.
AfxFormatString2 Sostituisce due stringhe per i caratteri di formato "%1" e "%2" in una stringa contenuta nella tabella di stringhe.
AfxMessageBox Visualizza una finestra di messaggio.

Requisiti

Intestazioneafxwin.h

AfxExtractSubString

Questa funzione globale può essere usata per estrarre una sottostringa da una determinata stringa di origine.

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

Parametri

rString
Riferimento a un CString oggetto che riceverà una singola sottostringa.

lpszFullString
Stringa contenente il testo completo della stringa da cui estrarre.

iSubString
Indice in base zero della sottostringa da estrarre da lpszFullString.

chSep
Carattere separatore utilizzato per delimitare le sottostringhe.

Valore restituito

TRUE se la funzione ha estratto correttamente la sottostringa in corrispondenza dell'indice specificato; in caso contrario, FALSE.

Osservazioni:

Questa funzione è utile per estrarre più sottostringhe da una stringa di origine quando un singolo carattere noto separa ogni sottostringa. Questa funzione esegue la ricerca dall'inizio del lpszFullString parametro ogni volta che viene chiamata.

Questa funzione restituirà FALSE se lpszFullString è impostata su NULL o la funzione raggiunge la fine di lpszFullString senza trovare iSubString+1 occorrenze del carattere separatore specificato. Il parametro non verrà modificato dal valore originale se lpszFullString è stato impostato su NULL. In rString caso contrario, il rString parametro viene impostato sulla stringa vuota se non è stato possibile estrarre la sottostringa per l'indice specificato.

Esempio

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

Requisiti

Intestazioneafxwin.h

AfxFormatString1

Sostituisce la stringa a cui lpsz1 punta per qualsiasi istanza dei caratteri "%1" nella risorsa stringa del modello identificata da nIDS.

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

Parametri

rString
Viene eseguito un riferimento a un oggetto CString che conterrà la stringa risultante dopo la sostituzione.

nIDS
ID della risorsa della stringa di modello in cui verrà eseguita la sostituzione.

lpsz1
Stringa che sostituirà i caratteri "%1" di formato nella stringa del modello.

Osservazioni:

La stringa appena formata viene archiviata in rString. Ad esempio, se la stringa nella tabella di stringhe è "File %1 not found"e lpsz1 è uguale a "C:\MYFILE.TXT", rString conterrà la stringa "File C:\MYFILE.TXT not found". Questa funzione è utile per la formattazione di stringhe inviate alle finestre di messaggio e ad altre finestre.

Se i caratteri "%1" di formato vengono visualizzati più volte nella stringa, verranno effettuate più sostituzioni.

Esempio

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
}

Requisiti

Intestazioneafxwin.h

AfxFormatString2

Sostituisce la stringa a lpsz1 cui punta per qualsiasi istanza dei caratteri "%1"e la stringa a lpsz2 cui punta per tutte le istanze dei caratteri "%2", nella risorsa stringa modello identificata da nIDS.

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

Parametri

rString
Riferimento all'oggetto CString che conterrà la stringa risultante dopo l'esecuzione della sostituzione.

nIDS
ID tabella stringa della stringa del modello in cui verrà eseguita la sostituzione.

lpsz1
Stringa che sostituirà i caratteri "%1" di formato nella stringa del modello.

lpsz2
Stringa che sostituirà i caratteri "%2" di formato nella stringa del modello.

Osservazioni:

La stringa appena formata viene archiviata in rString. Ad esempio, se la stringa nella tabella di stringhe è "File %1 not found in directory %2", punta a "MYFILE.TXT"e lpsz2 punta a "C:\MYDIR", rString conterrà la stringa "File MYFILE.TXT not found in directory C:\MYDIR". lpsz1

Se i caratteri "%1" di formato o "%2" vengono visualizzati più volte nella stringa, verranno effettuate più sostituzioni. Non devono essere in ordine numerico.

Esempio

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
}

Requisiti

Intestazioneafxwin.h

AfxMessageBox

Visualizza una finestra di messaggio sullo schermo.

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

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

Parametri

lpszText
Punta a un oggetto o a una CString stringa con terminazione Null contenente il messaggio da visualizzare nella finestra di messaggio.

nType
Stile della finestra di messaggio. Applicare uno qualsiasi degli stili della finestra di messaggio alla casella.

nIDHelp
ID contesto della Guida per il messaggio; 0 indica che verrà usato il contesto della Guida predefinito dell'applicazione.

nIDPrompt
ID univoco utilizzato per fare riferimento a una stringa nella tabella di stringhe.

Valore restituito

Zero se la memoria non è sufficiente per visualizzare la finestra di messaggio; in caso contrario, viene restituito uno dei valori seguenti:

  • IDABORT È stato selezionato il pulsante Interrompi.

  • IDCANCEL È stato selezionato il pulsante Annulla.

  • IDIGNORE È stato selezionato il pulsante Ignora.

  • IDNO È stato selezionato il pulsante No.

  • IDOK È stato selezionato il pulsante OK.

  • IDRETRY È stato selezionato il pulsante Riprova.

  • IDYES È stato selezionato il pulsante Sì.

Se in una finestra di messaggio è presente un pulsante Annulla, il IDCANCEL valore verrà restituito se viene premuto il tasto ESC o se è selezionato il pulsante Annulla. Se la finestra di messaggio non ha alcun pulsante Annulla, la pressione del tasto ESC non ha alcun effetto.

Le funzioni AfxFormatString1 e AfxFormatString2 possono essere utili nella formattazione del testo visualizzato in una finestra di messaggio.

Osservazioni:

La prima forma di questa funzione di overload visualizza una stringa di testo a lpszText cui punta nella finestra di messaggio e usa nIDHelp per descrivere un contesto della Guida. Il contesto della Guida viene usato per passare a un argomento della Guida associato quando l'utente preme il tasto ? (in genere F1).

La seconda forma della funzione usa la risorsa stringa con l'ID nIDPrompt per visualizzare un messaggio nella finestra di messaggio. La pagina della Guida associata viene trovata tramite il valore di nIDHelp. Se viene usato il valore predefinito di nIDHelp (-1), l'ID risorsa stringa, nIDPrompt, viene usato per il contesto della Guida. Per altre informazioni sulla definizione dei contesti della Guida, vedere La nota tecnica 28.

Esempio

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

Vedi anche

Macro e globali
CStringT Classe