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łówekafxwin.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łówekafxwin.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łówekafxwin.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łówekafxwin.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 klawisz ESC lub zostanie wybrany przycisk Anuluj. Jeśli pole komunikatu nie ma przycisku Anuluj, naciśnięcie klawisza 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 klawisz 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);

Zobacz też

Makra i globalne
CStringT Klasa