![]() |
|
![]() ![]() ![]() |
|
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
||||
|
||||
eugeniy |
|
||||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
Вообщем ситуация такая: Когда делаю выборку данных из mysql:
то в дебаггере вижу, что в foto попало нужно значение, например, 1234.jpg. Потом же после выборки я попадаю сюда:
и сразу же как-только я вхожу в функцию void CReaderDlg::OnTimer(UINT nIDEvent) , то сразу переменная foto становится пустая
сделал в функции BOOL CReaderDlg::OnEraseBkgnd(CDC* pDC) проверку на пустоту, чтобы не валился код.
такое ощущение, что надо что-то поменять местами. может,
нужно в другое место запихать? не пойму никак, в чём дело. Да, для справки у меня переменная foto объявлена два раза, сначала в
потом в
|
||||||||||||||||||
|
|||||||||||||||||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Если переменная с таким именем есть и в классе CReader и в классе CReaderDlg, то это совершенно разные переменные. CString на пустую строку проверяется так:
Это сообщение отредактировал(а) Albor - 19.5.2010, 09:55 |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
||||
|
||||
eugeniy |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
Когда я объявляю в одном классе CReaderDlg переменную foto, то при компиляции он мне пишет: c:\program files\microsoft visual studio\vc98\bin\reader(3)\reader\reader_writer.cpp(258) : error C2065: 'Foto' : undeclared identifier подключил хэдер readerDlg.h, переменная объявлена как public, не понимаю почему reader_writer.cpp не может до неё достучаться!? Да, кстати, когда я делал с другими переменными
я же их объявлял и в CReaderDlg и в CReader и всё работало отлично. А тут что-то капризничает. |
||||
|
|||||
Albor |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
вот фрагмент твоего кода:
Здесь ты копируешь текст из CReader в контрол принадлежащий CReaderDlg. Почему у тебя возникает проблема копирования строки - не понимаю. Делай по шагам: 1. Объяви в CReaderDlg переменную CString m_ImageFileName; 2. В OnTimer, где читаешь карточку и перебрасываешь данные в CReaderDlg, присваиваешь этой переменной значение
Правильно, ты объявил переменную в одном классе, а пытаешься доступиться к ней из другого, а этот "другой" ни слухом ни духом не знает о первом. После того, как объявляешь с тем же именем переменную в "слепом" классе, компилятор перестаёт ругаться, но данные то остаются в CReader::Foto, а CReaderDlg::Foto, как была пустой при создании, так и осталась. Кстати, разницу в именах переменных заметил? ![]() |
||||||
|
|||||||
eugeniy |
|
||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
всё сделал так как вы сказали, получилось вот так:
после этого фото всё равно не выводит на главном диалоге, а когда нажимаю кнопку "заявление на мат.помощь" выводится второй диалог и после его закрытия, на главном диалоге прорисовывается фото и вылетает с ошибкой следующего содержания: Debug Assertion Failed! Program:... File: c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlimage.h Line:503 Expression: m_hBitmap==0 вот так(
если честно нет) |
||||||||||||||
|
|||||||||||||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
CReader::Foto и CReaderDlg::Foto - это полные имена переменных, состоящих из области видимости и имени переменной. Имена самих переменных одинаковые, а область видимости разная. Это всё равно, что записать файл с именем foto.bmp на диск С и на диск D, если изменить файл на диске С, то на D, он останется неизменённым и наоборот. По рисованию: судя по ошибке - попытка нарисовать "пустую" картинку. Перед вызовом функции рисования картинки, проверяй m_hBitmap и рисуй, если он не равен нулю. |
|||
|
||||
eugeniy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
Всё вроде работает. Отлично выводит картинку.
вот кусок рабочего кода, отвечающий за вывод картинки.
можно узнать как проверить существование файла? есть ли в mfc какие-нить средства? |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
||||
|
||||
eugeniy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
А можете показать как правильно сделать проверку на существование файла?
Спасибо |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Можно так:
|
|||
|
||||
eugeniy |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 23.3.2010 Где: Петрозаводск Репутация: нет Всего: нет |
спасибо |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |