CString
Pemformatan dan Tampilan Kotak Pesan
Sejumlah fungsi disediakan untuk memformat dan mengurai CString
objek. Anda dapat menggunakan fungsi ini setiap kali Anda harus memanipulasi objek, tetapi sangat berguna untuk memformat CString
string yang akan muncul dalam teks kotak pesan.
Grup fungsi ini juga menyertakan rutinitas global untuk menampilkan kotak pesan.
CString
Fungsi
Nama | Deskripsi |
---|---|
AfxExtractSubString |
Mengekstrak substring yang dipisahkan oleh satu karakter dari string sumber tertentu. |
AfxFormatString1 |
Mengganti string yang diberikan untuk karakter format "%1" dalam string yang terkandung dalam tabel string. |
AfxFormatString2 |
Mengganti dua string untuk karakter format "%1" dan "%2" dalam string yang terkandung dalam tabel string. |
AfxMessageBox |
Menampilkan kotak pesan. |
Persyaratan
Header afxwin.h
AfxExtractSubString
Fungsi global ini dapat digunakan untuk mengekstrak substring dari string sumber tertentu.
BOOL AFXAPI AfxExtractSubString (
CString& rString,
LPCTSTR lpszFullString,
int iSubString,
TCHAR chSep = '\n');
Parameter
rString
Referensi ke CString
objek yang akan menerima substring individual.
lpszFullString
String yang berisi teks lengkap string yang akan diekstrak.
iSubString
Indeks berbasis nol dari substring untuk mengekstrak dari lpszFullString
.
chSep
Karakter pemisah yang digunakan untuk memisahkan substring.
Tampilkan Nilai
TRUE
jika fungsi berhasil mengekstrak substring pada indeks yang disediakan; jika tidak, FALSE
.
Keterangan
Fungsi ini berguna untuk mengekstrak beberapa substring dari string sumber ketika satu karakter yang diketahui memisahkan setiap substring. Fungsi ini mencari dari awal lpszFullString
parameter setiap kali dipanggil.
Fungsi ini akan mengembalikan FALSE
jika diatur lpszFullString
ke NULL
atau fungsi mencapai akhir lpszFullString
tanpa menemukan iSubString
+1 kemunculan karakter pemisah yang ditentukan. Parameter rString
tidak akan dimodifikasi dari nilai aslinya jika lpszFullString
diatur ke NULL
; jika tidak, rString
parameter diatur ke string kosong jika substring tidak dapat diekstraksi untuk indeks yang ditentukan.
Contoh
// 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);
}
Persyaratan
Header afxwin.h
AfxFormatString1
Ganti string yang diarahkan oleh lpsz1
untuk instans karakter "%1"
apa pun dalam sumber daya string templat yang diidentifikasi oleh nIDS
.
void AfxFormatString1(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1);
Parameter
rString
Referensi ke CString
objek yang akan berisi string yang dihasilkan setelah substitusi dilakukan.
nIDS
ID sumber daya string templat tempat substitusi akan dilakukan.
lpsz1
String yang akan menggantikan karakter "%1"
format dalam string templat.
Keterangan
String yang baru terbentuk disimpan di rString
. Misalnya, jika string dalam tabel string adalah "File %1 not found"
, dan lpsz1
sama dengan "C:\MYFILE.TXT"
, maka rString
akan berisi string "File C:\MYFILE.TXT not found"
. Fungsi ini berguna untuk memformat string yang dikirim ke kotak pesan dan jendela lainnya.
Jika karakter "%1"
format muncul dalam string lebih dari sekali, beberapa substitusi akan dibuat.
Contoh
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
}
Persyaratan
Header afxwin.h
AfxFormatString2
Ganti string yang diarahkan oleh lpsz1
untuk instans karakter "%1"
apa pun , dan string yang diarahkan oleh lpsz2
untuk setiap instans karakter "%2"
, dalam sumber daya string templat yang diidentifikasi oleh nIDS
.
void AfxFormatString2(
CString& rString,
UINT nIDS,
LPCTSTR lpsz1,
LPCTSTR lpsz2);
Parameter
rString
Referensi ke CString
yang akan berisi string yang dihasilkan setelah substitusi dilakukan.
nIDS
ID tabel string dari string templat tempat substitusi akan dilakukan.
lpsz1
String yang akan menggantikan karakter "%1"
format dalam string templat.
lpsz2
String yang akan menggantikan karakter "%2"
format dalam string templat.
Keterangan
String yang baru terbentuk disimpan di rString
. Misalnya, jika string dalam tabel string adalah "File %1 not found in directory %2"
, menunjuk ke "MYFILE.TXT"
, dan lpsz2
menunjuk ke "C:\MYDIR"
, maka rString
akan berisi string "File MYFILE.TXT not found in directory C:\MYDIR"
lpsz1
.
Jika format karakter "%1"
atau "%2"
muncul dalam string lebih dari sekali, beberapa substitusi akan dibuat. Mereka tidak harus dalam urutan numerik.
Contoh
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
}
Persyaratan
Header afxwin.h
AfxMessageBox
Menampilkan kotak pesan pada layar.
int AfxMessageBox(
LPCTSTR lpszText,
UINT nType = MB_OK,
UINT nIDHelp = 0);
int AFXAPI AfxMessageBox(
UINT nIDPrompt,
UINT nType = MB_OK,
UINT nIDHelp = (UINT) -1);
Parameter
lpszText
Menunjuk ke CString
objek atau string yang dihentikan null yang berisi pesan yang akan ditampilkan dalam kotak pesan.
nType
Gaya kotak pesan. Terapkan salah satu gaya kotak pesan ke kotak.
nIDHelp
ID konteks Bantuan untuk pesan; 0 menunjukkan konteks Bantuan default aplikasi akan digunakan.
nIDPrompt
ID unik yang digunakan untuk mereferensikan string dalam tabel string.
Tampilkan Nilai
Nol jika tidak ada cukup memori untuk menampilkan kotak pesan; jika tidak, salah satu nilai berikut dikembalikan:
IDABORT
Tombol Batalkan dipilih.IDCANCEL
Tombol Batal dipilih.IDIGNORE
Tombol Abaikan dipilih.IDNO
Tombol Tidak ada yang dipilih.IDOK
Tombol OK dipilih.IDRETRY
Tombol Coba Lagi dipilih.IDYES
Tombol Ya dipilih.
Jika kotak pesan memiliki tombol Batal, IDCANCEL
nilai akan dikembalikan jika tombol ESC ditekan atau tombol Batal dipilih. Jika kotak pesan tidak memiliki tombol Batal, menekan tombol ESC tidak berpengaruh.
Fungsi AfxFormatString1
dan AfxFormatString2
dapat berguna dalam memformat teks yang muncul dalam kotak pesan.
Keterangan
Bentuk pertama dari fungsi yang kelebihan beban ini menampilkan string teks yang ditujukan oleh lpszText
dalam kotak pesan dan menggunakan nIDHelp
untuk menjelaskan konteks Bantuan. Konteks Bantuan digunakan untuk melompat ke topik Bantuan terkait saat pengguna menekan tombol Bantuan (biasanya F1).
Bentuk kedua fungsi menggunakan sumber daya string dengan ID nIDPrompt
untuk menampilkan pesan dalam kotak pesan. Halaman Bantuan terkait ditemukan melalui nilai nIDHelp
. Jika nilai nIDHelp
default digunakan (-1), ID sumber daya string, nIDPrompt
, digunakan untuk konteks Bantuan. Untuk informasi selengkapnya tentang menentukan konteks Bantuan, lihat Catatan Teknis 28.
Contoh
// 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);