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

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

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

« : 27-05-2010 08:54 » 

День добрый, хочу создать ActiveX-компоненту на основе ATL. Компонента должна представлять собой окно, в которой будет выводиться граф. информация. Так вот, собственно в OnDraw(ATL_DRAWINFO& di) могу че-то рисовать, но как сделать из компоненты окно? Чтоб можно было к нему присоединить скролл-бары, проч. проч.

Пытаюсь создать окно, чтоб дальше попытаться с ним работать - но дескриптор нулю равен

Код:
CMyMap::CMyMap()
{

         hWnd = ::CreateWindow(_T("AtlAxWin"), _T("wnd"),
         WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, 0, NULL,
         ::GetModuleHandle(NULL), NULL);
}
« Последнее редактирование: 27-05-2010 09:11 от yudjin » Записан
zubr
Гость
« Ответ #1 : 27-05-2010 09:11 » 

У твоей ActiveX-компоненты создай свойство, хранящее хендл окна и используй его при присоединении скролл-баров и т. п.
Записан
yudjin
Помогающий

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

« Ответ #2 : 27-05-2010 09:13 » 

Хорошая идея, спасибо, попробую!

Эмм... Не совсем понятно вот что - скролл бары  я буду создавать в клиенте? и потом их присоединять?
« Последнее редактирование: 27-05-2010 09:35 от yudjin » Записан
yudjin
Помогающий

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

« Ответ #3 : 27-05-2010 10:52 » 

Пытаюсь в C# получить Handle окна - все пашет, через свою  ActiveX-компоненту закрываю его.
Со скролл-барами неясно. Пробую так же передавать их Handle компоненте, но вот АПИшными функциями не получается ими управлять...

---------------
Уже выходит, прошу прощения за флуд
« Последнее редактирование: 27-05-2010 11:23 от yudjin » Записан
yudjin
Помогающий

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

« Ответ #4 : 27-05-2010 12:18 » 

Как в ATL использовать TRACE? пробовал ATL::CTrace - ругается!

Пробовал
#define TRACE OutputDebugString(LPCTSTR lpOutputString);

но у меня уже куча файлов с трассировкой MFC-шной (вначале писал проект на MFC, теперь переношу на ActiveX) - и проект начинает ругаться на LPTSTR... Как можно безболезненно исправить это? Может в дефайне приводить тип?

Так не ругается,
Код:
OutputDebugString(_T("CFeatureClass::~CFeatureClass(void)\n"));

а так ругается:
Код:
#define TRACE OutputDebugString (LPCTSTR lpOutputString)
TRACE(_T("CFeatureClass::~CFeatureClass(void)\n"));
« Последнее редактирование: 27-05-2010 12:29 от yudjin » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #5 : 27-05-2010 14:24 » 

а вот так

#define TRACE OutputDebugString (LPCTSTR lpOutputString) \
TRACE(_T("CFeatureClass::~CFeatureClass(void)\n"));
Записан

yudjin
Помогающий

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

« Ответ #6 : 27-05-2010 14:31 » 

эмммм.... я имел ввиду следующее:
Код:

#define TRACE OutputDebugString (LPCTSTR lpOutputString)
//....
CFeatureClass
{
           //...
           TRACE(_T("CFeatureClass::~CFeatureClass(void)\n"));
           //...
}

Нельзя ли как-то с помощью макрсов приводить типы, чтобы все ТRACE'ы не менять? К тому же оно и так ругается ))
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #7 : 27-05-2010 14:33 » 

Улыбаюсь
#define TRACE(par) OutputDebugString ((LPCTSTR) (par))
Записан

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

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


« Ответ #8 : 27-05-2010 14:34 » 

а вообще, вырубить этот вонючий юникод в настройках проекта и радоваться жизни Отлично
Записан

yudjin
Помогающий

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

« Ответ #9 : 27-05-2010 14:37 » 

Спасибо, заработало!  Ну, насчет выключить Юникод... всюду советуют именно с ним жить.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

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


« Ответ #10 : 27-05-2010 14:39 » 

если программу не нужно отправлять за бугор, то нафиг нужно возиться
Записан

Джон
просто
Администратор

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

« Ответ #11 : 27-05-2010 19:33 » 

А ещё лучше, таки отбросить в сторону первобытные страхи и научиться работать с юникодом. Ага Если конечно не преследуется цель писать софт исключительно под <= WinMe.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"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."
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #12 : 20-06-2010 21:34 » 

не во всех ОС можно запросто отрубить юникод, так что "отрубание" - не выход. Надо учиться жить именно с ним. Кстати, Рихтер чуть ли не в первой главе книги описывает работу с юникодом.
Записан

С уважением Lapulya
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines