Ваш код в порядке, подсказка не исчезает, возможно, это из-за ваших комбинаций цветов TextInputLayout и фона, попробуйте использовать некоторые яркие цвета.
изменил его немного и поместил в линейный макет.
Если Ваши функции только требуют чтения строки и не изменения его, изменяют их для принятия const char *
вместо char *
. Эти CString
автоматически преобразует для Вас, это - то, как большая часть MFC функционирует работа, и это действительно удобно. (На самом деле использование MFC LPCTSTR
, который является синонимом для const TCHAR *
- работает и на MBC и на сборки Unicode).
, Если необходимо изменить строку, GetBuffer(0)
, очень опасно - она не обязательно выделит достаточно памяти для получившей строки, и Вы могли получить некоторые ошибки переполнения буфера.
, Как был упомянут другими, необходимо использовать ReleaseBuffer
после GetBuffer
. Вы не должны делать этого для преобразования в const char *
.
когда Вы вызываете getbuffer функцию, она выделяет память для Вас. когда Вы сделали с ним, необходимо назвать releasebuffer для освобождения его
попробуйте документацию в http://msdn.microsoft.com/en-us/library/awkwbzyc.aspx для справки на этом.
@ ОП: >>> Полагаю, нас беспокоят только утечки памяти или что-то еще ...
Привет, вызов метода GetBuffer не приведет к утечкам памяти. Потому что деструктор все равно освободит буфер. Однако другие уже предупреждали вас о потенциальных проблемах с вызовом этого метода.
@Can >>> когда вы вызываете функцию getbuffer, она выделяет вам память.
Это утверждение не совсем верно. GetBuffer (0) НЕ выделяет память. Он просто возвращает указатель на внутренний строковый буфер, который можно использовать для управления строкой непосредственно "вне" класса CString.
Однако, если вы передаете число, скажите ему N, как GetBuffer (N), и если N больше текущей длины буфера, Раджеш. MVP, Visual ++.