| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > У меня - VS.net2003, у заказчика - Win95 |
| Автор: Dreamer_0x01 9.9.2005, 00:26 |
| Работаю под VisualStudio.NET 2003, пишу с использованием MFC, использую только самые элементарные компоненты и контролы, то есть ничего стороннего... Заказчик обрадовал сегодня тем, что на некоторых компах у него все еще живут Windows 95. Вот и забеспокоился я - а будет ли работать там моя прога? Или надо ставить "шестерку" и перекомпилировать все в ней? Неохота ради только проверки оного сносить операционку и ставить Win95. Может кто знает наверняка? |
| Автор: Coocky 9.9.2005, 12:40 |
| Dreamer_0x01 Все будет работать отлично если 1.Не использууешь ActiveX элементы 2.Не используешь CRichEditCtrl 2.0 3.Иногда есть проблемы при работе с БД |
| Автор: JoyEx 9.9.2005, 13:54 |
| В stdafx.h измени WINVER, _WIN32_WINDOWS и т.д. IMHO на 0x0400 |
| Автор: Coocky 9.9.2005, 14:01 | ||||
Это для компиляции, если я не ошибаюсь
|
| Автор: Dreamer_0x01 9.9.2005, 19:48 | ||
С этим все нормально, я вообще по-возможности все что можно поотключал и использую только "родной" MFC, который использовал и в шестой студии, с БД пока что проект не имеетничего общего. Использую только: 1.стандртные классы и контролы MFC (CWnd, CDialog, CEdit, CComboBox , CStatic и СListControl). 2.работаю с последовательным портом ,используюдля этого ReadFile,WriteFile, SetCommTimeOuts, и др. "классические" функции. 3. Пользуюсь API-функциями но при соблюдении этого условия надо делать #define WINVER 0x0400 или не обязательно? |
| Автор: Coocky 10.9.2005, 19:53 | ||
Я некогда не слышал и спорить не буду.. Но судя по мануалу, это для компиляции |
| Автор: Dreamer_0x01 11.9.2005, 19:26 |
| Амортизатор Спасибо за плюс, вот уж не ожидал |
| Автор: srd 11.9.2005, 20:03 | ||||
Допустим, у тебя установлена свежая версия Platform SDK, в которой объявлены прототипы API функций и типов для разных версий Windows (95, 98, XP и т.п.), и перед тобой стоит задача написать программу, работающую под управлением Windows 95. Проблема в том, что ты, работая, например, под XP, можешь написать вызов функции API, существующей только в Windows 2000 или XP, и не сразу это обнаружить (ну будет у тебя прога падать под Windows 95, попробуй догадайся, почему). Стандартные заголовочные файлы Windows имеют примерно такую структуру:
Здесь API функция foo() существует для Windows 95 и выше, а функция bar() - для версии Windows XP и выше. Устанавливая нужное значение макроса WINVER, ты выбрасываешь из компиляции прототипы функций, типы и прочее, что не существует на нужной тебе версии Windows. Другими словами, если ты по ошибке или не знанию напишешь вызов функции bar(), то получишь ошибки при компиляции, т.к. прототип этой функции был выброшен препроцессором. Так что макросами этими пользоваться необязательно, но желательно. Кроме WINVER, существуют ещё макросы _WIN32_WINDOWS, _WIN32_WINNT, _WIN32_IE. Смысл этих макросов и их возможные значения подробно описан в MSDN. Надеюсь, написал понятно |
| Автор: Dreamer_0x01 11.9.2005, 23:30 |
| Да, вполне доходчиво ;) |