Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > MFC - с чего начать?


Автор: saneea 13.7.2005, 21:25
Начинал читать разные книги по MFC, но уже с первой главы не могу ничего понять. С самим языком С++ я знаком, писал консольные приложения, а вот под винду нифига не получается. С чего начать? С чего начинали вы, когда знали многое о консольных приложениях, но не знали ни капли библиотеку MFC? Падскажите плыз...

Автор: Coocky 13.7.2005, 21:27
Начинал с изучения МФС.
Сейчас многие начнут кричать АПИ учить надо, не согласен, хотя и не полностью.
Что конкретней тебе не понятно, давай по одному вопросу..

Автор: saneea 13.7.2005, 21:56
Ну вот как мне реализовать такую вещь: диалоговое окно, с двумя кнопками, одна "next", другая "cancel". Если нажать на "cancel" то окно закрывается, если на "next" - открывается подобное этому окно и т. д.?

Автор: Coocky 13.7.2005, 22:13
Просто
Создаешь проект МФС
Віьираешь как диалог
Создал, зашел в ресурсы , поудалял все кнопки и надписи...
Нарисовал свои две кнопки
Нажимаешь правой кнопкой на них( если работаешь в 2003 студии)
Выбираешь Properites. Меняешь текст(пишешь)
Затем берешь кнопку "Сansel" опять заходишь в ее свойства.
Выьираешь кнопочку Messages появится собщений список для этой кнопки.
Выбираеш BN_CLICKED, справа появится название функции-обработчика сообщений
Выбираешь Add
И сразу переходишь в код функции.
Это означает , что при событии BN_CLICKED( пользователь щелкнул один раз на этой кнопке)
Вызывается функция обработчик, вот в ней и обрабатываешь
А имеено пишешь
Код

OnOk();


Это функция диалогового окна, которая завершает его работу

Автор: saneea 13.7.2005, 22:15
Пасиба, попробую.

Автор: Coocky 13.7.2005, 22:23

Теперь вызов окна....
Добавляешь еще один диалог(для этого заходишь в AddResurces, вверху в меню Project)
появится окошко с реурсами, выбираешь диалог и New
Появится новый диалог, В свойствах укажи child Теперь жмешь правой кнопкой на нем и вібираешь AddClass
Появится окно, где ты дашь имя классу этого диалога, и выбери его производным от СDialog
Жми ок, появится новый класс.
Внеси его описание( его заголовка) в класс своего первого диалога #include
Создай его обьект.К примеру Mydialog2 dial;
Проделай операции с кнопкой Next такие же как и с Cansel
И в обработчие сделай
Код

dial.Create(this);//Создать
dial.ShowWindow(SW_SHOW);//Показать


Автор: saneea 14.7.2005, 10:39
Я тут правда не совсем разобрался, но кое что понял. Я ещё уроки кое-какие почиатал и сделал, что хотел. У меня Microsoft Visual C++ 6.0, может по этому я не могу въехать, но продвижения уже есть, главное, что я начал этим заниматься. Но вопросы ещё будут.

Автор: En_t_end 14.7.2005, 13:52
saneea
В 6-ой студии есть удобный и мощный визард. Научишься пользоваться им - научишься использовать МФЦ на уровне продвинутого новичка.

Автор: Vaulter 14.7.2005, 15:21
MFC умерло.
сорри за оффтоп, просто. ИМХо не стоит изучать то, что умерло

Автор: saneea 15.7.2005, 11:08
MFC умерло. А что тогда учить?

Автор: Alastis 15.7.2005, 11:16
saneea
спроси Perchillsmile
ну ладно, отвечу за него... да и за себя - http://www.trolltech.com/
воспользуйся поиском - поймешь что это и почему MFCумерло

Автор: Plotter 15.7.2005, 13:12
MFC учить надо... ибо

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

б) в любом случае полезно, чтобы понять как все это работает

в) и что вообще такое? человек решил изучить MFC... полезное, ведь, дело... а вы его отговарвать начинаете.

Автор: En_t_end 16.7.2005, 11:04
Надо учить. Потом для изучения того же QT опыт будет достаточным. Хорошо ООП освоишь.

Автор: saneea 1.4.2006, 16:59
Подскажите пжалста какую-нить функцию шоб удаляла папку по заданному имени.

Автор: Dreamer_0x01 1.4.2006, 17:58
Для изучения МФЦ нужно рахобраться с основными макросами, которые в МФЦ иногда могут начинающго программиста ввести в состояние паники. Также, неплохо освоить работу потоков в МФЦ. Так как большинство приложений в МФЦ на начальной стадии клепаются Визардом, а Визард для этого создает классы, производные от классов потоков МФЦ.

Что касается вымерла/не вымерла...Я вот например использую, нравится, для моих задач вполне хватает...

Автор: DeadSoul 1.4.2006, 18:36
Цитата(saneea @ 15.7.2005, 11:08 Найти цитируемый пост)
MFC умерло. А что тогда учить?

C#, Java
Если интересует С++, то STL, boost

Цитата(Alastis @ 15.7.2005, 11:16 Найти цитируемый пост)
ну ладно, отвечу за него... да и за себя - QT

В скольких фирмах используется QT? MFC изспользуется гораздо чаще.

Автор: saneea 1.4.2006, 18:46
Как папку удалить???

Автор: AlexPro 2.4.2006, 00:44
Цитата(saneea @ 1.4.2006, 18:46 Найти цитируемый пост)
Как папку удалить???

BOOL RemoveDirectory(LPCTSTR lpszDir) - Удаляет указанный пустой каталог.

Цитата(Vaulter @ 14.7.2005, 15:21 Найти цитируемый пост)
MFC умерло.

Это тебе лично Билл Гейтс сказал? smile Его уже сколько лет хоронят, никак похоронить не могут. (это я, собственно, про MFC, а не про Гейтса smile). На нем столько софта написано, что похоронят скорей того, кто действительно попытается его похоронить, при всех его недостатках.
В том числе на нем пишутся и современнейшие профессиональные интерфейсные библиотеки (на мой взгляд, интерфейс пользователя - самое слабое место в MFC). Можно посмотреть http://www.prof-uis.com/ и http://www.codejock.com/. Так что,
saneea, не верь тем, кто хоронит MFC. По крайней мере, еще несколько лет он будет жить. Плюс в C# много взято из MFC, так что опыт не пропадет.

Автор: Dreamer_0x01 2.4.2006, 14:57
Цитата

C#, Java


Но ведь для исполнения приложений, написанных на этих языках, нужно устанавливать ФраймВоркс и Виртуальную машину Ява, или я не прав?
Кстати, раз уж разговор пошел в эту ветку - я давно хочу продолжить изучение либо того, либо того языка - как их сравнить?

И по повду QT. Услышав про него в первый раз, пошел по указанной ссылке. Гляжу, а там все по-английски, что меня и вынудило сразу уйти с этого сайта...Русскоязычное есть что-нибудь по этой разработке?

Автор: DeadSoul 2.4.2006, 15:35
Цитата(Dreamer_0x01 @ 2.4.2006, 14:57 Найти цитируемый пост)
Но ведь для исполнения приложений, написанных на этих языках, нужно устанавливать ФраймВоркс и Виртуальную машину Ява, или я не прав?

Да. Для Явы она стоит у большинства. Для С# не могу оценить процент "стоящих". Но многометровый фреймворк - это ограничение только для Shareware и т.д. программа.


Цитата(Dreamer_0x01 @ 2.4.2006, 14:57 Найти цитируемый пост)
Кстати, раз уж разговор пошел в эту ветку - я давно хочу продолжить изучение либо того, либо того языка - как их сравнить?

Я сравниваю по зарплатеsmile


Цитата(Dreamer_0x01 @ 2.4.2006, 14:57 Найти цитируемый пост)
И по повду QT. Услышав про него в первый раз, пошел по указанной ссылке. Гляжу, а там все по-английски, что меня и вынудило сразу уйти с этого сайта...Русскоязычное есть что-нибудь по этой разработке?

По QT есть даже книги на русском. А англичкий учи. Без него в программирование никуда

Автор: saneea 2.4.2006, 16:23
Цитата

BOOL RemoveDirectory(LPCTSTR lpszDir) - Удаляет указанный пустой каталог.

не получается smile
пробовал так:
BOOL RemoveDirectory("D:\rt"); - не удаляет. Что я не так делаю? smile

Автор: Dreamer_0x01 2.4.2006, 17:14
Цитата

Что я не так делаю?

Цитата

"D:\rt"


'\r' - это символ возврата каретки. Учите синтаксис ;)

Автор: S.A.P. 2.4.2006, 17:28
Цитата(Dreamer_0x01 @ 2.4.2006, 14:57 Найти цитируемый пост)
И по повду QT. Услышав про него в первый раз, пошел по указанной ссылке. Гляжу, а там все по-английски, что меня и вынудило сразу уйти с этого сайта...Русскоязычное есть что-нибудь по этой разработке?

тебе http://www.opennet.ru/docs/RUS/qt3_prog/index.html
http://www.qtlib.ru/
http://prog.org.ru/forum/forum_14.html
http://hardclub.donntu.edu.ua/projects/qt/pages/index.htm

Пока информации мало и всё слишком разбросано.

Автор: Dreamer_0x01 2.4.2006, 17:38
S.A.P.,
спасибо за ссылки.

Автор: DeadSoul 2.4.2006, 19:07
Цитата(S.A.P. @ 2.4.2006, 17:28 Найти цитируемый пост)
Пока информации мало и всё слишком разбросано.


S.A.P., насчет мало не соглашусь. Есть как минимум
http://www.ozon.ru/context/detail/id/2222143/
http://www.ozon.ru/context/detail/id/2273393/

По wxWidgets столько информации нет. По этой библиотеки вообще нет информации на русском языке

Автор: S.A.P. 2.4.2006, 19:59
DeadSoul, ну если сравнивать с Delphi, например, то мало smile . А эти книги уже довольно устаревшие (с момента выхода QT4 многое изменилось), обе лежат у меня на столе и одна - копия другой smile

Автор: DeadSoul 2.4.2006, 20:00
Цитата(S.A.P. @ 2.4.2006, 19:59 Найти цитируемый пост)
DeadSoul, ну если сравнивать с Delphi, например, то мало  . А эти книги уже довольно устаревшие (с момента выхода QT4 многое изменилось), обе лежат у меня на столе и одна - копия другой 

Согласен, что мало. Но это хоть что-то.

Автор: AlexPro 3.4.2006, 03:34
Цитата(saneea @ 2.4.2006, 16:23 Найти цитируемый пост)
BOOL RemoveDirectory("D:\rt"); - не удаляет. Что я не так делаю?

В сишных строках символ "\" является специальным. Если твой каталог называется "rt", то должна быть следующая команда: RemoveDirectory("D:\\rt");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)