Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Свой контрол в DLL

4.6K
29 декабря 2003 года
&&&&M
21 / / 03.12.2003
Здравствуйте.
Пишу снова, потому что не смог найти нужного материала в интернете.

Проблема такая:
Мне приспичело создать свой "Edit" естественно с некоторыми особенностями. Но я не знаю как его всунуть в DLL. Если в библиотеке создать ф-ю "CreateMyEdit(-//-)" и далее как обычное окно, то, как мне представляется, ф-я вернёт hWnd контрола толко по завершению, когда оконная процедура прервётся. Видимо этот вариант не подходит...
Пожалуйста подскажите как быть.

Покапался ещё немного и пришёл к выводу что я не имею ни малейшего представления о создании собственного контрола в DLL.

P.S. Если это важно, то пишу в MS VS6.

Буду длагодарен за любую информацию.

Заранее спасибо.
1.9K
30 декабря 2003 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by &&&&M
Здравствуйте.
Пишу снова, потому что не смог найти нужного материала в интернете.

Проблема такая:
Мне приспичело создать свой "Edit" естественно с некоторыми особенностями. Но я не знаю как его всунуть в DLL. Если в библиотеке создать ф-ю "CreateMyEdit(-//-)" и далее как обычное окно, то, как мне представляется, ф-я вернёт hWnd контрола толко по завершению, когда оконная процедура прервётся. Видимо этот вариант не подходит...
Пожалуйста подскажите как быть.

Покапался ещё немного и пришёл к выводу что я не имею ни малейшего представления о создании собственного контрола в DLL.

P.S. Если это важно, то пишу в MS VS6.

Буду длагодарен за любую информацию.

Заранее спасибо.



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

3
31 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by &&&&M
Здравствуйте.
Пишу снова, потому что не смог найти нужного материала в интернете.

Проблема такая:
Мне приспичело создать свой "Edit" естественно с некоторыми особенностями. Но я не знаю как его всунуть в DLL. Если в библиотеке создать ф-ю "CreateMyEdit(-//-)" и далее как обычное окно, то, как мне представляется, ф-я вернёт hWnd контрола толко по завершению, когда оконная процедура прервётся. Видимо этот вариант не подходит...
Пожалуйста подскажите как быть.

Покапался ещё немного и пришёл к выводу что я не имею ни малейшего представления о создании собственного контрола в DLL.

P.S. Если это важно, то пишу в MS VS6.

Буду длагодарен за любую информацию.

Заранее спасибо.



Все правильно делаешь, реализуй в своей DLL метод создания окна, который возвращает HWND созданного окна, и ничего не бойся. :)
Оконная процедура для того и нужна, чтоб вызываться и завершаться в течении всей жизни окна. В данном случае она выполниться для сообщения WM_CREATE.
Ты видимо, путаешь оконную процедуру с циклом обработки сообщений...

4.6K
03 января 2004 года
&&&&M
21 / / 03.12.2003
Реализацию cпособа AviDen я нашёл:
http://web.vrn.ru/567637/PB/Technics/Tech010/pbte010.htm

Вариант Green я так и не понял...
Если я создам ф.
HWND CreateMyEdit(-//-)
{
//Регистрируем класс
//Создаём обычное окно
//Запускаем цикл обработки сообщений
return hWnd;
}
Ф. вернёт hWnd только после того как прервётся цикл обработки сообщений.
3
03 января 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by &&&&M
Реализацию cпособа AviDen я нашёл:
http://web.vrn.ru/567637/PB/Technics/Tech010/pbte010.htm

Вариант Green я так и не понял...
Если я создам ф.
HWND CreateMyEdit(-//-)
{
//Регистрируем класс
//Создаём обычное окно
//Запускаем цикл обработки сообщений
return hWnd;
}
Ф. вернёт hWnd только после того как прервётся цикл обработки сообщений.



А зачем запускаешь цикл обработки сообщений?
Для одного потока достаточно одного такого цикла.
Т.о.

HWND CreateMyEdit(-//-)
{
//Регистрируем класс
//Создаём окно
return hWnd;
}

4.6K
03 января 2004 года
&&&&M
21 / / 03.12.2003
Цитата:
Originally posted by Green


А зачем запускаешь цикл обработки сообщений?
Для одного потока достаточно одного такого цикла.
Т.о.

HWND CreateMyEdit(-//-)
{
//Регистрируем класс
//Создаём окно
return hWnd;
}



Получается, что достаточно просто в WNDCLASSEX обьявит Wndproc и после он будет самостоятельно вызываться?

3
05 января 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by &&&&M

Получается, что достаточно просто в WNDCLASSEX обьявит Wndproc и после он будет самостоятельно вызываться?



Конечно!

4.6K
05 января 2004 года
&&&&M
21 / / 03.12.2003
Я сомневался потому, что в простой "оконной" программе делал всё время так:

while(GetMessage(&msg,hwnd,0L,0L) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

Ещё созрел второй вопрос, вернее проблема:
Создаю проэкт, подключаю всё необходимое с DLL(*.lib,*.h), ве нормально компилируется.
Но при редактировании не выпадает подсказки с моей ф-ей. Это конечно не смертельно, но и не удобно.
Собственно вот "*.h", вдруг что не так:

#define EXPORT extern "C" __declspec (dllexport)
EXPORT HWND CreateMyEdit(HWND);
3
05 января 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by &&&&M
Я сомневался потому, что в простой "оконной" программе делал всё время так:

while(GetMessage(&msg,hwnd,0L,0L) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

Ещё созрел второй вопрос, вернее проблема:
Создаю проэкт, подключаю всё необходимое с DLL(*.lib,*.h), ве нормально компилируется.
Но при редактировании не выпадает подсказки с моей ф-ей. Это конечно не смертельно, но и не удобно.
Собственно вот "*.h", вдруг что не так:

#define EXPORT extern "C" __declspec (dllexport)
EXPORT HWND CreateMyEdit(HWND);



Все нормально.
Видимо редактор не пропарсил твой файл.
Чем пользуешься?
В VisualAssist,например, есть спец. кнопочка "Reparse Current File"

4.6K
06 января 2004 года
&&&&M
21 / / 03.12.2003
Пишу в MS VC6
3
06 января 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by &&&&M
Пишу в MS VC6



Ставь себе Visual Assist.
Это плагин для VC, очень удобная штука.
Где взять поищи в инете либо на лотках.

4.6K
06 января 2004 года
&&&&M
21 / / 03.12.2003
Большое спасибо за советы и помощь.
Теперь всё работает!
А Visual Assist я буду искать, видимо действительно полезная вещь.
9.8K
25 апреля 2006 года
Korse
11 / / 20.05.2005
Visual Assist обзор
http://doci.nnm.ru/s_60/28.03.2006/v_pomowvisual_assist_x_1021442/

Сам линк
http://ifolder.ru/10054
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог