29.03.2020, 02:47 [+3 UTC]
в нашей команде: 4 307 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.83 (12.03.2020)
JS-v.1.35 | CSS-v.3.37

Общие новости:
28.03.2020, 20:29

Форум:
28.03.2020, 21:05

Последний вопрос:
28.03.2020, 06:04
Всего: 151850

Последний ответ:
28.03.2020, 14:54
Всего: 259886

Последняя рассылка:
29.03.2020, 02:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
25.09.2010, 23:07 »
Иванов Михаил Сергеевич
Большое спасибо! [вопрос № 180035, ответ № 263191]
18.10.2011, 17:05 »
Mechenaya
Большое спасибо за оперативность и правильность! То, что надо) [вопрос № 184256, ответ № 268493]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 908
solowey
Статус: Специалист
Рейтинг: 524
CradleA
Статус: Профессор
Рейтинг: 371

Перейти к консультации №:
 

Консультация онлайн # 145421
Раздел: • С / С++
Автор вопроса: Иванов Роман Александрович
Отправлена: 29.09.2008, 15:25
Поступило ответов: 1

Добрый вечер господа.
Возникли несколько вопросов,помогите пожалуйста найти ответ:
1)Для чего предназначен AppWizard?
2)Что такое Workspace Viewer? Для чего он предназначен? Какие он содержит вкладки?
3)В чем отличие программирования для Windows от программирования для DOS?
4)Что делает функция WinMain?
5)Что делает оконная процедура?
6)Каковы три основные части функции WinMain?
7)Что происходит, если Вы не обрабатывете явно сообщение внутри оконной процедуры?
smile

Состояние: Консультация закрыта

Ответ # 230716 от Владимир (C4tnt)

Здравствуйте, Иванов Роман Александрович!

1) AppWizard - это мастер, создающий файлы программы по шаблону. Вы можете посмотреть на него в действии если попытаетесь создать новый проект. Кроме всего прочего в диалоге создания нового проекта можно обнаружить и шаблон для создания собственного AppWizard-а. Если вы его создадите, его можно будет выбирать из списка при создании нового проекта. Применяется это обычно при создании SDK к коммерческим проектам, часто в состав такого SDK входит AppWizard или хотя бы один проект-пример (всё это про MSVC++)

3) Программирование под Windows отличается в основном отсутствием 21h прерывания (и ему подобных) и наличием API функций. И ещё Windows работает в многозадачном режиме, но это ,в основном, важно для тех, кто пишет программные осциллографы и подобные вещи. Система в любой момент может приостановить выполнение вашего кода и переключиться на что-нибудь другое. Правда, она предпочитает это делать во время выполнения функции Sleep. В каждом длинном, а тем более бесконечном, цикле должен иногда быть вызов Sleep, иначе система всё время выполнения этого цикла будет считать ваше приложение зависшим. Всё остальное - технические различия. И не забывайте освобождать память и хэндлы, в Windows их блокирование чревато последствиями.

4) WinMain - то же,что и main в досе. Во всех win-программах есть dos-раздел кода, который пишет "This program cannot be run in dos mode" или что-то вроде этого. По этой причине пользуйтесь WinMain.

5) Обычно в WinMain располагается такой код (но не только он):

while (GetMessage(&msg, NULL, 0, 0)) //Пока к приложению не пришло сообщение WM_CLOSE
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) //Транслируем комбинации клавиш в нажатия кнопок (F1 в нажатие на кнопку help и т.п.)
{
TranslateMessage(&msg); //Разбор сообщения
DispatchMessage(&msg); //Находит оконную процедуру и вызывает её с параметром, соответствующим сообщению.
}
}
соответственно, в оконной процедуре все сообщения должны быть обработаны или переданы стандартному обработчику. Вызов стандартного обработчика в MFC:

DefWindowProc(hWnd, message, wParam, lParam);

6) Странный вопрос. Как захотите - так и будет.
7) Если сообщение не обработано, но передано в стандартный обработчик - система сама с ним разберётся и обеспечит минимальную функциональность. Если сообщение не обработано совсем - приложение его проигнорирует. Тоесть, если ваше приложение будет игнорировать WM_CLOSE - его можно будет закрыть только с помощью CTRL+ALT+DEL

Предупреждение! Это всё я написал на тот случай, если вы хотите сами разобраться в механизмах работы MFC и Win приложений!


Консультировал: Владимир (C4tnt)
Дата отправки: 29.09.2008, 17:57

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13692 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.83 от 12.03.2020
Версия JS: 1.35 | Версия CSS: 3.37