29.09.2008, 17:57
общий
это ответ
Здравствуйте, Иванов Роман Александрович!
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 приложений!