![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: нет Всего: 16 |
Да... В виндосе, как и в досе (откуда все пошло) перевод строки определяется 2-я символами - перевод строки и возрат каретки. Но при чтении С и многие другие языки заменяют это одним симоволом \n, а при записи преобразуют обратно в \n\r. Для 'совместимости' |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Это MFC'шные классы для работы в архитектуре "документ/вид". Понравилось ? Тогда продолжим "Вид" иногда называют "представлением" (англ. "view"). Эти классы - всего лишь соглашение, по которому две главные функции приложения (хранение данных, взаимодействие с юзером) делятся между классами, производными от CDocument и CView. Их объединяет класс, производный от CFrameWnd, который в свою очередь подключается из класса, производного от CWinApp с помощью т.н. шаблона документа (CSingleDocTemplate/CMultipleDocTemplate). Всего есть 2 разновидности приложений Document/View: SDI (один документ, одно окно) и MDI (много документов, много окон). Второй тип используется тогда, когда нужно юзать (открывать, закрывать) много доков одной прогой одновременно. Пример - Word в ранних версиях (потом MS вроде отошла от такой практики, но в реале множество окон Word2000 в taskbar'е - это все те же окна MDI). SDI используется когда нужен только один док. Когда ты создаешь приложение MFC EXE (не окно диалога), у тебя генерится 4 основных класса плюс окно "About". Эти классы ты можешь изменять как тебе угодно, они будут определять структуру и функции именно твоей проги. В частности, документ предназначен для хранения данных, относящихся к сохраняемому/загружаемому файлу (и временных данных тоже) - значит, создай N переменных внутри класса CMyDoc и юзай их внутри дока (сохраняй, загружай в Serialize, очищай в OnNewDocument) и внутри "вида" (типа "CMyDoc *pDoc=GetDocument; pDoc->my_data = 1;"). Таким образом, документ - это класс, внутри которого хранятся все данные документа Отдельная песня - сериализация (Serialize), процесс сохранения и загрузки любых данных в двоичном виде. Для этого есть спец. класс CArchive, объект этого класса автоматом создается перед вызовом Serialize (когда ты выбрал "открыть" или "сохранить файл", MFC все сделает сама, создаст архив и преподнесет его тебе на блюдечке
Кроме того, этими операторами можно сохранять и загружать из архива объекты любых классов, производных от CObject, в том числе и объекты заранее неизвестных классов (делается так: "CObject *pOb=NULL; ar>>pOb;"). Тут есть свои тонкости, но сама возможность - просто рулеззз !!! Объект "вид" - это прежде всего окно. В смысле, дочернее окно под CMainFrame (тулбар, меню и статусбар в "вид" не входят). Вид заточен под "отображение" данных документа (OnDraw), реакцию на любые оконные сообщения (мышка/клава/команды от тулбара и меню/таймер/проч.). Любое WinAPI'шное сообщение можно обработать, и в зависимости от твоей идеи, изменять данные документа (пример: нажал юзер кнопку с буквой -- ты вставил букву в pDoc->text). Кроме того, если ты юзаешь MDI, у тебя будет не один, а несколько доков и видов; они "знают", кто чей Кроме того, в проекте можно создавать сколько угодно любых других окон, например диалогов; подключать их одно к другому, создавать и удалять когда это нужно. Когда ты создашь диалог в окне ресурсов, просто зайди в ClassWizard - и он тебя "обрадует" сообщением, что можно создать класс под новый диалог, все что от тебя потребуется чтобы вызвать диалог в проге - просто подключить файл с заголовком и написать "CMyDialog dlg; dlg.DoModal()". Тут можно бы еще много чего написать, но это уже будет офф-топ, скажу только что MFC -- рульная библиотека, сочетающая поистине гигантские возможности для Win-программера с простотой и логичностью. -------------------- ![]() |
||||
|
|||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Классы, созданные визардом, наследуються от CDocument и CView соответственно. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Поправка к примеру на пред. странице:
DENNN, я ответил кратко (мот, и не совсем корректно), а в следующем абзаце дал практически ту же формулировку, что и ты. Не придирайся Это сообщение отредактировал(а) mr.DUDA - 4.8.2003, 11:06 -------------------- ![]() |
|||
|
||||
| dmitryfly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 1.8.2003 Репутация: нет Всего: нет |
mr.DUDA, у меня вопрос, прости меня за назойливость.... Во время выполнения программы и чтения файла она не все "\n" и т.д. удаляет, чему я удивился, т.к. по идее и по смыслу программа должна работать идеально......... Я не знаю, толи иногда в строке стоит иной символ, нежели "\n", толи прогамма работает некорректно на моей машине (в чём я честно говоря сомневаюсь)......... так вот вопрос: есть ли какая вакцина против зтого, или это всё-таки проблемма в WinМаздае?...... Благодарю всех за внимание........ |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
dmirtyfly, на этот раз все Ok (см. обновленную поправку выше)
-------------------- ![]() |
|||
|
||||
| dmitryfly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 1.8.2003 Репутация: нет Всего: нет |
Да, спасибо Всем, особенно тебе, mr.DUDA, я просто раньше немного написал.....
Кстати, я, наряду с "\n" на " " заменял еще и "\r".... Зачем - не знаю, наверное интуиция, и все стало в лучшем виде......... Еще раз ВСЕМ спасибо!!!!!!! |
|||
|
||||
| dmitryfly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 1.8.2003 Репутация: нет Всего: нет |
Вопрос: а как впихнуть прокрутку по вертикали, а то файлы он читае замечательно, а ничего кроме первой страницы прочитать не могу......
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
См. на предыдущей странице
-------------------- ![]() |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
dmitryfly, каждый вопрос должен быть в отдельном топике
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |