Vs несколько базовых вопросов.

Тема в разделе "MS Visual C++", создана пользователем Rompas, 26 мар 2008.

  1. Rompas

    Rompas Гость

    Здравствуйте,
    сразу же прошу прощения, если мои вопросы покажутся наивными или пустыми, но волею судьбы мне потребовалось перейти на VS MFC Pro 2005.

    в связи с этим у меня появились вопросы:
    1) что является аналогом Билдера Application.ProcessMessages() в VC MFC?
    типа чтобы интерфейс не замирал. Сам я не нашел. или только потоки решают это?

    2)перенос ресурсов из одного проекта в другой (MFC).
    скажем так, сделал я проект (не MDI),
    наделал там диалогов,
    классы под них,
    теперь же вопрос в том как это всё хозяйство,
    а именно диалоги (ресурсы) перенести в новый проект?
    сам не догоняю, а кто рядом не знают.

    заранее спасибо!
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    По хорошему нужно обрабатывать сообщения самостоятельно, используя PeekMessage, TranslateMessage и DispatchMessage. Пример есть тут: Шаг 52 - PeekMessage(). Но если хочется очень просто, то можно вызвать метод OnIdle у CWinApp
    Если ресурсы одинаковые, то простой заменой файлов все решается. Если ресурсы разные, то я в ручную правлю ресурсные файлы. Про инструменты не знаю :)
     
  3. Rompas

    Rompas Гость

    спасибо за ответ!
    а можно поподробнее про переделку ресурсов?
    и что такое "если ресурсы одинаковые"?

    у меня такая ситуация, есть уже работающий MFC проект, к нему нужно добавить два диалога из другого работающего MFC проекта.
     
  4. Hroft

    Hroft Гость

    Я, когда переносил диалоговые окна, делал так (быть может есть другой вариант).
    1) Открывал новый проет (куда переношу), в этом же проекте открывал файл ресурсов старого проекта (откуда переношу). Простым копированием переносил шаблоны созданных мною диалоговых окон.
    2) Потом в новый проект подключал файлы, реализции диалоговых окон.
    3) Когда пытаешься обработать кнопку в шаблоне диалога, студия предлагает выбрать класс или создать новый. Вот там я выбирал существующий класс (только что подключеный).
    Итого все шаблонны и классы перенеслись и были связаны. Всё заработало.
    P.S. если не будет копироваться на прямую, то можно отдельно создать ресурс (типа переходничёк), и сначала в него скопировать, а потом из него.
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Создаешь в новом проекте пустые диалоги с ID равными ID диалогов в старом проекте, заменяешь код диалога в *.rc файле, в resource.h нового проекта добавляешь ID контролов из старого проекта
     
  6. Rompas

    Rompas Гость

    хорошо, спасибо, я буду пробовать переносить диалоги.

    но так и не понял про замену Application.ProcessMessages() из Билдера в студии.
    можно ли пример?
     
  7. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Откройте исходный код данного метода
     
  8. Rompas

    Rompas Гость

    спасибо, сам сглупил...
    уже в первом ответе было как диспатчить сообщения.

    воткнул у себя такой код:
    [codebox]
    void DoProcessMessages(void){
    while (true)
    {
    MSG m_msgCur;
    while (!::peekMessage(&m_msgCur, NULL, NULL, NULL, PM_NOREMOVE))
    {
    return;
    }
    if (!::GetMessage(&m_msgCur, NULL, NULL, NULL)) break;
    ::TranslateMessage(&m_msgCur);
    ::DispatchMessage(&m_msgCur);
    }
    }
    [/codebox]

    взято отсюда:
    [post="0"]"Шаг 52 - PeekMessage()"[/post]
     
  9. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вот я и не понял, что у Вас вызвало затруднения
     
  10. Rompas

    Rompas Гость

    а вот еще вопрос, про перенос приложения.
    когда я перенес приложение на другой комп, то он мне написал много чего и не смог запустить программу.
    Я так понимаю, что туда еще нужно притащить MFC библиотеки.
    какие файлы должен я таскать с приложением если сделано это в MFC?
     
  11. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    При распространении приложения проще использовать статическую линковку с MFC, чем таскать библиотеки вручную, ИМХО. Способ линковки меняется через свойства проекта
     
  12. Rompas

    Rompas Гость

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

    а что есть подобное в Vs MFC?
    1) Send/PostMessages - сообщения, но мне нужно оперировать с не визуальными классами.
    2) Callback?
     
Загрузка...
Похожие Темы - несколько базовых вопросов
  1. lionk
    Ответов:
    8
    Просмотров:
    155
  2. mrktwn1
    Ответов:
    0
    Просмотров:
    71
  3. M1shop
    Ответов:
    0
    Просмотров:
    372
  4. lionk
    Ответов:
    1
    Просмотров:
    593
  5. JohnLemon
    Ответов:
    6
    Просмотров:
    1.179

Поделиться этой страницей