BobCat
Интересующийся
Offline
Пол:
|
|
« : 19-04-2009 19:34 » |
|
Всем привет! Ситуация такая: много книжек по С++ прочитал, можно сказать язык понимаю. Кое-что писал в С++Builder'e, там очень удобно визуально на форму тащим нужные компоненты и программируем обработчики событий на обычном С++, со стандартными типами данных. В vs2005 насколько я понял так можно делать только с windows forms, но все эти компоненты уже под .NET, а соответственно классы и типы данных CLR , получается, надо учить эту библиотеку, но это уже не классический С++ А вот собсно, вопросы: 1. Можно ли в vs визуально проектировать интерфейс, но без .NET ? 2. Есть ли в vs аналог диспетчера действий Action Manager из С++Builder'а? 3. Как грамотно делать обработчики различных событий(писать весь код обработчика в .h-файле формы как-то несерьезно, значит нужно создавать свой клас или просто функции в отдельном файле .ccp+.h? и как тогда обращаться из своих функций к компонентам формы?) То есть нет общего понимания вопроса. Также буду благодарен если посоветуете ХОРОШУЮ книгу вроде книги Архангельского, т.к. все что есть по vs относится только к vs6!!! P.S. против .NET ничего не имею, просто немного смущает то что тогда моя прога полностью зависит от того, установлен ли фреймворк на компе или нет. И еще мне кажется что с .NET-ом лучше работать на С#...
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
nikedeforest
|
|
« Ответ #1 : 19-04-2009 20:05 » |
|
Сначала тогда определись, буедшь ли ты писать на чистом API, или на MFC. Исходя из этого будут отвечать тебе на вопросы. Ну а так в принципе: 1. Да можно 2.Не о чем таком не слышал, но я и не знаю что это. Кто работал на С++ Билдере точно скажет 3. Зависит от того, что решишь исполльщовать АПИ или МФЦ. В АПИ бужешь все сообщения окна обрабатывать в функции обратного вызова для этого окна. Соотвественно для каждого окна своя функция. По поводу МФЦ опять же не знаю, я тот ужас знакомства с нею до сих пор с дрожью вспоминаю . По поводу книги опять жде определяйся будешь ли использовать библиотеку MFC или будешь писать только используя API. И еще мне кажется что с .NET-ом лучше работать на С#...
Абсолютно согласен, тот С++ уже не то. P.S. против .NET ничего не имею, просто немного смущает то что тогда моя прога полностью зависит от того, установлен ли фреймворк на компе или нет.
А что мешает поставлять фрэймворк вместе с программой?
|
|
« Последнее редактирование: 19-04-2009 20:09 от nikedeforest »
|
Записан
|
ещё один вопрос ...
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #2 : 19-04-2009 21:19 » |
|
Сначала тогда определись, буедшь ли ты писать на чистом API, или на MFC так как толком не знаю ни того, ни другого, то все зависит от именно визуальной разработки, то есть я хочу сперва кинуть компоненты на форму и получить сгенерированный код, и в него дописать обработчики событий. Но насколько я понял с чистым АPI это не прокатит, нужно самому писать код, создающий окно, функцию обработки сообщений и т.д. После с++ Builder'a мне это показалось слишком долго и нерационально... Но если я не прав и все до сих пор так делают, поправьте меня и буду учить API В общем, нужен совет, что использовать в vs : API, MFC, или .NET чтобы это было быстро и современно. Тогда я стану подробно изучать указанную технологию. В Диспетчере действий мы создаем некоторый код, а после можем вызывать его из обработчиков событий, панели инструментов и меню нашего приложения
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
nikedeforest
|
|
« Ответ #3 : 19-04-2009 21:29 » |
|
На чистом АПИ сейчас никто не пишет, может разве что за редким исключением, ввиде низкоуровневых утилит а-ля Акронис
|
|
« Последнее редактирование: 19-04-2009 21:42 от nikedeforest »
|
Записан
|
ещё один вопрос ...
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #4 : 19-04-2009 22:06 » |
|
сразу не заметил 1. Да можно nikedeforest, как именно это сделать?
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
nikedeforest
|
|
« Ответ #5 : 19-04-2009 22:17 » |
|
Что ты имеешь ввиду под проектированием интерфейса? Бросание контролов на форму приложения? Так можно и на АПИ и на МФЦ. Если имеешь ввиду помощь в обработке сообщений и прочего, то только в мФЦ. Как это сделать я тебе не подскажу, подскажет тот, кто с МФЦ работает, таких много, скоро придут .
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #6 : 19-04-2009 22:32 » |
|
они суровы и приходят только после полуночи при полной луне! да, да, да я хочу кидать кнопочки, метки, комбобоксы мышкой на форму, после выбирать событие onClick, onChange, и писать обработчики этих событий, причем делать это грамотно, профессионально
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
nikedeforest
|
|
« Ответ #7 : 19-04-2009 22:34 » |
|
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 20-04-2009 03:06 » |
|
они суровы и приходят только после полуночи при полной луне! они не выспались просто да, да, да я хочу кидать кнопочки, метки, комбобоксы мышкой на форму, после выбирать событие onClick, onChange, и писать обработчики этих событий, причем делать это грамотно, профессионально ну так в чём проблема то, бери, всё по пунктам и делай Пока что не видю, в чём помогать
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #9 : 20-04-2009 05:07 » |
|
BobCat, такого инструмента "как в Builder'e" нет. Сам столкнулся с подобной проблемой когда учился Самое близкое, что нашел в VS -- это редактор ресурсов. Но логика работы с ним отличается от того, что ты видел в Билдере (после билдера, покажеться корявой и неудобной ) А вообще, если есть время напиши пару прог на "чистом" API. Очень помогает для понимания "как это все живет". А все остальное (и МФЦ, и даже, формы/классы билдера) -- это просто обертки, вокруг этого API. И если хорошо представлять себе как работает АПИ, то потом гораздо легче понимать работу "обертки" Что касается книжки, то самое хорошое описаниие работы АПИ мне встретилось у Герберта Шилда. Он еще для 95-ой там все описывал
|
|
« Последнее редактирование: 20-04-2009 05:11 от Артем »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #10 : 20-04-2009 05:09 » |
|
Артем, редактор ресов в студии отличный, зачем наговариваешь
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #11 : 20-04-2009 05:16 » |
|
Артем, редактор ресов в студии отличный, зачем наговариваешь Я, наверное, не очень корректно выразился Я хотел сказать, что логика работы редактора ресурсов в студии отличная от логики работы всего Builder'a. Что лучше/хуже -- конечно-же зависет от поставленной задачи и привычки программиста. Конечно же все это сугубо ИМХО
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #12 : 20-04-2009 05:20 » |
|
Артем, может не Шилдт, а Чарльз Петзольд? Не перепутал?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #13 : 20-04-2009 05:34 » |
|
nikedeforest, нет, не перепутал. Конечно у Чарльз Петзольд более полное описание и эту книгу можно найти в электронном виде. Но мне в свое время попался именно Шилдт "программирование BORLAND c++" (пусть вас не смущает слово BORLAND ). Там была всего одна глава про пользовательский интерфейс Вин95. Но именно, после прочнения той глава, у меня в голове "что-то щелкнуло" и я стал начинать понимать, что такое WINDOWS P.S. Чтоб не создавать новой темы: Я с .NET почти не знаком. Просто ради любопытства вопрос:.NET -- это тоже "обертки" вокруг старого доброго АПИ ? Или там есть что-то свое, изначально реализованное на классах, которое не дергает этот разрозненный набор функций (гордо именуемый Win API) ? Может тот самый фреймворк?
|
|
« Последнее редактирование: 20-04-2009 07:18 от Артем »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #14 : 20-04-2009 09:32 » |
|
.NET -- это тоже "обертки" вокруг старого доброго АПИ ? В части WinForms - да. Но начиная с .NET 3.5 для построения GUI создана новая библиотека WPF.NET - полный отказ от WinAPI для GUI, и это стратегическая линия развития в Windows - отказ от старого WinAPI с последующей сменой архитектуры GUI в самой ОС. Там целиком свой движок построения изображений, в основе которого лежит DirectX 10. Алексей1153++, так что готовься морально
|
|
« Последнее редактирование: 20-04-2009 09:34 от dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #15 : 20-04-2009 09:50 » |
|
dimka, пущай наваяют сначала винду рабочую и не тормозявую, а там сообразим
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #16 : 20-04-2009 15:24 » |
|
Артем, понятно, не знал, что есть у него такая книга. Да, .НЕТ по сути обертка,но уже далеко не во всем, стоит хотя бы взять такаое понятие .НЕТ, как домен, я так понимаю - никаких аналогов в .НЕТ нету. Ну и ряд механизмов, которые может и основаны на АПИ, но делают код и приложение лучше, например пул потоков. То, что сказал Димка, я не знал, было познавательно. Это совершенно новый подход к программированию ГУИ, правда на него надо перестраиваться, пока не садился, но было интересно посмотреть. А по поводу глючности винды, имхо все от кривизны рук зависит, у кого-то она совсем не глючит
|
|
« Последнее редактирование: 20-04-2009 15:26 от nikedeforest »
|
Записан
|
ещё один вопрос ...
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #17 : 20-04-2009 17:08 » |
|
nikedeforest, это было по поводу глючности висты (а где ещё DX10 ? Ну, глядишь седьмую винду нормально сделают ) А XP не глючит.
|
|
|
Записан
|
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #18 : 20-04-2009 17:25 » |
|
ну так в чём проблема то, бери, всё по пунктам и делай Пока что не видю, в чём помогать Алексей1153++, непонятно, как именно это сделать, алгоритм действий, а то в книжках только классы по отдельности описываются, а метод научного тыка никак не помог. Артем, а какова именно логика работы, в двух словах если не затруднит? а книжку пойду сейчас искать
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #19 : 20-04-2009 17:34 » |
|
BobCat, окошко с деревом ресурсов нашёл ?
|
|
|
Записан
|
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #20 : 20-04-2009 18:07 » |
|
Алексей1153++, Да, нашел!!! вижу папки акселератор, диалог, икон, меню, стринг тэйбл, тулбар, версион добавил в папку диалог русурс IDD_FORMWIEW, но не вижу окошка главной формы. Может дело в типе проекта? ... бла-бла-бла ... непродолжительные эксперименты, и Вуаля! Оказалось все дело было в типе проекта - мне нужен был диалог , а стоял MDI! Плюс я совершенно не знал о редакторе ресурсов! А нужен был всего лишь небольшой толчок!
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #21 : 20-04-2009 18:11 » |
|
Артем, а какова именно логика работы, в двух словах если не затруднит? все еще актуально, хочется знать в чем же различия и где ждать подводных камней?
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #22 : 20-04-2009 18:26 » |
|
BobCat, ну так то да, дважды кликаешь по иконке ресурса диалога - и он открывается для редактирования )
|
|
|
Записан
|
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #23 : 20-04-2009 18:32 » |
|
Алексей1153++, спасибо! это то что мне и надо было!
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
nikedeforest
|
|
« Ответ #24 : 20-04-2009 18:36 » |
|
Да, от Висты я тоже не в восторге. Но думаю это сыроватый продукт, поспешили, да и не обкатали. На семерку все надежды, что-томне подсказывает, что на нее мы не нарадуемся. А может это просто желание такое?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #25 : 20-04-2009 18:37 » |
|
Артем, а какова именно логика работы, в двух словах если не затруднит?
Первое, что бросается в глаза: -- обработка сообщений -- карта сообщений для МФЦ, или (одна) функция с большим switch'ом для "чистого" API -- нет аналога "формы", т.е. нельзя, просто перетаскивать любые элементы в окно. Хотя тут могу ошибаться. Лучше уточнить у Алексей1153++. Он, кстати, может и книжку хорошую посоветует про МФЦ. а книжку пойду сейчас искать
книжка та про работу на чистом АПИ. Там (почти) нет про редактор ресурсов.
|
|
« Последнее редактирование: 20-04-2009 18:41 от Артем »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #26 : 20-04-2009 19:14 » |
|
обработку сообщений можно и в отдельных функциях сделать, если это от кнопок, даже удобнее. А бывает, удобнее большую группу элементов завернуть в один обработчик, это делается не с помощью редактора ресурсов, а при помощи кода класса окна, где диалог используется
палитра стандартных элементов присутствует, ищи )
Книжку не посоветует, ни одной не помню
|
|
|
Записан
|
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #27 : 21-04-2009 05:14 » |
|
Похоже и правда есть какие-то особенности. карту сообщений нашел, есть обработчик onClick для кнопки, которую я на форму перетащил, но вот непонятно как обращаться к свойствам метки или edit'а, которые я тоже просто перетащил на форму, не нашел их объявления и от какого класса они унаследованы, конструкция вида this->MyEdit их не видит. есть только вот это #define EDIT1 1003 но это просто константа. я в замешательстве похоже дальше без хорошей книги не обойтись
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #28 : 21-04-2009 05:20 » |
|
в классе диалога получить доступ к элементу можно двумя способами 1) добавить член-переменную (зажать CTRL и дважды щёлкнуть по контролу в редакторе). Добавится связанная с контролом переменная m_... , с которой можно работать как обячно. Только синхронизацию придётся выполнять между переменной и окном по UpdateData (имхо, не всегда удобно) 2) где нужно, доставать указатель на контрол, только нужно знать класс: например CEdit* pEdit=(CEdit*)GetDlgItem(IDC_...); if(pEdit) { ... }
|
|
|
Записан
|
|
|
|
BobCat
Интересующийся
Offline
Пол:
|
|
« Ответ #29 : 21-04-2009 05:26 » |
|
Ок, спасибо, п.2 понял, а п.1 Только синхронизацию придётся выполнять между переменной и окном по UpdateData это получается уже программно во время исполнения нужно проводить UpdateData ? я видел этот метод в карте сообщений
|
|
|
Записан
|
Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган
|
|
|
|