Создание ресурсов exe из dll

Тема в разделе "WASM.BEGINNERS", создана пользователем ZaikinM, 30 окт 2006.

  1. ZaikinM

    ZaikinM New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    16
    Добрый день. Помогите пожалуйста понтять в чем я ошибаюсь. Суть программы следующая, есть prog.exe и prog.dll в prog.exe находится главная форма на каторой распологается элемент TabCtrl. Cуществует структура данных которая при инициализации форы заполняется указателеями в том числе и на TabCtrl. Память под нее выделяется, далее эта структура передается в prog.dll где находится шаблон IDD_TABDLG, суть dll в том что для каждой новой вкладки она стартует новый поток, который соответсвенно будет заниматьс только ей. Все бы ничего, поток стартует структура передается в заполненом виде, но когда дело доходит до строки
    m_ptrTabContent->m_ptrDlg->Create(MAKEINTRESOURCE(IDD_TABDLG),(CWnd*)m_ptrTabContent->m_ptrParentTab);

    програма вылетает с ошибкой Assertation Faild. Причем когда точно такой же вызов делаю в контексте prog.exe то все в порядке. К слову сказать, данные проинициализированны так
    m_ptrTabContent->m_ptrParentTab = &m_ctrlTab;//контрол на элемент TabCtrl
    m_ptrTabContent->m_ptrDlg = new CTabCtrl;

    Что я делаю не так, в глубине понимаю что недопонимаю чего то касательно адресного пространства возможно а может и нет, вобщем не могу понять где мояя ошибка.
    Буду признателен за коментарии.
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    А так, по определению, нельзя... вообще ошибки быть не должно, но глюки на экране должны возникать(нуть) обязательно.

    Суть в том, что за вывод на экран должен отвечать только один поток, или они(потоки) должны быть жестко засинхронизированы таким образом чтоб к ресурсам ядра обращался одновременно только один поток.

    Притом побочные эффекты могут возникать даже не сразу :dntknw:, писал я как-то давно отладчик ну и собственно выводил в Static - контекст отлаживаемого потока, вроде все и было сделано правильно (в смысле синхронизации), но в один прекрасный день все буквы превратились в квадратики, а контекст потока иногда выводился не в окне а в левом верхнем углу экрана :)

    ЗЫ: в МСДНе написано мол это баг ГДИ Вин9х с 16 бит мьютексами и в нормальных виндах такого происходить не должно. Но мой случай был как раз с ХР...

    ЗЗЫ: Возможно проблема кроется и не в этом, но наверняка это проблемой станет в будущем :)