CString
Formatowanie i wyświetlanie okna komunikatów
Dostępnych jest wiele funkcji do formatowania i analizowania CString
obiektów. Tych funkcji można używać za każdym razem, gdy trzeba manipulować CString
obiektami, ale są one szczególnie przydatne do formatowania ciągów, które będą wyświetlane w tekście pola komunikatu.
Ta grupa funkcji zawiera również globalną procedurę wyświetlania pola komunikatu.
CString
Funkcje
Nazwa/nazwisko | opis |
---|---|
AfxExtractSubString |
Wyodrębnia podciągy oddzielone pojedynczym znakiem od danego ciągu źródłowego. |
AfxFormatString1 |
Podstawia dany ciąg dla znaków formatu "%1" w ciągu zawartym w tabeli ciągów. |
AfxFormatString2 |
Podstawia dwa ciągi dla znaków formatu "%1" i "%2" w ciągu zawartym w tabeli ciągów. |
AfxMessageBox |
Wyświetla okno komunikatu. |
Wymagania
Nagłówek afxwin.h
AfxExtractSubString
Ta funkcja globalna może służyć do wyodrębniania podciągów z danego ciągu źródłowego.
BOOL AFXAPI AfxExtractSubString (
CString& rString,
LPCTSTR lpszFullString,
int iSubString,
TCHAR chSep = '\n');
Parametry
rString
Odwołanie do CString
obiektu, który otrzyma pojedynczy podciąg.
lpszFullString
Ciąg zawierający pełny tekst ciągu do wyodrębnienia.
iSubString
Indeks zera podciągów do wyodrębnienia z lpszFullString
klasy .
chSep
Znak separatora używany do rozdzielania podciągów.
Wartość zwracana
TRUE
jeśli funkcja pomyślnie wyodrębniła podciąg w podanym indeksie; w przeciwnym razie, FALSE
.
Uwagi
Ta funkcja jest przydatna do wyodrębniania wielu podciągów z ciągu źródłowego, gdy znany pojedynczy znak oddziela każdy podciąg. Ta funkcja wyszukuje od początku parametru lpszFullString
za każdym razem, gdy jest wywoływana.
Ta funkcja zwróci FALSE
wartość , jeśli lpszFullString
ustawiono NULL
wartość lub funkcja osiągnie koniec lpszFullString
bez znajdowania iSubString
+1 wystąpień określonego separatora. Parametr rString
nie zostanie zmodyfikowany z oryginalnej wartości, jeśli lpszFullString
został ustawiony na NULL
; w przeciwnym razie parametr jest ustawiony na pusty ciąg, rString
jeśli podciąg nie można wyodrębnić dla określonego indeksu.
Przykład
// 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);
}
Wymagania
Nagłówek afxwin.h
AfxFormatString1
Podstawia ciąg wskazywany przez lpsz1
dla wszystkich wystąpień znaków "%1"
w zasobie ciągu szablonu zidentyfikowanego przez nIDS
.
void AfxFormatString1(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1);
Parametry
rString
Odwołanie do CString
obiektu, który będzie zawierać wynikowy ciąg po wykonaniu podstawienia.
nIDS
Identyfikator zasobu ciągu szablonu, na którym zostanie wykonane podstawienie.
lpsz1
Ciąg, który zastąpi znaki "%1"
formatu w ciągu szablonu.
Uwagi
Nowo utworzony ciąg jest przechowywany w pliku rString
. Jeśli na przykład ciąg w tabeli ciągów to "File %1 not found"
, i lpsz1
jest równy "C:\MYFILE.TXT"
, rString
będzie zawierać ciąg "File C:\MYFILE.TXT not found"
. Ta funkcja jest przydatna do formatowania ciągów wysyłanych do pól komunikatów i innych okien.
Jeśli znaki "%1"
formatu pojawiają się w ciągu więcej niż raz, zostanie wykonanych wiele podstępów.
Przykład
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
}
Wymagania
Nagłówek afxwin.h
AfxFormatString2
Zastępuje ciąg wskazywany przez lpsz1
dla wszystkich wystąpień znaków "%1"
, a ciąg wskazywany przez lpsz2
dla wszystkich wystąpień znaków "%2"
, w zasobie ciągu szablonu zidentyfikowanym przez nIDS
.
void AfxFormatString2(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1,
LPCTSTR lpsz2);
Parametry
rString
Odwołanie do CString
elementu , które będzie zawierać wynikowy ciąg po wykonaniu podstawienia.
nIDS
Identyfikator tabeli ciągów ciągu szablonu, na którym zostanie wykonane podstawienie.
lpsz1
Ciąg, który zastąpi znaki "%1"
formatu w ciągu szablonu.
lpsz2
Ciąg, który zastąpi znaki "%2"
formatu w ciągu szablonu.
Uwagi
Nowo utworzony ciąg jest przechowywany w pliku rString
. Jeśli na przykład ciąg w tabeli ciągów to "File %1 not found in directory %2"
, lpsz1
wskazuje wartość "MYFILE.TXT"
i lpsz2
wskazuje wartość , element rString
będzie zawierać "C:\MYDIR"
ciąg "File MYFILE.TXT not found in directory C:\MYDIR"
.
Jeśli znaki "%1"
formatu lub "%2"
pojawiają się w ciągu więcej niż raz, zostanie wykonanych wiele podstępów. Nie muszą być w kolejności liczbowej.
Przykład
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
}
Wymagania
Nagłówek afxwin.h
AfxMessageBox
Wyświetla pole komunikatu na ekranie.
int AfxMessageBox(
LPCTSTR lpszText,
UINT nType = MB_OK,
UINT nIDHelp = 0);
int AFXAPI AfxMessageBox(
UINT nIDPrompt,
UINT nType = MB_OK,
UINT nIDHelp = (UINT) -1);
Parametry
lpszText
CString
Wskazuje obiekt lub ciąg zakończony o wartości null zawierający komunikat, który ma być wyświetlany w oknie komunikatu.
nType
Styl okna komunikatu. Zastosuj dowolne style okna komunikatów do pola .
nIDHelp
Identyfikator kontekstu Pomocy dla wiadomości; 0 wskazuje, że zostanie użyty domyślny kontekst Pomocy aplikacji.
nIDPrompt
Unikatowy identyfikator używany do odwołowania się do ciągu w tabeli ciągów.
Wartość zwracana
Zero, jeśli za mało pamięci, aby wyświetlić pole komunikatu; w przeciwnym razie zwracana jest jedna z następujących wartości:
IDABORT
Wybrano przycisk Przerwanie.IDCANCEL
Wybrano przycisk Anuluj.IDIGNORE
Wybrano przycisk Ignoruj.IDNO
Wybrano przycisk Nie.IDOK
Wybrano przycisk OK.IDRETRY
Wybrano przycisk Ponów próbę.IDYES
Wybrano przycisk Tak.
Jeśli pole komunikatu ma przycisk Anuluj, wartość zostanie zwrócona, IDCANCEL
jeśli zostanie naciśnięty ESC lub zostanie wybrany przycisk Anuluj. Jeśli pole komunikatu nie ma przycisku Anuluj, naciśnięcie ESC nie ma żadnego efektu.
Funkcje AfxFormatString1
i AfxFormatString2
mogą być przydatne podczas formatowania tekstu wyświetlanego w polu komunikatu.
Uwagi
Pierwsza forma tej przeciążonej funkcji wyświetla ciąg tekstowy wskazywany lpszText
przez w polu komunikatu i używa nIDHelp
go do opisania kontekstu Pomocy. Kontekst Pomocy służy do przechodzenia do skojarzonego tematu Pomocy, gdy użytkownik naciska Pomoc (zazwyczaj F1).
Druga forma funkcji używa zasobu ciągu z identyfikatorem nIDPrompt
, aby wyświetlić komunikat w polu komunikatu. Skojarzona strona Pomocy znajduje się za pomocą wartości nIDHelp
. Jeśli jest używana wartość domyślna nIDHelp
(-1), identyfikator nIDPrompt
zasobu ciągu , jest używany dla kontekstu Pomocy. Aby uzyskać więcej informacji na temat definiowania kontekstów Pomocy, zobacz Informacje techniczne 28.
Przykład
// 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);