Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Структура проекта VC++2008

38K
15 мая 2010 года
Mental_Force
23 / / 12.02.2009
Здравствуйте, сразу же оговорюсь, что я новичек в плане работы с сабжевой IDE (всю сознательную жизнь работал в других средах, а тут жизнь заставила), посему вопрос мой может показаться для опытного пользоваателя как минимум смешным, однако попрошу не плеваться в меня, а если не сложно ответить. Как ни странно, ни в одной из книг что я просмотрел нет даже упоминания об этом.

Итак, мне нужно в проекте (Win Forms) использовать некую функцию объявленную в заголовочном файле, ну к примеру TextOutA из windows.h.
Для этого я подключаю дерективой #include нужный заг. файл в файле ProjectName.cpp.

И о ужас, если я попробую использовать эту ф-ю в обработчике события, скажем, нажатия кнопки (который находится в ProjectName.h) - то компилятор выругается (undeclared identifier) сказавши что функция не объявлена.

Увожаемые товарищи, каким же образом мне подключить хедер и где чтобы я мог использовать функции объявленные там в обработчиках событий визуальных компонентов?
1
15 мая 2010 года
kot_
7.3K / / 20.01.2000
Ну вроде ответ очевиден - и от среды разработки не зависит. Нужно подключать хедер не в ProjectName.cpp, а в ProjectName.h
38K
15 мая 2010 года
Mental_Force
23 / / 12.02.2009
Конечно же! Спасибо. Удалите пожалуйста тему, это позорище)
38K
16 мая 2010 года
Mental_Force
23 / / 12.02.2009
Рано я начал радоваться, вот код:
Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
               

                LPCSTR str1;
                LPCSTR str2;

                str1 = "Form1";
                str2 = "Form1";

                FindWindowA(str1,str2);

             }



А вот ошибка:
 
Код:
1>pzdc.obj : error LNK2028: unresolved token (0A00000F) "extern "C" struct HWND__ * __stdcall FindWindowA(char const *,char const *)" (?FindWindowA@@$$J18YGPAUHWND__@@PBD0@Z) referenced in function "private: void __clrcall pzdc::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@pzdc@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
1>pzdc.obj : error LNK2019: unresolved external symbol "extern "C" struct HWND__ * __stdcall FindWindowA(char const *,char const *)" (?FindWindowA@@$$J18YGPAUHWND__@@PBD0@Z) referenced in function "private: void __clrcall pzdc::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@pzdc@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)



Со многими функциями из бибилиотеки windows.h аналогичные ошибки. Я даже представить немогу, в чем проблема. Код работал в билдере стабильно, и компилировался без ошибок. Подскажите в чем проблема, пожалуйста.
307
16 мая 2010 года
Artem_3A
863 / / 11.04.2008
почитайте про управляемый код, что такое клр и все такое. после чего ваши вопросы отпадут сами собой и стыдно не будет.
38K
16 мая 2010 года
Mental_Force
23 / / 12.02.2009
Спасибо за ответ, однако мое поверхностное представление об управляемом коде и СLR не дает понимания каким образом это знание поможет мне избежать ошибки компиляции в моем случае (в .срр файле этот же код, в этой же среде и в этом же проекте компилируется без ошибок, а там где обработчики событий такая беда), а на углубленное изучение этого вопроса у меня пока нет времени (сроки поджимают), посему прошу более конретных советов :rolleyes:если, конечно есть желание и возможность мне помоч.
5
16 мая 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Mental_Force

Итак, мне нужно в проекте (Win Forms) использовать некую функцию объявленную в заголовочном файле, ну к примеру TextOutA из windows.h.

Зачем в .NET использовать GDI функции, когда там из коробки есть GDI+ в лице класса System.Drawing.Graphics - это первое. А второе - зачем в WinForms приложении использовать MC++ когда есть нормальные языки вроде C#, VB.NET и Boo?


З.Ы. Вообще создается впечатление, что это такая форма программерского мазохизма - использование MC++ для построения оконных приложений.

38K
16 мая 2010 года
Mental_Force
23 / / 12.02.2009
2 hardcase:

Именнто так и есть это глупо, Вы наверное подумали что я этим на жизнь зарабатываю - нет, я студент одного из вузов, и это одно из "учебных" заданий. Изначально задача стояла использовать именно ф-ю TexOut для приложения MFC которая должна была быть написана в VC 6.0 однакого такого старья на сайте майкрософт я ненашел, и скачал 2008 студию. А весь учебный материал что нам дали для шестой студии и для приложений MFC. Поэтому я в полной мере осознаю всю глупость ситуации, однако надо делать именно так. Единственной моей "инициативой" является написание WinForms-приложения, вместо MFC.
307
16 мая 2010 года
Artem_3A
863 / / 11.04.2008
Ваша ситуация: вам сказали взять молоток и забить гвоздь, вы же схватили дрель и спрашиваете каким концом лучше приложиться по гвоздю.

Так вот идите и читайте, дабы не путать дрель и молоток. Помесь управляемого и не управляемого кода всегда чревата кучей не объяснимых ошибок. Во вторых, как бы вы сами не догадываетесь, что винформы и мфц это разные вещи и в задании не зря указано мфц?
5
16 мая 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Mental_Force
2 hardcase:

Именнто так и есть это глупо, Вы наверное подумали что я этим на жизнь зарабатываю - нет, я студент одного из вузов, и это одно из "учебных" заданий. Изначально задача стояла использовать именно ф-ю TexOut для приложе

Юзаете Visual C++ 2008 Express? Если так, то в ней совсем нет шаблонов для MFC приложений. Если вы изучаете MFC (что, право, несколько бесмыссленно в виду ее моральной дряхлости) то используйте MFC шаблоны проекта из 2008 студии. Полноценную VS2008 можно взять с ДримСпарка, где Микрософт предоставляет инструменты разработки студентам и аспирантам совершенно бесплатно.

38K
16 мая 2010 года
Mental_Force
23 / / 12.02.2009
Ладно, послушаем старших... Последный вопрос, что бы Вы посоветовали читать об управляемом коде ?
5
16 мая 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Mental_Force
Ладно, послушаем старших... Последный вопрос, что бы Вы посоветовали читать об управляемом коде ?


Персоналия: Эндрю Троелсен.

307
16 мая 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: Mental_Force
Ладно, послушаем старших... Последный вопрос, что бы Вы посоветовали читать об управляемом коде ?



для начала, я бы посоветовал вам писать на мфц, как есть в задании. я так полагаю замечания о помеси неуправляемого кода и управляемого вы пропустили мимо ушей? читать можно Б. Пахомов С\С++ MS Visual C++ 2005, хотя соглашусь с хардкейзом, что приложения дотнет надо писать на С#. ну и дабы вы опять не сделали кривых выводов: пишите на мфц.

38K
16 мая 2010 года
Mental_Force
23 / / 12.02.2009
Спасибо за помошь, среда у меня полноценная качал бесплатно как студент. Нет, сделал заметку об управляемом коде, стараюсь слушать адекватных людей. Об неактуальности MFC уведомлен, мы её проходим "вскользь" буквально однозанятие, в рамках курса использования Visual Studio. Вуз: Таможенная Академия Украины в г. Днепропетровске, если интересно. Причина кривизны моих выводов в невидении полной картины "реального" процесса ( на проф. уровне) создания приложений, когда, какие парадигмы и языки использовать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог