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 lpszFullString
ayı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 iSubString
sonuna 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 rString
depolanı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 nIDS
karakterlerin "%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 rString
depolanı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 nIDHelp
aracılığıyla bulunur. varsayılan değeri nIDHelp
(-1) kullanılırsa, Yardım bağlamı için dize kaynağı kimliği nIDPrompt
kullanı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);