Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135

Создание собственных ActiveX элементов. Почему не работает???

05.03.2011, 15:11. Показов 3166. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Захотелось сделать собственный ActiveX элемент. Делал всё как сдесь сказано http://www.cyberguru.ru/progra... age49.html . Всё, кроме 6 и 7 пунктов.
Пользуюсь Microsoft Visual Studio 10.0.
Создал проект, выбрал Win32 Release, нарисовал часы с двумя стрелками.
Вставил такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void CMyClockCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
            
{
    if (!pdc)
        return;
 
    // TODO: Replace the following code with your own drawing code.
    pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    pdc->Ellipse(rcBounds);
 
    char CurrentTime[30];
             struct tm *newtime; 
    char lTime; // Получить текущее время
    time(&lTime);
    newtime=localtime(&lTime); // Преобразовать время в строку
    strcpy(CurrentTime, asctime(newtime)); // Дополнить строку одним символом пробела
    CurrentTime[24]=' '; // Дополнить строку ограничивающи символом
             CurrentTime[25] = 0; // Вывести текущее время
    pdc->ExtTextOut(rcBounds.left,rcBounds.top, ETO_CLIPPED, rcBounds,
             CurrentTime, strlen(CurrentTime),NULL);
}
Ну и компилятор тут и говорит:

MyClockCtrl.cpp
c:\program files\microsoft visual studio 10.0\my_progects\myclock\myclock\myclock ctrl.cpp(148): error C2664: 'time' : cannot convert parameter 1 from 'char *' to 'time_t *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\program files\microsoft visual studio 10.0\my_progects\myclock\myclock\myclock ctrl.cpp(149): error C2664: 'localtime' : cannot convert parameter 1 from 'char *' to 'const time_t *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\program files\microsoft visual studio 10.0\my_progects\myclock\myclock\myclock ctrl.cpp(154): error C2664: 'BOOL CDC::ExtTextOutW(int,int,UINT,LPCRECT,LP CTSTR,UINT,LPINT)' : cannot convert parameter 5 from 'char [30]' to 'LPCTSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Build FAILED.
Какаята проблема с указателями и с переводом типов данных...
Едем дальше.
Как сказано в 5 пункте добавил два события WM_CREATE и WM_TIMER, добавил код как надо, больше нигде не ругался. А те строки на которые ругался компилятор, я закоментировал. И вот ещё проблема- как узнать что активХ действительно работает? Т.к. нажимаю F5 и сообщение выводится " unable to start program 'c:\ProgramFiles.....\MyClock.ocx' ". Залазию в папку - файл создан, размер ~30,7кб. Но я хочу видеть это дело, как там часики будут показываться и время.
Пожалуйста, объясните в чём дело кому ни лень)))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2011, 15:11
Ответы с готовыми решениями:

Тестирование собственных ActiveX элементов
Всем привет! Уважаемые, подскажите чем тестировать созданные элементы ActiveX в 12-й студии. Обломно каждый раз создавать новый проект для...

Создание собственных элементов управления
Как правильно сдавать собственные элементы (для начала изменить внешний вид уже существующих), на базе обычной кнопки?

Создание и использование элементов ActiveX
Задание 1: Изучите и выполните практически процесс создания элемента управления на основе существующего компонента. 1. Создание элемента...

6
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 19
06.03.2011, 09:04
вам компилятор сказал в чем проблема и указал на строки где ошибки, если это не понятно то сделайте копи паст из примера в свой проект.
0
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
06.03.2011, 09:41  [ТС]
Цитата Сообщение от barmaley2005 Посмотреть сообщение
вам компилятор сказал в чем проблема и указал на строки где ошибки, если это не понятно то сделайте копи паст из примера в свой проект.
Дак Я так и делал. В примере VSTUDIO 6ВЕРСИИ вроде, а у меня 10-я версия. И в новой версии перевод типов отличается. вот.
Скажите как в функции ExtTextOut вывести текущее время.
Делаю такую штуку:
Code
1
2
3
4
5
6
7
8
9
 
void CMyClockCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) {
pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
char CurrentTime[30];
struct tm *newtime; long lTime; // Получить текущее время
time(&lTime);
newtime=localtime(&lTime);
pdc->ExtTextOut(rcBounds.left,rcBounds.top, ETO_CLIPPED, rcBounds,
CurrentTime, strlen(CurrentTime),NULL) ; }
И ничего не выходит. Получается абракадабра, не может приобразовать в строковый тип...
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 10:24
Преобразование времни в строковой тип
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <time.h>
 
 
int main()
{
    using namespace std;
 
    char CurrentTime[9]; // В формате ЧЧ:ММ:СС
    struct tm *newtime;
    long lTime;
    time(&lTime);
    newtime=localtime(&lTime);
    sprintf(CurrentTime,"%i:%i:%i", newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
    cout << CurrentTime << endl;
 
    system("PAUSE");
    return 0;
}
1
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
07.03.2011, 16:05  [ТС]
Клёво, а Я всегда писал ф-цию getch() и приходилось подключать ещё файл, чтобы консоль не закрылась. И спасибо за время.

Добавлено через 46 минут
(((( Не работает такое в VS10 ВЕРСИИ. В билдер вставил всё великолепно. А тут блин, хрень какаята. Не знаю что делать...

Добавлено через 59 минут
Наконец! ПОЛУЧИЛОСЬ!
Вот так сделал:
Code
1
2
3
4
5
6
7
8
9
10
using namespace std;
 
        char CurrentTime[9]; 
        struct tm *newtime;
        time_t lTime;
        time(&lTime);
        newtime=localtime(&lTime);
        CString str;
        str.Format(L"%i:%i:%i",newtime->tm_hour, newtime->tm_min, newtime->tm_sec,CurrentTime);
        pdc->TextOutW(100,200,str);
но как говорится "нет худо без добра"... после второго раза билдования, стала вылезать такая ошибка:
LINK : fatal error LNK1104: cannot open file 'C:\Program Files\Microsoft Visual Studio 10.0\MY_PROGECTS\MyClock\Release\MyClock .ocx'
Хотя файл там этот имеется. Приходится перезапускать VS и по новой строить проект. Очень не удобно. Из-за чего такое случилось???
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
07.03.2011, 17:15
Uklunok, в проектах разберись, у bigredcat был рабочий вариант. Что тебе еще надо??? Пошел уже с его кодом в MFC гулять.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
07.03.2011, 18:11
Цитата Сообщение от Uklunok Посмотреть сообщение
Code
1
str.Format(L"%i:%i:%i",newtime->tm_hour, newtime->tm_min, newtime->tm_sec,CurrentTime);
Какой тайный смысл скрыт в добавлении CurrentTime, неинициализированного массива, содержащего всякий мусорО_о. И даже если в данном случае от этого вреда почти никакого нет, то в целом не мудрено, конечно, что у вас вполне рабочий код заводится только через час, другой. Аккуратней код пишите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2011, 18:11
Помогаю со студенческими работами здесь

Создание ActiveX элементов для MasterSCADA
Доброго времени суток. У меня такой вопрос, есть ли у кого ни будь документация по созданию и по следующему внедрению ActiveX в...

Создание собственных котролов
Прошу не ругать за то что не знаю как надо оформлять контролы :). Мне надо оформить класс как котрол. В классе есть несколько стандартных...

Создание собственных клавиш
Добрый вечер, На моей клавиатуре имеются дополнительные клавиши (s1-s6). Все они могут быть забиндены родной прогой под запуск различных...

Создание собственных компонентов
Народ подскажите есть такое задание &quot;Как создавать собственные компоненты в ASP.NET.&quot; всё перерыл ничего толком не нашёл где можно об...

Создание собственных исключений
Vsem privet. Kto mojet reshit sleduushee, Sam ne ponyal. budu blagodaren. source.h: class StackOfIntegers { public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 25.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru