Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемма с диалоговым окном 
V
    Опции темы
linya
Дата 29.8.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все внутри одного класса,вызываю диалоговое окно

Код

//static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

    case WM_COMMAND:{
            wmId    = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            
            switch (wmId)
            {
            case IDM_ABOUT:
                if(_hWnd==GetActiveWindow() && _hWnd !=0)
                {
                    App *This = (App*) GetWindowLong(_hWnd, 0);
                DialogBox(This->_hIst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                }



при закрытии окна

Код

//static INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

INT_PTR CALLBACK App::About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)true;

    case WM_CLOSE:
        
            EndDialog(hDlg, LOWORD(wParam));
        return (INT_PTR)true;
        break;
    }
    return (INT_PTR)false;
}


выдает ексепшен,  ставит указатель сюда 


Цитата


    static void __CLRCALL_OR_CDECL assign(_Elem& _Left, const _Elem& _Right)
  {    // assign an element
  _Left = _Right;
  }




в релизе ексепшен другой xstring.h
 
Цитата

    _Myt& __CLR_OR_THIS_CALL erase(size_type _Off = 0,
  size_type _Count = npos)
  {    // erase elements [_Off, _Off + _Count)
  if (_Mysize < _Off)
    _String_base::_Xran();    // _Off off end
  if (_Mysize - _Off < _Count)
    _Count = _Mysize - _Off;    // trim _Count
  if (0 < _Count)
    {    // move elements down
    _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Myptr() + _Off + _Count,
    _Mysize - _Off - _Count);
    size_type _Newsize = _Mysize - _Count;
    _Eos(_Newsize);
    }
  return (*this);
  }


Это сообщение отредактировал(а) linya - 29.8.2009, 18:31
PM MAIL   Вверх
andrew_121
Дата 29.8.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



linya, Эксепшны происходят в STL. К каким объектам принадлежат методы assign и erase ?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
linya
Дата 29.8.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я тока wstring заюзывал из stl ...  больше ничего )но как закрытие деалога может действовать на  них? по сути ничего кроме вот этих 2-х функций это не должно касаться... или я ошибаюсь?

Это сообщение отредактировал(а) linya - 29.8.2009, 18:40
PM MAIL   Вверх
andrew_121
Дата 29.8.2009, 18:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Цитата(linya @  29.8.2009,  18:38 Найти цитируемый пост)
я тока wstring заюзывал из stl

Ну вот/, понятно.
Покажи как используешь строку. От инициализации,  и дальше...


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
linya
Дата 29.8.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



там много... в обшем закаментировал все что с ними связано...
диалог работает... сейчас буду постепенно раскамментировать... 

спасибо
PM MAIL   Вверх
linya
Дата 29.8.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



case EN_CHANGE:{
            if((_hWnd==GetActiveWindow()) && (_hWnd !=0))
            {
                App *This = (App*) GetWindowLong(_hWnd, 0);

в обшем после закрытия диалогового окна срабатывает... и в This попадает мусор...  изза этого обращениек wstring ведет к АДУ.... =)

как можно провериить, что это именно это окно которое мне нужно? сравнивать строки в классе из указателя ? xD

Это сообщение отредактировал(а) linya - 29.8.2009, 19:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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