Вопрос № 40522: Привет, ув. эксперты. Ниже приведена программа. Можете мне помочь, подскзать почему она не запускаектся. С++ знаю, а Visul нет. Можете подсказать хорошие книги или электронные учебники по Visual С++.
Вот что пишет компилятор
-------...
Вопрос № 40.522
Привет, ув. эксперты. Ниже приведена программа. Можете мне помочь, подскзать почему она не запускаектся. С++ знаю, а Visul нет. Можете подсказать хорошие книги или электронные учебники по Visual С++.
И ещё один вопросик . Функция CreateWindow Возвращает хэндл, для работы с окном, то есть такую штуку с помощью которой мы можем общаться с окном. Это понятно. Тип переменно HWND. Вот. А что тогда такое HINSTANCE hInstance,HINSTANCE hPrevInstance. Что это за типы. И зачем нам нужны эти переменные. Пытался вывести эти переменные на экран посмотреть обычным cout'ом - он ругается. Нужно ли вообще где нибудь использовать эти переменные в программе. И почему я не могу изменить их имя , скажем hInstance на просто
Instance. Тоже ругается. Всё спасибо.
Отвечает: DoubleV
Здравствуйте, Александр Михайлович!
HINSTANCE - это описатель приложения. hPrevInstance - в 32-х битных виндах не используется и похожу оставлен только для совместимости. Что касается hInstance - то ето описатель текущего приложения, его использование зависит от конкретоного случая. Скажем при регистрации класса окна или загрузки ресурсов, он понадобится, так же получить его можно с пом. ф-ции GetModuleHandle.
Имена их могут быть любыми и странно что VC не дает тебе их изменить.
И на последок оч. рекомендую разобраться с MSDN, с ним работать гораздо легче.
Ответ отправил: DoubleV (статус: 3-ий класс)
Ответ отправлен: 17.04.2006, 19:17 Оценка за ответ: 1 Комментарий оценки: У меня было несколько вопросов. И самый главный был первый. Я рассчитываю на профессиональную поддрержу, а здесь вы её не показываете. Желательно ещё раз ответить на первый вопрос.
Отвечает: X-MAN
Здравствуйте, Александр Михайлович!
Я так понимаю, среда разработки - MS Visual Studio.
Для того, чтобы всё было хорошо, нужно сделать одну простую вещь:
Меню Project->Properties->Linker->System
Свойство SubSystem установить Windows или Not Set
А у вас стоит SubSystem Console, поэтому линкер ищет эту самую _main.
Ответ отправил: X-MAN (статус: 5-ый класс)
Ответ отправлен: 17.04.2006, 22:15
Отвечает: RedDevil
Здравствуйте, Александр Михайлович!
Он пытается сказать тебе, что у тебя нет функции main. Это происходит потому, что при создании проекта, ты выбрал Console Application, а надо было Windows Appliaction. Поскольку в консоли все начинается с main(), а в винде с winmain().
hPrevInstance - оставлена для совместимости с win16, в win 32 его значение всегда NULL.
hInstance - связывает твой процесс с создаваемыем окном.
hPrecInstance нигде не используется, hInstance используется при создании главного окна. Возможно еще где-то, я предпочитаю использовать WINAPI, когда это нужно, а не обыденный задач, с которыми хорошо справляется MFC.
Да, кстати, Visual C++ - среда разработки, и никакого эффекта на программирование она не оказывает. Зато если использовать библиотеки классов MFC, то ...
Это лучше объяснят книги. А с книгами для VC и MFC проблема, особенно с руссифицированными. Мне очень понравилась книга Мешкова. Там 3 тома, в инете можно 2 скачать в формате djvu. Они по сути являются базовыми, 3-ий более подходит для проффесиналов. Книга вообще рассчитана на Win95 и WINNT, описывается MFC 4.1, (Visual C++ 6.0 используется 4.2) но различный я не заметил.
Вот ссылка:
http://www.sources.ru/books/books/cpp/meshkov.zip
Черный список, те книги, которые по моему мнению написаны криво и тратить на них время не следует:
Янг - Visual C++ полное руководство (да ужь такого полного, что складывается, ощущение, что автор сам не знает о чем пишет).
Фроловы - Прог. MFC под WIN 95, NT - просто не удачные книги.
Все вроде, других я не видел в сети.
--------- Есть 10 типов людей: те, кто знаком с двоичной системой, и те, кто нет.
Ответ отправил: RedDevil (статус: 9-ый класс)
Ответ отправлен: 18.04.2006, 08:46