![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Здравствуйте. Программированием занимаюсь недавно.
Мне необходимо реализовать свою компоненту(control) на основе существующей-Win32. Т.е. дописать своего( !!!на C#!!! ). Подскажите с чего начать, и как это впринципе делается(вообще как создать компоненту, перехват событий,...). Хотелось бы подробнее. Есть в сети какой-нибудь материал по этому поводу? Спасибо. Это сообщение отредактировал(а) AntonS1 - 4.10.2007, 14:21 |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Ну кто-нибудь расскажите куда рыть. Есть стандартная визуальная компонента Win32, необходимо сделать ее динамической. Т.е. дописать своего. Именно переделать, либо на основе чего-либо сделать с 0. Использовать C#.
Вообще идеи есть какие-нибудь? Как это делается. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
||||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
AntonS1,
Например сюда А так в поиск. Из твоих постов совершенно непонятно что ты собираешься делать и что не получается. Добавлено через 1 минуту и 13 секунд ivashkanet, как всегда опередил. ![]() -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
TreeView - он статичен. Необходимо сделать его динамическим, т.е в зависимости от "источника/поставщика данных", который может располагаться на серваке(но то уже потом, вначале можно поставить "заглушки") и постоянно меняться. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Создаём NativeWindow, вызываем AssignHandle с window handle окна компоненты, потом перекрываем WndProc и обрабатываем события по коду. Больше ничего с 100%-нэйтивной компонентой сделать не получится, если речь конечно не об ActiveX.
-------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
![]() thomas, я залажу на форум от случая к случаю. И вообще "подгребаю" только интересные мне темы (напр начал знакомиться с XML и XPath) либо где все молчат (как тут). модератор: не оффтопь, плиз! Это сообщение отредактировал(а) mr.DUDA - 5.10.2007, 17:17 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если это стандартный TreeView, без наворотов, то почему не поюзать одноименный контрол из WinForms ? -------------------- ![]() |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Да, еще возможно добавление катинок к узлам.
Данные берутся с удаленного места, связь может прерываться, поэтому необходим cash. И еще, рост дерева может быть громаден, поэтому потоками нужно обновлять узлы. Блин, конкретнее, где рыть, я не являюсь продвинутым программистом. Ключевые слова. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Ключевое слово: System.Windows.Forms.TreeView Читать в частности MSDN. ![]() ![]() -------------------- ![]() |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Можно по подробнее? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
-------------------- ![]() |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Конкретно?
Мне вообще хотелось бы посмотреть, как это делается. Как можно дописать своих вещей в компоненту. Сталкиваюсь с этим в 1 раз, задание стоит у меня, не знаю что делать. Программированием занимаюсь недано. Да и "Создаём NativeWindow, вызываем AssignHandle с window handle окна компоненты, потом перекрываем WndProc и обрабатываем события по коду. Больше ничего с 100%-нэйтивной компонентой сделать не получится," - немного подлиннее расписать Вы бы не могли? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Проясняю вопрос. Своих кнопок/чекбоксов/фич в компоненту с пом. NativeWindow добавить не получится, да и набор возможностей которые можно реализовать с пом. NativeWindow сводится только к обработке Win32-сообщений (это которые WM_blablabla), если вы о них в курсе. К примеру, можно обработать передвижение мышки, нажатие клавиши, щелчок по контролу и т.п. - всё на очень низком уровне, практически голый WinAPI. В качестве реакции на сообщения WinAPI, можно опять-таки послать своё сообщение (низкоуровневая ф-ция SendMessage) и ничего более. Примеры использования WinAPI в коде C#, вместе с кодами сообщений, можно посмотреть на www.pinvoke.net. Описания всех сообщений есть в MSDN.
Ничего более толкового или простого в использовании NativeWindow не даёт, НО это единственный способ взаимодействия с компонентой (что бы ни подразумевалось под ней - класс MFC, WTL или чистый винапи, или ещё что-то из чужой DLL-ки). Подчёркиваю, единственный. Есть только одно исключение, но вы так и не ответили на вопрос в каком виде компонента, поэтому сложно судить подходит этот случай или нет -- так вот, если компонента представляет собой ActiveX/COM, то добавляется на тулбокс из пункта контекстного меню "Choose Items...", после чего её можно использовать (изменять свойства, вызывать методы). Расширить функциональность можно опять-таки на минимальном уровне - например кинуть поверх компоненты кнопку с тулбокса. -------------------- ![]() |
|||
|
||||
AntonS1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Спасибо. Про WM_blablabla знаю.
Ну а как тогда пишутся компоненты в конкретных фирмах? Их же не устраивает базовая функциональность компоненты, оне переделывают ее полностью, это точно, я слышал. Как? Дизассемблируют? и дописывают? ))))))) Ладно, поразбираюсь пока и задам более конкретный вопрос. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В мире .NET форма - это обычный класс, который точно так же наследуется и расширяется как любой другой. То что относится к коду, то же относится и к дизайну формы (дизайнер просто добавляет дополнительный код в InitializeComponent от формы-предка). -------------------- ![]() |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Никогда не работал с NativeWindow. Начал читать. Не могу понять - почему единственный? А FindWindow() и FindWindowEx()? Что в FindWindow() передается дескриптор окна, что в NativeWindow. mr.DUDA, я понял только, что NativeWindow (в сравнении с FindWindow + SendMessage + SetWindowsHook) - просто удобный враппер и не более. Я прав или есть что-то ![]() ![]() ![]() Ведь не было же когда-то System.Windows.Forms namespace и как-то жили же люди ![]() Это сообщение отредактировал(а) tol05 - 5.10.2007, 21:26 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
-------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |