Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 230
от 22.04.2006, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 308, Экспертов: 33
В номере:Вопросов: 1, Ответов: 3


Вопрос № 40522: Привет, ув. эксперты. Ниже приведена программа. Можете мне помочь, подскзать почему она не запускаектся. С++ знаю, а Visul нет. Можете подсказать хорошие книги или электронные учебники по Visual С++. Вот что пишет компилятор -------...

Вопрос № 40.522
Привет, ув. эксперты. Ниже приведена программа. Можете мне помочь, подскзать почему она не запускаектся. С++ знаю, а Visul нет. Можете подсказать хорошие книги или электронные учебники по Visual С++.

Вот что пишет компилятор

--------------------Configuration: y77 - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/y77.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

y77.exe - 2 error(s), 0 warning(s)

И ещё один вопросик . Функция CreateWindow Возвращает хэндл, для работы с окном, то есть такую штуку с помощью которой мы можем общаться с окном. Это понятно. Тип переменно HWND. Вот. А что тогда такое HINSTANCE hInstance,HINSTANCE hPrevInstance. Что это за типы. И зачем нам нужны эти переменные. Пытался вывести эти переменные на экран посмотреть обычным cout'ом - он ругается. Нужно ли вообще где нибудь использовать эти переменные в программе. И почему я не могу изменить их имя , скажем hInstance на просто Instance. Тоже ругается. Всё спасибо.

Приложение:

Отправлен: 17.04.2006, 12:37
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное