Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 lpszFullStringklasy .
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:
IDABORTWybrano przycisk Przerwanie.IDCANCELWybrano przycisk Anuluj.IDIGNOREWybrano przycisk Ignoruj.IDNOWybrano przycisk Nie.IDOKWybrano przycisk OK.IDRETRYWybrano przycisk Ponów próbę.IDYESWybrano 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 nIDPromptzasobu 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);