![]() |
|
|
![]()
|
|
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
это чтоб jpg можно было открывать??? а то у миня его нихде нетю... с открытыим-закрытием более-менее разобрался... какие ограничения на bmp-файл??? разрешение рисунка и размер самого файла |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
я ничего не понимаю, что происходит, без подключения этого файла компилятор вообще не узнает CImage и прога просто не запустится. Вообщем внимательно перечитайте мой предыдущий пост, там указаны методы которые надо добавить и/или изменить, как и что изменить смотрите в файлах моего проекта. интересно... |
|||
|
||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
про открытие-закрытие я имел ввиду в программном коде как енто примерна фсе происходить что за что отвечаить (= у миня при компиляции выдаеть окошко програмки, я жму "открыть", нахожу файл с расширением bmp, нажимаю "открыть" и ничего... появляется новое окошко с названием файла и ничиво больше... и где взять тада atlimage.h???
|
|||
|
||||
| zkv |
|
||||||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
да, следствие зашло в тупик
попробуем по другому. 1. создаем проект MFC+MDI... вообщем как раньше говорил, только тип документа - вмр указываем, в принципе не обязательно. 2. открываем файл SimpleBMPViewerDoc.h (здесь и далее имена файлов указываются при условии, что проект был назван SimpleBMPViewer) 2.1. сразу после строки #pragma once вставляем #include <atlimage.h> 2.2. в объявление класса CSimpleBMPViewerDoc втыкаем следующие строки (например перед }; ):
3. Открываем SimpleBMPViewerDoc.cpp 3.1 добавляем куда-нить в конец файла:
4. теперь сложно 4.1. добавляем строку afx_msg void OnFileNew(); после строки DECLARE_MESSAGE_MAP() 5. открываем SimpleBMPViewer.cpp 5.1 находим строку ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) - убираем её или комментируем 5.2. на место убранной строки пишем ON_COMMAND(ID_FILE_NEW, OnFileNew) 5.3. в конец файла пишем
6. открываем SimpleBMPViewerView.cpp 6.1. находим метод OnDraw(), титаническими усилиями приводим его к виду:
6.2. находим метод OnInitialUpdate(), титаническими усилиями приводим его к виду: void CSimpleBMPViewerView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSimpleBMPViewerDoc* pDoc = GetDocument(); CSize sizeTotal; sizeTotal.cx = pDoc->m_imgMain.GetWidth(); sizeTotal.cy = pDoc->m_imgMain.GetHeight(); SetScrollSizes(MM_TEXT, sizeTotal); } 7. ищем кнопку Start (F5) на панели инструментов, жмем и наслаждаемся видом открываемых BMP'шек |
||||||||
|
|||||||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
блин делаю все как описано выше, в итоге получаетси все то же самое: открываю bmp, открывается в самой программе новое окошко, которое полностью белое... если нужно, скрин выложу - только вот не знаю как тут рисунки выкладывать... поентому придетси мылом слать...
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
зачем мне скрин? думаете белых окон не видел? мне уже самому интересно стало, что за напасть у вас там такая, вот сижу и прикидываю, может у вас операционная система не подходящая - нет тогда прога кричала бы что gdiplus.dll найти не может, может в 6-й студии не реализован CImage - нет тогда компилятор бы проект не собрал... А раз вы говорите прога запускается, то я даже не знаю, что еще предположить. Ну ладно, давайте посмотрим что у вас получилось, оставьте в вашем проекте файлы, тех же типов, что у меня и выкладывайте сюда (кнопка "Ответ в тему", если не ошибаюсь), поглядим
ps другой вариант поставить иную среду разработки. |
|||
|
||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
Воть прикрепленные файлы это те, что у меня в проекте
Присоединённый файл ( Кол-во скачиваний: 11 )
SimpleBMPViewer.jpg 24,63 Kb |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
интересно, но в вашем проекте, не сделано НИЧЕГО из того, что я говорил, исключая создание каркаса приложения. Само изображение никак не покажется, надо проделать описанные выше действия.
Вообщем так, еще один вариант, берете ваш проект, проект созданный мной, из моего проекта копируете в свой все файлы + папку RES, исключая SimpleBMPViewer.sln и SimpleBMPViewer.vcproj, говорите "Заменить все", когда спросит. Потом открывайте полученный проект и пробуйте запускать. Или, все-таки, попробуйте проделать действия, описанные мной выше. |
|||
|
||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
хм??? я открывал файлы которые сказал и менял там... ладно, видать не те файлы менял (= чичас попробую (= не может найти файл atlimage.h... хде его взять??? разобрался в чем моя проблема была, делал все как надо, файл этот найти не могет... пробовал и проект пересоздавать... чет вообще незадачится у меня... (=
Это сообщение отредактировал(а) AheFeanare - 9.1.2007, 23:05 |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
значит у вас его нет
вообщем теперь, либо качать SDK (я бы не стал, пожалуй), либо ставит компилятор по-новее, либо отказаться от использования gdiplus (все будет не так просто и наглядно, но возможно оно и лучше для обучения). |
|||
|
||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
у меня далеко не безлимитка, поэтому качать не вариант... компилятор поставить поновее неоткудова, остается последний вариант - что же тогда делать???
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
идти другим путем, в общем сейчас уже время поджимать начинает, пробуй сам, можешь воспользоваться функциями загрузки/записи BMP приведенными ранее. Смысл тот же, в классе документа заводим объект(ы) который(е) хранят твои данные, думаю скорее всего это будет указатель на информационную структуру растра, и указатель на растр. Здесь же реализуем загрузку запись, в классе представления останется только вывести полученное на экран. Вообщем простенько все |
|||
|
||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
zkv, в первом ващем сообщении в этом топике вы давали функции по работе с bmp-файлами, какой проект необходимо создавать чтобы они нормально работали??? и я так понял необходимо лишь знать имя файла и чтобы он находился в папке с проектом, чтобы он открылся??? т.е. сначала открыть файл с нужным именем, потом выполнить функцию загрузки, потом вывода на экран, потом записи, и закрыть файл??? поправьте если что не так понял
|
|||
|
||||
| zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
AheFeanare, все тоже самое эти функции можно разместить в классе документа (сделать его методами), и вызывать их там же, где вызывали CImage::Load() и CImage::Save() , членами-данными класса сделать
и затем, в классе представления готовить область рисования также как и делали ( OnInitialUpdate() ), и рисовать ( OnDraw() ) используя данные m_pBMI и m_pData (как - смотрите последнюю приведенную функцию). Вообще можно было бы завести свой класс, куда и запихать все эти методы, а в классе документа использовать объект этого класса (но пока можно повременить Да и еще
в описываемом случае мы используем имя файла, которое нам предоставил каркас приложения, сгенерированный мастером, откуда он его взял, нас, грубо говоря, не волнует. т.е. в методе BOOL CSimpleBMPViewerDoc::OnOpenDocument(LPCTSTR lpszPathName) lpszPathName - это имя интересующего нас файла, которое было получено в диалоге выбора файла, остается только его открыть. |
||||
|
|||||
| AheFeanare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.12.2006 Репутация: нет Всего: нет |
я просто никогда не работал раньше в MFC, не знаю что и как... пытаюсь вот сейчас понять... значит просто заменить в той программе функции CImage::Load() и CImage::Save() на те OpenBmp() и SaveBMP()??? и потом где мы вызываем эти функции и вызов есесна изменить - и все???
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |