Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: визуальная разработка в visual studio2005  (Прочитано 29569 раз)
0 Пользователей и 8 Гостей смотрят эту тему.
BobCat
Интересующийся

ru
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 19-04-2009 20:05 » 

Сначала тогда определись,  буедшь ли  ты писать на чистом API, или на MFC. Исходя из этого будут отвечать тебе на вопросы.
Ну а так в принципе:
1. Да можно
2.Не о чем таком не слышал, но я и не знаю что это. Кто работал на С++ Билдере точно скажет
3. Зависит от того, что решишь исполльщовать АПИ или МФЦ. В АПИ бужешь все сообщения окна обрабатывать в функции обратного вызова для этого окна. Соотвественно для каждого окна своя функция. По поводу МФЦ опять же не знаю, я тот ужас знакомства с нею до сих пор с дрожью вспоминаю Улыбаюсь.
По поводу книги опять жде определяйся будешь ли использовать библиотеку MFC или будешь писать только используя API.
Цитата
И еще мне кажется что с .NET-ом лучше работать на С#...

Абсолютно согласен, тот С++ уже не то.
Цитата
P.S. против .NET ничего не имею, просто немного смущает то что тогда моя прога полностью зависит от того, установлен ли фреймворк на компе или нет.
А что мешает поставлять фрэймворк вместе с программой?
« Последнее редактирование: 19-04-2009 20:09 от nikedeforest » Записан

ещё один вопрос ...
BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 19-04-2009 21:19 » 

Цитата
Сначала тогда определись,  буедшь ли  ты писать на чистом API, или на MFC
А черт его знает...
так как толком не знаю ни того, ни другого, то все зависит от именно визуальной разработки, то есть я хочу сперва кинуть компоненты на форму и получить сгенерированный код, и в него дописать обработчики событий. Но насколько я понял с чистым АPI это не прокатит, нужно самому писать код, создающий окно, функцию обработки сообщений и т.д. После с++ Builder'a мне это показалось слишком долго и нерационально... Но если я не прав  и  все до сих пор так делают, поправьте меня и буду учить API  Улыбаюсь
В общем, нужен совет, что использовать в vs : API, MFC, или .NET чтобы это было быстро и современно. Тогда я стану подробно изучать указанную технологию.
 В Диспетчере действий мы создаем некоторый код, а после можем вызывать его из обработчиков событий,  панели инструментов и меню нашего приложения
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 19-04-2009 21:29 » 

На чистом АПИ сейчас никто не пишет, может разве что за редким исключением, ввиде низкоуровневых утилит а-ля Акронис
« Последнее редактирование: 19-04-2009 21:42 от nikedeforest » Записан

ещё один вопрос ...
BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 19-04-2009 22:06 » 

сразу не заметил
Цитата
1. Да можно
nikedeforest, как именно это сделать?
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 19-04-2009 22:17 » 

Что ты имеешь ввиду под проектированием интерфейса? Бросание контролов на форму приложения? Так можно и на АПИ и на МФЦ. Если имеешь ввиду помощь в обработке сообщений и прочего, то только в мФЦ. Как это сделать я тебе не подскажу, подскажет тот, кто с МФЦ работает, таких много, скоро придут Улыбаюсь.
Записан

ещё один вопрос ...
BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 19-04-2009 22:32 » 

 Жжешь они суровы и приходят только после полуночи при полной луне!
да, да, да я хочу кидать кнопочки, метки, комбобоксы мышкой на форму, после выбирать событие onClick, onChange, и писать обработчики этих событий, причем делать это грамотно, профессионально Внимание! Говорит и показывает...
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 19-04-2009 22:34 » 

Улыбаюсь
Записан

ещё один вопрос ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 20-04-2009 03:06 » 

Жжешь они суровы и приходят только после полуночи при полной луне!
они не выспались просто Улыбаюсь

да, да, да я хочу кидать кнопочки, метки, комбобоксы мышкой на форму, после выбирать событие onClick, onChange, и писать обработчики этих событий, причем делать это грамотно, профессионально Внимание! Говорит и показывает...
ну так в чём проблема то, бери, всё по пунктам и делай Улыбаюсь Пока что не видю, в чём помогать
Записан

Артем
Опытный

nz
Offline 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 от Артем » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 20-04-2009 05:09 » 

Артем, редактор ресов в студии отличный, зачем наговариваешь Улыбаюсь
Записан

Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #11 : 20-04-2009 05:16 » 

Артем, редактор ресов в студии отличный, зачем наговариваешь Улыбаюсь


Я, наверное, не очень корректно выразился Улыбаюсь

Я хотел сказать, что логика работы редактора ресурсов в студии отличная от логики работы всего Builder'a.

Что лучше/хуже -- конечно-же зависет от поставленной задачи и привычки программиста.

Конечно же все это сугубо ИМХО  Улыбаюсь
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 20-04-2009 05:20 » 

Артем, может не Шилдт, а Чарльз Петзольд? Не перепутал?
Записан

ещё один вопрос ...
Артем
Опытный

nz
Offline 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
Деятель
Команда клуба

ru
Offline 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 » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #15 : 20-04-2009 09:50 » 

dimka, пущай наваяют сначала винду рабочую и не тормозявую, а там сообразим Улыбаюсь
Записан

nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 20-04-2009 15:24 » 

Артем, понятно, не знал, что есть у него такая книга. Да, .НЕТ по сути обертка,но уже далеко не во всем, стоит хотя бы взять такаое понятие .НЕТ, как домен, я так понимаю - никаких аналогов в .НЕТ нету. Ну и ряд механизмов, которые может и основаны на АПИ, но делают код и приложение лучше, например пул потоков.  То, что сказал Димка, я не знал, было познавательно. Это совершенно новый подход к программированию ГУИ, правда на него надо перестраиваться, пока не садился, но было интересно посмотреть.
А по поводу глючности винды, имхо все от кривизны рук зависит, у кого-то она совсем не глючит Ага
« Последнее редактирование: 20-04-2009 15:26 от nikedeforest » Записан

ещё один вопрос ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #17 : 20-04-2009 17:08 » 

nikedeforest, это было по поводу глючности висты (а где ещё DX10 ? Ну, глядишь седьмую винду нормально сделают Улыбаюсь )
А XP не глючит.
Записан

BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 20-04-2009 17:25 » 

Цитата
ну так в чём проблема то, бери, всё по пунктам и делай  Пока что не видю, в чём помогать
Алексей1153++, непонятно, как именно это сделать, алгоритм действий, а то в книжках только классы по отдельности описываются, а метод научного тыка никак не помог. А черт его знает...
Артем, а какова именно логика работы, в двух словах если не затруднит? а книжку пойду сейчас искать
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #19 : 20-04-2009 17:34 » 

BobCat, окошко с деревом ресурсов нашёл ?
Записан

BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 20-04-2009 18:07 » 

Алексей1153++, Да, нашел!!! вижу папки акселератор, диалог, икон, меню, стринг тэйбл, тулбар, версион
добавил в папку диалог русурс IDD_FORMWIEW, но не вижу окошка главной формы. Может дело в типе проекта? ... бла-бла-бла ... непродолжительные эксперименты,   и Вуаля! Оказалось все дело было в типе проекта -  мне нужен был диалог , а стоял MDI! Плюс я совершенно не знал о редакторе ресурсов! А нужен был всего лишь небольшой толчок!
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 20-04-2009 18:11 » new

Цитата
Артем, а какова именно логика работы, в двух словах если не затруднит?
все еще актуально, хочется знать в чем же различия и где ждать подводных камней?
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #22 : 20-04-2009 18:26 » 

BobCat, ну так то да, дважды кликаешь по иконке ресурса диалога - и он открывается для редактирования )
Записан

BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 20-04-2009 18:32 » 

Алексей1153++, спасибо! это то что мне и надо было!
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 20-04-2009 18:36 » 

Да, от Висты я тоже не в восторге. Но думаю это сыроватый продукт, поспешили, да и не обкатали. На семерку все надежды, что-томне подсказывает, что на нее мы не нарадуемся. А может это просто желание такое? Улыбаюсь
Записан

ещё один вопрос ...
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #25 : 20-04-2009 18:37 » 

Артем, а какова именно логика работы, в двух словах если не затруднит?
Первое, что бросается в глаза:
-- обработка сообщений -- карта сообщений для МФЦ, или (одна) функция с большим switch'ом для "чистого" API
-- нет аналога "формы",  т.е. нельзя, просто перетаскивать любые элементы в окно. Хотя тут могу ошибаться. Лучше уточнить у Алексей1153++. Он, кстати, может и книжку хорошую посоветует про МФЦ. Ага



а книжку пойду сейчас искать

книжка та про работу на чистом АПИ. Там (почти) нет про редактор ресурсов.
 
« Последнее редактирование: 20-04-2009 18:41 от Артем » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #26 : 20-04-2009 19:14 » 

обработку сообщений можно и в отдельных функциях сделать, если это от кнопок, даже удобнее. А бывает, удобнее большую группу элементов завернуть в один обработчик, это делается не с помощью редактора ресурсов, а при помощи кода класса окна, где диалог используется

палитра стандартных элементов присутствует, ищи )

Книжку не посоветует, ни одной не помню
Записан

BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 21-04-2009 05:14 » 

Похоже и правда есть какие-то особенности. карту сообщений нашел, есть обработчик onClick для кнопки, которую я на форму перетащил, но вот непонятно как обращаться к свойствам метки или edit'а, которые я тоже просто перетащил на форму, не нашел их объявления и от какого класса они унаследованы, конструкция вида this->MyEdit их не видит. есть только вот это   #define   EDIT1   1003 но это просто  константа. я в замешательстве Здесь была моя ладья... похоже дальше без хорошей книги не обойтись
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #28 : 21-04-2009 05:20 » 

в классе диалога получить доступ к элементу можно двумя способами

1) добавить член-переменную (зажать CTRL и дважды щёлкнуть по контролу в редакторе). Добавится связанная с контролом переменная m_... , с которой можно работать как обячно. Только синхронизацию придётся выполнять между переменной и окном по UpdateData
(имхо, не всегда удобно)

2) где нужно, доставать указатель на контрол, только нужно знать класс:
например
Код:
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_...);
if(pEdit)
{
   ...
}

Записан

BobCat
Интересующийся

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 21-04-2009 05:26 » 

Ок, спасибо, п.2 понял, а п.1
Цитата
Только синхронизацию придётся выполнять между переменной и окном по UpdateData
это получается уже программно во время  исполнения нужно проводить UpdateData ? я видел этот метод в карте сообщений
Записан

Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить.     Брайан Керниган
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines