2015-08-17 4 views
-3

Я пытаюсь получить доступ к элементам символа CString.
Я получаю сообщение об ошибке в следующих строках кода:Получение неожиданной ошибки в моем приложении MFC

void CTOTALTIMECALCDlg::OnBnClickedOk() 
{ 
    // TODO: Add your control notification handler code here 
    CString lstring; 
    m_Timeget.GetWindowText(lstring); 
    MessageBox(lstring[0]); 
    CDialogEx::OnOK(); 
} 

Ошибка:

"Error 1 error C2664: 'int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)' : cannot convert argument 1 from 'wchar_t' to 'LPCTSTR'" at line "MessageBox(lstring[0]);"

ответ

2

Если вы хотите, чтобы напечатать первый символ в вашем MessageBox, то не ожидайте от него конвертировать из LPCTSTR ->LPCWSTR (Юникод) ->const WCHAR* - wchar_t.

Распечатайте полностью CString или правильно напечатайте первый символ.

void CTOTALTIMECALCDlg::OnBnClickedOk() 
{ 
    // TODO: Add your control notification handler code here 
    CString lstring; 
    m_Timeget.GetWindowText(lstring); 
    if (!lstring.IsEmpty()) 
     MessageBox(lstring.Left(1)); 
    CDialogEx::OnOK(); 
} 

MessageBox принимает LPCTSTR в качестве параметра.
LPCTSTR разрешен const wchar_t* в настройках Юникода.
CString::operator[ ] возвращает TCHAR, который является wchar_t в Юникоде.
CString::operator LPCTSTR() смотри ниже в коде

//You are doing this: 
MessageBox(wchar_t); 
//It wants this: 
MessageBox(wchar_t*); 
//CString::Left will return a new CString 
MessageBox(CString::Left . CString::operator LPCTSTR()); 
+0

Am только с помощью индекса в 0, чтобы проверить утра в состоянии получить доступ к данным ,,, хочу ли я делать операции над данными, присутствующие в этой lstring, а затем отобразить его в CStatic позже в моем gui – Lokanath

+1

@ user78766 Вы ничего не упомянули об этом в своем вопросе. Вы можете получить доступ к данным, если 'CString' не [' .IsEmpty'] (https://msdn.microsoft.com/en-us/library/aa300475%28v=vs.60%29.aspx). Также см. ['CString :: operator []'] (https://msdn.microsoft.com/en-us/library/aa300563%28v=vs.60%29.aspx) – Blacktempel

+0

Я вот в этом, неожиданная error ,,,, Я уже пробовал использовать [] и GetAt обе функции, возвращающие ту же ошибку ,,,, Я даже попытался инициализировать строку, увидев пример из msdn ,,, даже тогда я получаю ту же ошибку, что и я вижу код кажется, все в порядке, что-то еще не так! – Lokanath

Смежные вопросы