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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как добавить обработчик диалогу в VC 2003?  (Прочитано 17726 раз)
0 Пользователей и 1 Гость смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 08-06-2004 08:51 » 

Как добавить обработчик диалогу в VC 2003?
Недавно поставил эту студию Совсем запутался
Открываю ресурсы Выбираю диалог Нажимаю на нем правой клавишей но пункт Add event handler ни для одного диалога не доступен
Что делать?
В 6й попроще было...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

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

« Ответ #1 : 08-06-2004 12:09 » 

Самое надёжное - вручную. Я уже с ним замучился. Ну ежели таки хочешь МС обыграть. То попробуй:
1. Если класс связанный с ресурсом уже есть то открой его в редакторе и поставь курсор в области уже готовых процедур. После этого в окошке Properties включай Events (жёлтая молния) и ищи ID в списке. Кликаешь на + слева от ID. Обработчик вставляешь в правом столбце кликая на пустое поле. Там есть скрытый комбобокс.
Удаляешь также, кликаешь на функцию - комбобокс - удалить.

2. Если класса  нет, то попробуй двойной щелчок по ресурсу диалога в редакторе ресурсов. Потом повтори 1.

Кстати  двойной щелчёк по например кнопке вставит сразу функцию обработки. Ну в общем поэкспериментируй.
У меня частенько исчезает тулбар в Properties и тогда свойства вообще не показываются. Помогает только перезапуск студии.

В 6ой было всё гораздо проще и надёжнее - эт точно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 09-06-2004 01:44 » 

Спасибо!
Блин как все сложно) Эх щас попробую...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

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

« Ответ #3 : 09-06-2004 07:15 » 

USBLexus,  Удачи! И сообщай о результатах. Вместе мы сила! Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #4 : 09-06-2004 08:11 » 

Цитата: Джон
USBLexus,  Удачи! И сообщай о результатах. Вместе мы сила! Ага


Это все прокатывает для контролов А для самого диалога ничего не получилось( например WM_PAINT или INIT_DIALOG обработать пока удается только вручную(
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

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

« Ответ #5 : 09-06-2004 09:17 » 

USBLexus, Тогда мне повезло, у меня это только иногда не работает.  А какая система у тебя? У меня w2k sp4 ie6sp1 .NET FrameWork 1.1 SDK Feb. 2003

Когда много надо вставить, я делаю так - запускаю шестёрку делаю в ней, а потом перекидываю код в .NET. Быстрее получается.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #6 : 09-06-2004 09:40 » 

Цитата: Джон
USBLexus, Тогда мне повезло, у меня это только иногда не работает.  А какая система у тебя? У меня w2k sp4 ie6sp1 .NET FrameWork 1.1 SDK Feb. 2003

Когда много надо вставить, я делаю так - запускаю шестёрку делаю в ней, а потом перекидываю код в .NET. Быстрее получается.


У меня XP 1й sp
А с 6й студией это мысль) 2 студии нормально уживаются?
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
kisilevski
Постоялец

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

WWW
« Ответ #7 : 16-06-2004 09:46 » 

Две студии уживаются нормально, только 6я, естественно, плошо дружит с тем, что создано в 7й. А так, было, стояли у меня 2 студии в переходный период.
Записан

Ложки нет. See MSDN for details.
kisilevski
Постоялец

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

WWW
« Ответ #8 : 16-06-2004 10:03 » 

Совсем необязательно добавлять обработчики событий вручную.
Для этого же инструмент существует.

В редакторе ресурсов выделяем нужный контрол диалога, вызываем окошко свойств, в верхней части окошка свойств есть несколько кнопочек. Вторая справа кнопочка называется  - Control Events. При нажатии на кнопочку окошко свойств заполняется всевозможнвми Eventами, которые могут относиться к выделенному контролу. Находм в списке интересующее событие, кликаем его, справа появляется треугольничек вываливающегося списка. В списке только одно из двух - либо Add Event Handler, либо Delete <EventHandlerName>.

То же самое окошечко свойств можно применить к любому классу. Ставим в source editorе курсор на название любой функции класса диалога или контрола, не важно, в окошке свойств появляется три кнопки: Messages, Events и Overrides. А руками, ну можно, конечно, но это же такие трудозатраты...
Записан

Ложки нет. See MSDN for details.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #9 : 17-06-2004 03:27 » 

Цитата: kisilevski
Совсем необязательно добавлять обработчики событий вручную.
Для этого же инструмент существует.

В редакторе ресурсов выделяем нужный контрол диалога, вызываем окошко свойств, в верхней части окошка свойств есть несколько кнопочек. Вторая справа кнопочка называется  - Control Events. При нажатии на кнопочку окошко свойств заполняется всевозможнвми Eventами, которые могут относиться к выделенному контролу. Находм в списке интересующее событие, кликаем его, справа появляется треугольничек вываливающегося списка. В списке только одно из двух - либо Add Event Handler, либо Delete <EventHandlerName>.

То же самое окошечко свойств можно применить к любому классу. Ставим в source editorе курсор на название любой функции класса диалога или контрола, не важно, в окошке свойств появляется три кнопки: Messages, Events и Overrides. А руками, ну можно, конечно, но это же такие трудозатраты...


Дело вто что для непосредственно окна диалога в VS2003 а не контролов расположеных на нем не появляется вообще никаких сообщений которые можно было бы обработать например WM_PAINT WM_DESTROY и  т д
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
kisilevski
Постоялец

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

WWW
« Ответ #10 : 17-06-2004 05:11 » 

Чтобы появился список сообщений для диалога, нужно вызывать окошко свойств не из редактора ресурсов, а из редактора текста программы, когда редактируется класс диалогового окна.
Записан

Ложки нет. See MSDN for details.
Джон
просто
Администратор

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

« Ответ #11 : 17-06-2004 08:37 » 

kisilevski,  Я про это уже написал, ты повторяешь. Проблема заключается в том, что они не всегда появляются сразу. Это студийный баг. Мне почти всегда помогает перезапуск студии.

Судя по всему ты тоже много с .NET играешься, вот такой вопрост если я тулбарную кнопку в ресурсах добавлю, то потом event не нахожу в properties. Как бороться?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Pu
Большой босс

ru
Offline Offline
78


« Ответ #12 : 17-06-2004 09:18 » 

Джон,  А я не борюсь   Отлично  , а просто добавляю в карту сообщений
   COMMAND_ID_HANDLER(ID_ANY, OnAny)
и пишу обработчик  
   LRESULT OnAny(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
  Ага.
Поначалу тоже парился с этой темой, а сейчас уже привык все ручками прописывать.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
kisilevski
Постоялец

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

WWW
« Ответ #13 : 17-06-2004 10:15 » 

Джон, я после создания своей кнопки в тулбаре нажимаю <Save All>, затем открываю нужный класс SourceEditorом, при этом в окне свойств появляется кнопка Events, далее понятно. То есть добавление события новая студия предлагает мыслить не от ресурса-источника события, а от класса-получателя (обработчика). Может быть и необязательно нажимать <Save All>, просто привычка уже.

А перезапуск студии ради оживления функциональности редактора свойств ресурсов мне как-то не приходится делать. Может, другая мутация студии? У меня 7.1 на XP SP1 Eng.
Записан

Ложки нет. See MSDN for details.
Джон
просто
Администратор

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

« Ответ #14 : 17-06-2004 10:44 » 

kisilevski,  Это всё понятно, пробую всяко, но event в таблице появляется только для пункта меню, а вот чистая тулбарная кнопка не хочет. В шестёрке это прокатывало.

Pu,  Когда кнопок немного, я тоже ручками делаю. А когда штук 20, то запаривает, а с копи-пэйст - потом ошибки искать долго.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

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

« Ответ #15 : 17-06-2004 11:03 » 

kisilevski,  Делаю: в редакторе ресурсов добавляю тулбарную кнопку ID_BUTTON32823. Save All. В редакторе открываю CMainFrame класс. В "Properties" в комбобоксе стоит "CMainFrame   VCCodeClass".
Кликаю на Events - первым стоит ID_APP_ABOUT, остальные тоже на месте, а вот ID_BUTTON32823 нету. Что неправильно? У меня вообще к этой студии чувства мягко говоря прохладные, может она это чувствует и так относится? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Anonymous
Гость
« Ответ #16 : 17-06-2004 11:50 » 

Джон, я попробовал проследовать твоему алгоритму. Действительно,  не добавила студия новый ИД (я-то обычно присваиваю кнопкам менюшные ИДы, поскольку кнопок у меня меньше, чем пунктов меню, поэтому и не видел состава проблемы). Так что приношу извинения за некоторую непреднамеренную дезинформацию. Поиск в документации тоже ничего не дал на эту тему. Значит, это либо косяк студии, либо у них концепция такая, что типа "нет конпкам. не имеющим соответствующих пунктов в меню..." Чем Билл не шутит?

Тут ещё одна пакость вылезла - редактор ресурсов портит формат контрола Date Time Picker. Если поставить Time, потом закрыть, потом открыть, то формат станет Short Date. Приходится в OnInitDialog ставить формат контролу.

А так, на студии вроде можно работать, хотя и не принимает она форму сосуда, свой характер являет невсегда в подходящих для этого местах. На шестёрку совсем не тянет возвращаться.
Записан
kisilevski
Постоялец

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

WWW
« Ответ #17 : 17-06-2004 11:52 » 

Гостем меня обозвала. Долго окно держал открытым - коннект выветрился  Отлично
Записан

Ложки нет. See MSDN for details.
Джон
просто
Администратор

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

« Ответ #18 : 17-06-2004 13:27 » new

Ну... не знаю. Меня не то, что не тянет - нельзя. Партия сказала: "надо в .NET", комсомол ответил: "есть". Ага
Некоторые вещи в новой конечно хороши, но было бы лучше если бы они не подстраивались по VB программеров, а оставили С++ си плюсплюсникам. А то приходится "переучиваться". А тут ещё whidbey на горизонте светит. Что там ещё нам наготовят?

Ну да ладно, по существу. У меня ещё одна проблемка (или не у меня?). Когда вставляешь ф-ю обработки сообытия, то иногда сразу происходит скачёк в тело функции (тогда инфа в prperties меняется, и надо начинать сначала - искать нужный ID и тд), а иногда фокус остаётся в prperties и можно подряд вставлять несколько функций. Особенно это касается обработчиков тулбарных кнопок, когда одному ивенту вешаешь и OnCommand и OnUpdateCommand.
Какой либо логической зависимости не нашёл. :twisted:
Может кто сталкивался?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines