На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Непонятная ошибка при клике на статике , после закрытия окна появляется ошибка
    Microsoft Visual C++ 2012

    В главном окне есть статик. Клик обрабатываю так:
    ExpandedWrap disabled
      BOOL Ctest1Dlg::PreTranslateMessage(MSG* pMsg)
      {
          if( pMsg->message==WM_LBUTTONUP ) {
              if( pMsg->hwnd && ::GetDlgCtrlID( pMsg->hwnd ) == ID_STATIC_TEST) {
                  CSoo ss;
                  ss.DoModal();
              }
          }
          return CDialogEx::PreTranslateMessage(pMsg);
      }

    CSoo - окно диалога, созданное студией - ничего не добавлял.
    После его закрытия появляется ошибка:
    Прикреплённая картинка
    Прикреплённая картинка


    Не пойму почему вылазит эта ошибка?
    Сообщение отредактировано: Vladimir_ -
      А что в CSoo?
      Сообщение отредактировано: ter_nk_ -
        Вот тестовый проект
        Прикреплённый файлПрикреплённый файлtest1.zip (132,77 Кбайт, скачиваний: 91)
          А что в твоем wincore.cpp где строка 994?
            а у меня диска F нет! Похоже компилятор его создает во время компиляции...
              Цитата Vladimir_ @
              а у меня диска F нет! Похоже компилятор его создает во время компиляции...


              А может просто где-то какие-то пути прописаны :)
                Нигде ничего не прописано: просто создал проект и на статике ловлю килик - см. исходник
                  Объект не создается здесь.

                  Ctest1Dlg dlg;
                    Не понял, какой объект?
                      dlg у тебя 0. Память для него даже выделяется, но он не инициализирован. Поэтому когда DoModal вызываешь у неинициализированного объекта все и падает.

                      Добавлено
                      Грубо говоря представь если после это строчки memset(&dlg,0,sizeof(dlg));
                        dlg это главное окно со статиком. этот код создала студия.
                        если закомментировать, то все работает:
                        ExpandedWrap disabled
                              BOOL Ctest1Dlg::PreTranslateMessage(MSG* pMsg)
                              {
                                  if( pMsg->message==WM_LBUTTONUP ) {
                                      if( pMsg->hwnd && ::GetDlgCtrlID( pMsg->hwnd ) == ID_STATIC_TEST) {
                                          CSoo ss;
                          //                ss.DoModal();
                                      }
                                  }
                                  return CDialogEx::PreTranslateMessage(pMsg);
                              }
                          Цитата Vladimir_ @
                          а у меня диска F нет! Похоже компилятор его создает во время компиляции...

                          Просто поищи указанный файл на своём компе.
                          И посмотри, что там в этой строке.
                          Скрытый текст

                          А не может быть проблемой то, что указатель на "Parent" равен NULL ?
                          Сообщение отредактировано: ЫукпШ -
                            Кликаю по статику - появляется окно CSoo - закрываю это окно и появляется ошибка.
                            Т.е. либо главное окно чего-то не существующее пытается обработать, либо в окне CSoo чего-то...

                            Прикреплённая картинка
                            Прикреплённая картинка


                            Добавлено
                            Сам себе и ответил! return TRUE забыл!
                            ExpandedWrap disabled
                              BOOL Ctest1Dlg::PreTranslateMessage(MSG* pMsg)
                              {
                                  if( pMsg->message==WM_LBUTTONUP ) {
                                      if( pMsg->hwnd ) {
                                          CSoo ss;
                                          ss.DoModal();
                                          return TRUE; // !!!!!!!!!!!! и все заработало
                                      }
                                  }
                                  return CDialogEx::PreTranslateMessage(pMsg);
                              Цитата ter_nk_ @
                              dlg у тебя 0. Память для него даже выделяется, но он не инициализирован. Поэтому когда DoModal вызываешь у неинициализированного объекта все и падает.

                              Добавлено Вчера, 21:23
                              Грубо говоря представь если после это строчки memset(&dlg,0,sizeof(dlg));


                              Конструктор по умолчанию - не? Это же плюсы.
                                Цитата Vladimir_ @
                                dlg это главное окно со статиком. этот код создала студия.
                                если закомментировать, то все работает:


                                Так у тебя объект не инициализирован, понятно, что ты комментируешь функцию обращения к неинициализированному объекту. Ты можешь создать указать и все нормально, но когда ты попытаешься записать по неинициализированному указателю, то будет тоже - неопределенное поведение. Если ты попробуешь вызвать не DoModal, а какой-то другой метод будет тоже самое.

                                Не знаю, что там и как делает библиотека MFC, вообще ее стараются не использовать, и я не использовал. Может пойти другим путем?

                                Добавлено
                                Цитата VisualProg @
                                Конструктор по умолчанию - не? Это же плюсы.


                                Там конструктор берет хендл родителя вроде, но можно NULL, с конструктором там все нормально вроде. А почему возвращает объект заполненный нулями - ну хрен его знает, это библиотеку копать надо.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0870 ]   [ 23 queries used ]   [ Generated: 28.03.24, 13:29 GMT ]