| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Пример из MSDN |
| Автор: Darked 23.6.2005, 14:25 | ||
| Всем привет. В MSDN при описании класса CFileDialog в описании метода DoModal приведен такой пример:
Мне интересно почему char CChildFrame::szFilters[]="MyType Files (*.my)|*.my|All Files (*.*)|*.*||"; определена так? Что говорит такое объявление строки? Есть соображения? |
| Автор: Earnest 23.6.2005, 15:03 |
| Это просто соглашение MFC: Описание фильтра - это пары строк, разделенные символом '|'. Первая подстрока пары - описание, которое появится в списке "Тип файла", вторая - маска. В конце все это дело должно завершаться '||'. Вообще-то Windows API требует, чтобы подстроки фильтров отделялись друг от друга NULL, а в конце всей строки хочет видеть NULL NULL. Но попробуйте создать такую строку в ресурсах. Вот, видимо, разработчики MFC и прикрутили такой костылек. |
| Автор: Darked 23.6.2005, 15:08 | ||||
Earnest, меня не интересует сам фильтр, меня интересует почему так переменная объявлена:
а не так:
|
| Автор: Любитель 23.6.2005, 15:49 |
| А потому что хотелось типа неаглядней... |
| Автор: Earnest 23.6.2005, 16:43 |
| Darked, извини, не заметила. Действительно странно. Разве так можно писать? Переменная вроде как автоматическая, а квалифицируется именем класса... Теперь мне тоже стало интересно - если это, конечно, не косяк. |
| Автор: chaos 24.6.2005, 08:03 | ||
| да инетесно, я даже и не видел такого)) я обычно делаю всегда так:
|
| Автор: DENNN 24.6.2005, 09:29 | ||
Объявлена как сам тип в классе. Если завтра в этом классе тип изменится, то в этом участке кода тип будет соотвествовать изменениям. В идеале тебе вообще не нужно беспокоиться что же именно это за тип данных. Но это в идеале, реальность, как известно, вносит свои коррективы. |