Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с Release 
V
    Опции темы
Homer
Дата 13.5.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 29.12.2004

Репутация: нет
Всего: нет



   Проблема такая: в отладочной версии все работает, в Release же накрывается, мол обращается к недействительному адресу в памяти(стандартное виндовское окно вылазит). Вобщем я определил только то, что ошибка происходит, когда я передаю сообщения.
   Впрочем, вот код, по порядку:
 
Код

//начало, посылка сообщения
void dlgFind::OnOK() 
{
...............
    GetParent()->SendMessage(WM_FINDCMD, 0, 0);
}

//сюда приходит - обработчик сообщения WM_FINDCMD от findDlg в классе CMainFrame
void CMainFrame::OnFindCmd()
{
    CMDIChildWnd* chFrame=this->MDIGetActive(FALSE);
    if(!chFrame) return;
    CExemelDoc *doc=(CExemelDoc*)chFrame->GetActiveDocument();
    LPARAM lp=(LPARAM)&findDlg;
    if(doc) doc->brView->SendMessage(WM_FINDCMD, 0, lp);
}

//конец - обработчик сообщения WM_FINDCMD от CMainFrame в классе exBrowserView
void exBrowserView::exFind(WPARAM wPram, LPARAM lParam)
{
    dlgFind *findDlg=(dlgFind*)lParam;
..............
}

//и еще немного кода
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
..................
    findDlg.Create(IDD_FIND, this);
..................
}

//диалог жив во все время существования программы
void CMainFrame::OnEditFind() 
{
    findDlg.ShowWindow(SW_SHOW);
}

//определение указателя на view
void CExemelDoc::SomeInitFunction()
{
..............
    POSITION pos=this->GetFirstViewPosition();
    brView=(exBrowserView*)this->GetNextView(pos);
..............
}


Никогда я еще не встречался с подобного рода глюками, поэтому теряюсь. Ладно при отладке - можно все прочесать, хочешь не хочешь, найдешь ошибку, а тут даже не представляю, что делать. Может я сообщения как то неправильно передаю или неправильно храню указатели на view в документе или еще что?  smile  smile  Подскажите, как быть, что делать. 
PM MAIL   Вверх
Earnest
Дата 15.5.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



У меня только одно предположение: у тебя 6-я студия, а обработчик ты подключаешь так:
ON_MESSAGE(WM_FINDCMD,OnFindCmd). Если это так, то либо перепиши обработчик как положено: LRESULT OnFIndCmd(WPARAM,LPARAM) (у вью тоже), либо используй макрос ON_MESSAGE_VOID...

 


--------------------
...
PM   Вверх
Homer
Дата 15.5.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 29.12.2004

Репутация: нет
Всего: нет



  Спасибо, как всегда выручаете, обработчик переписал - все работает. Черт, в который раз убеждаюсь: чем глупее ошибка, тем труднее ее найти ;) Надо следовать стандартам, а не писать отсебятину. 
PM MAIL   Вверх
Earnest
Дата 16.5.2006, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Переходи на 7ю студию: она такие ошибки не пропускает.
 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.