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
Intestazione afxwin.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
Intestazione afxwin.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
Intestazione afxwin.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
Intestazione afxwin.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);