Вопрос № 145421: Добрый вечер господа. Возникли несколько вопросов,помогите пожалуйста найти ответ: 1)Для чего предназначен AppWizard? 2)Что такое Workspace Viewer? Для чего он предназначен? Какие он содержит вкладки? 3)В чем отличие программирования дл...Вопрос № 145433: <b> Здравствуйте! </b> Будьте добры, помогите в решении задачи по матрицам: <i> Дана матрица размера 5 x 10. Элемент называется локальным минимумом
, если он меньше всех окружающих его элементов (справа/слева и сверху/снизу). Если окружающие э...Вопрос № 145440: <u> Здравствуйте,уважаемые эксперты! </u> Помогите,пожалуйста,реализовать задачу на С++ <b> Дана матрица размера 5 x 10. Найти максимальный элемент среди минимальных элементов каждого столбца.</b> Заранее спасибо!...Вопрос № 145446: Использую V
C++2008. Компилю Win32 проект без юникода, только стандартные библиотеки Винды, рантайм либа встроенная. В Win98/ME отказывается запускаться: "Присоединённое устройство не работает" и "Приложение требует более новой версии В...
Вопрос № 145.421
Добрый вечер господа. Возникли несколько вопросов,помогите пожалуйста найти ответ: 1)Для чего предназначен AppWizard? 2)Что такое Workspace Viewer? Для чего он предназначен? Какие он содержит вкладки? 3)В чем отличие программирования для Windows от программирования для DOS? 4)Что делает функция WinMain? 5)Что делает оконная процедура? 6)Каковы три основные части функции WinMain? 7)Что происходит, если Вы не обрабатывете явно сообщение внутри оконной процедуры?
Отвечает: Владимир (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) (статус: 5-ый класс)
Ответ отправлен: 29.09.2008, 17:57 Оценка за ответ: 5
Вопрос № 145.433
Здравствуйте! Будьте добры, помогите в решении задачи по матрицам: Дана матрица размера 5 x 10. Элемент называется локальным минимумом , если он меньше всех окружающих его элементов (справа/слева и сверху/снизу). Если окружающие элементы отсутствуют, то они считаются бесконечно большими. Заменить все локальные максимумы данной матрицы на единицы. Заранее спасибо!!!
Отправлен: 29.09.2008, 18:07
Вопрос задал: Минин Руслан Васильевич
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sk0rp
Здравствуйте, Минин Руслан Васильевич! Вот простая реализация с копией матрицы.
Приложение:
Ответ отправил: Sk0rp (статус: 5-ый класс)
Ответ отправлен: 29.09.2008, 19:15
Отвечает: realbustard
Здравствуйте, Минин Руслан Васильевич! Код решения в приложении. А вот если arr[i][j] локальный максимум, мы меняем его на 1, при этом arr[i][j+1] - не максимум. Но после arr[i][j]=1 , arr[i][j+1] может стать максимумом.
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 3-ий класс)
Ответ отправлен: 29.09.2008, 20:31
Вопрос № 145.440
Здравствуйте,уважаемые эксперты! Помогите,пожалуйста,реализовать задачу на С++ Дана матрица размера 5 x 10. Найти максимальный элемент среди минимальных элементов каждого столбца. Заранее спасибо!
Отвечает: realbustard
Здравствуйте, Смирнов Сергей Витальевич! Код решения в приложении!!!
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 3-ий класс)
Ответ отправлен: 29.09.2008, 22:01
Вопрос № 145.446
Использую VC++2008. Компилю Win32 проект без юникода, только стандартные библиотеки Винды, рантайм либа встроенная. В Win98/ME отказывается запускаться: "Присоединённое устройство не работает" и "Приложение требует более новой версии Виндоус. Обновите вашу Виндоус". В Win2000/ХР/Виста работает.
Отправлен: 29.09.2008, 20:15
Вопрос задал: effort (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Владимир (C4tnt)
Здравствуйте, effort!
Попробуйте прописать WINVER, он менялся при переходе от MSVC 6 к следующим версиям. В шестой версии WINVER по умолчанию был настроен под Windows 95, а потом это умолчание изменили на Windows XP.
Все WINVER`ы и остальные константы:
Windows Server 2003 _WIN32_WINNT>=0x0502 WINVER>=0x0502
Windows XP _WIN32_WINNT>=0x0501 WINVER>=0x0501
Windows 2000 _WIN32_WINNT>=0x0500 WINVER>=0x0500
Windows NT 4.0 _WIN32_WINNT>=0x0400 WINVER>=0x0400
Windows Me _WIN32_WINDOWS=0x0500 WINVER>=0x0500
Windows 98 _WIN32_WINDOWS>=0x0410 WINVER>=0x0410
Windows 95 _WIN32_WINDOWS>=0x0400 WINVER>=0x0400
Internet Explorer 6.0 _WIN32_IE>=0x0600 Internet Explorer 5.6 _WIN32_IE>=0x0560 Internet Explorer 5.01, 5.5 _WIN32_IE>=0x0501 Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500 Internet Explorer 4.01 _WIN32_IE>=0x0401 Internet Explor
er 4.0 _WIN32_IE>=0x0400 Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300
--------- Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: Владимир (C4tnt) (статус: 5-ый класс)
Ответ отправлен: 30.09.2008, 01:56 Оценка за ответ: 4 Комментарий оценки: Цитата из МСДН: "Beginning with Visual C++ 2008, Visual C++ does not support targeting Windows 95, Windows 98, Windows ME, or Windows NT."
Тем не менее спасибо за ответ, он для меня был информативным. Для моей цели, видимо, нужна 2005-я версия студии.