CString Biçimlendirme ve İleti Kutusu Görünümü

Nesneleri biçimlendirmek ve ayrıştırmak CString için bir dizi işlev sağlanır. Nesneleri işlemeniz CString gerektiğinde bu işlevleri kullanabilirsiniz, ancak bunlar özellikle ileti kutusu metninde görünecek dizeleri biçimlendirmek için kullanışlıdır.

Bu işlev grubu, ileti kutusunu görüntülemek için genel bir yordam da içerir.

CString Işlev

Veri Akışı Adı Açıklama
AfxExtractSubString Belirli bir kaynak dizeden tek bir karakterle ayrılmış alt dizeleri ayıklar.
AfxFormatString1 Dize tablosundaki bir dizedeki "%1" biçim karakterlerinin yerine belirli bir dizeyi koyar.
AfxFormatString2 Dize tablosundaki bir dizedeki "%1" ve "%2" biçim karakterleri için iki dizenin yerini alır.
AfxMessageBox İleti kutusunu görüntüler.

Gereksinimler

Üstbilgi afxwin.h

AfxExtractSubString

Bu genel işlev, belirli bir kaynak dizeden alt dize ayıklamak için kullanılabilir.

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

Parametreler

rString
Tek bir CString alt dize alacak bir nesneye başvuru.

lpszFullString
Ayıklanması gereken dizenin tam metnini içeren dize.

iSubString
içinden lpszFullStringayıklanması gereken alt dizenin sıfır tabanlı dizini.

chSep
Alt dizeleri sınırlandırmak için kullanılan ayırıcı karakter.

Dönüş Değeri

TRUE işlevi sağlanan dizinde alt dizeyi başarıyla ayıkladıysa; aksi takdirde , FALSE.

Açıklamalar

Bu işlev, bilinen tek bir karakter her alt dizeyi ayırdığında kaynak dizeden birden çok alt dize ayıklamak için kullanışlıdır. Bu işlev, her çağrıldığında parametrenin lpszFullString başından arar.

Bu işlev, olarak ayarlanırsa NULL veya işlev belirtilen ayırıcı karakterin +1 yinelemesini bulmadan iSubStringsonuna lpszFullString ulaşırsa lpszFullString döndürürFALSE. rString parametresi, olarak ayarlandıysa lpszFullString NULLözgün değerinden değiştirilmez; aksi takdirde, rString belirtilen dizin için alt dize ayıklanamadıysa parametresi boş dizeye ayarlanır.

Örnek

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

Gereksinimler

Üstbilgi afxwin.h

AfxFormatString1

tarafından tanımlanan nIDSşablon dizesi kaynağındaki karakterlerin "%1" tüm örnekleri için işaret ettiği lpsz1 dizenin yerini alır.

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

Parametreler

rString
Değiştirme gerçekleştirildikten sonra sonuç dizesini içerecek bir CString nesneye başvuru.

nIDS
Değiştirmenin gerçekleştirileceği şablon dizesinin kaynak kimliği.

lpsz1
Şablon dizesindeki biçim karakterlerini "%1" değiştirecek bir dize.

Açıklamalar

Yeni oluşturulan dize içinde rStringdepolanır. Örneğin, dize tablosundaki "File %1 not found"dize ise ve lpsz1 değerine eşitse"C:\MYFILE.TXT"rString, dizesini "File C:\MYFILE.TXT not found"içerir. Bu işlev, ileti kutularına ve diğer pencerelere gönderilen dizeleri biçimlendirmek için kullanışlıdır.

Biçim karakterleri "%1" dizede birden çok kez görünüyorsa, birden çok değiştirme yapılır.

Örnek

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
}

Gereksinimler

Üstbilgi afxwin.h

AfxFormatString2

tarafından belirtilen şablon dizesi kaynağında nIDSkarakterlerin "%1"herhangi bir örneği için işaret edilen lpsz1 dizeyi ve karakterlerin "%2"tüm örnekleri için tarafından işaret edilen lpsz2 dizeyi kullanır.

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

Parametreler

rString
Değiştirme gerçekleştirildikten sonra sonuç dizesini içerecek öğesine başvuru CString .

nIDS
Değiştirmenin gerçekleştirileceği şablon dizesinin dize tablosu kimliği.

lpsz1
Şablon dizesindeki biçim karakterlerini "%1" değiştirecek bir dize.

lpsz2
Şablon dizesindeki biçim karakterlerini "%2" değiştirecek bir dize.

Açıklamalar

Yeni oluşturulan dize içinde rStringdepolanır. Örneğin, dize tablosundaki dize ise "File %1 not found in directory %2", lpsz1 "MYFILE.TXT"öğesine ve lpsz2 işaret ise rString "C:\MYDIR"dizesini "File MYFILE.TXT not found in directory C:\MYDIR"içerir.

Karakter "%1" biçimlendirilirse veya "%2" dizede birden çok kez görünürse, birden çok değiştirme yapılır. Sayısal sırada olmaları gerekmez.

Örnek

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
}

Gereksinimler

Üstbilgi afxwin.h

AfxMessageBox

Ekranda bir ileti kutusu görüntüler.

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

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

Parametreler

lpszText
İleti kutusunda görüntülenecek iletiyi içeren bir CString nesneye veya null ile sonlandırılan dizeye işaret ediyor.

nType
İleti kutusunun stili. İleti kutusu stillerinden herhangi birini kutuya uygulayın.

nIDHelp
İletinin Yardım bağlam kimliği; 0, uygulamanın varsayılan Yardım bağlamlarının kullanılacağını gösterir.

nIDPrompt
Dize tablosundaki bir dizeye başvurmak için kullanılan benzersiz kimlik.

Dönüş Değeri

İleti kutusunu görüntülemek için yeterli bellek yoksa sıfır; aksi takdirde, aşağıdaki değerlerden biri döndürülür:

  • IDABORT Durdur düğmesi seçildi.

  • IDCANCEL İptal düğmesi seçildi.

  • IDIGNORE Yoksay düğmesi seçildi.

  • IDNO Hayır düğmesi seçildi.

  • IDOK Tamam düğmesi seçildi.

  • IDRETRY Yeniden Dene düğmesi seçildi.

  • IDYES Evet düğmesi seçildi.

İleti kutusunda İptal düğmesi varsa, IDCANCEL ESC tuşuna basıldığında veya İptal düğmesi seçiliyse değer döndürülür. İleti kutusunda İptal düğmesi yoksa ESC tuşuna basıldığında hiçbir etkisi olmaz.

ve işlevleri AfxFormatString1 AfxFormatString2 , bir ileti kutusunda görüntülenen metni biçimlendirmede yararlı olabilir.

Açıklamalar

Bu aşırı yüklenmiş işlevin ilk biçimi, ileti kutusunda tarafından lpszText işaret edilen bir metin dizesi görüntüler ve bir Yardım bağlamını açıklamak için kullanır nIDHelp . Yardım bağlamı, kullanıcı Yardım tuşuna (genellikle F1) bastığında ilişkili bir Yardım konusuna atlamak için kullanılır.

İşlevin ikinci biçimi, ileti kutusunda bir ileti görüntülemek için kimliğiyle nIDPrompt dize kaynağını kullanır. İlişkili Yardım sayfası değeri nIDHelparacılığıyla bulunur. varsayılan değeri nIDHelp (-1) kullanılırsa, Yardım bağlamı için dize kaynağı kimliği nIDPromptkullanılır. Yardım bağlamlarını tanımlama hakkında daha fazla bilgi için bkz . Teknik Not 28.

Örnek

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

Ayrıca bkz.

Makrolar ve Genel Ayarlar
CStringT Sınıf