Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C/C++ ActiveX Color Property Page не позволяет выбрать цвет из палитры https://www.cyberforum.ru/ c-cpp/ thread1640751.html
Здравствуйте. Я создал в Visual Studio ActiveX на MFC, добавил туда стандартную страницу свойств для выбора цвета, создал свойство BackColor. Страница свойств появилась, но выбор цвета можно осуществить только если выбираешь его из "Системный цвет". Если выбирать цвет из палитры, то ничего не происходит. Подскажите как это побороть... Если писать значение цвета напрямую в свойство, минуя...
MS Word получить плоский текст с ячейки C/C++
Есть код нечто вроде: Variant Cell= Table.OleFunction("Cell", r, 2); Variant Range= Cell.OlePropertyGet("Range"); Variant Text= Range.OlePropertyGet("Text"); (Использую С++Builder) Но проблема в том что в ячейке таблицы содержится не только текст но и формула, мне нужно изъять только текст или "плоское" представление текста того что в ячейки без непонятных "левых" символов,...
C/C++ Как зарегистрировать в реестре сервер как Word.Application, но со своим CLSIDом? Добрый день! Вообще не в теме OLE-серверов скажу сразу. Подскажите как их правильно писать и регистрировать в системе. Само задание: Надо создать ole-сервер, который будет принимать запрос от приложения на открытие какого-нибудь doc файла через OLE Word (наш ole-сервер зарегистрировать на Word.Application), а сам вызов переделать на открытие через OLE LibreOffice. Просто увидеть как можно... https://www.cyberforum.ru/ c-cpp/ thread1637782.html C/C++ Вызов функции из Dll (анализа IDA) https://www.cyberforum.ru/ c-cpp/ thread1632067.html
Здравствуйте! подскажите пожалуйста как можно получить указатель this класса что бы потом можно было вызывать функции из таблицы виртуальных функций?
C/C++ Создание модемного соединения для виртуального ком порта
Доброго времени суток! Нужна помощь или совет, по созданию модемного соединения к виртуальному порту. Данные между портами передаются отлично, но вот соединение к интернету не могу подключить. На этом всё останавливается. Номера *99***1# и *99#. Когда устанавливаю порт на реальный, установленный системой всё работает на ура. Но а как быть с виртуальным?
C/C++ Необходимо разобраться в коде https://www.cyberforum.ru/ c-cpp/ thread1607517.html
Функция вывода символа fputchar, разработанная в этом примере, позволяет вывести символ в последовательный порт. Функция принимает в качестве параметра одиночный символ. #include <stdio.h> #include <string.h> #include <REG52.H> void fputchar (unsigned char c1) { SBUF = c1; while (!TI); TI = 0; }
C/C++ Перехват функции для определенного потока Здравствуйте! Подскажите пожалуйста, возможно ли поставить перехват (по средствам Detours 2.1) функции для определенного потока ? https://www.cyberforum.ru/ c-cpp/ thread1607180.html DLL hijacking или подмена DLL при открытии .docx C/C++
Набрел как-то на статью на хабре. Решил проверить на своем компе. Создал DLL следующего содержания: #include <windows.h> BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: MessageBoxA(NULL, "Hi from DLL", "Info", MB_OK); break;
C/C++ COM: SAFEARRAY добавление элементов https://www.cyberforum.ru/ c-cpp/ thread1603053.html
День добрый. Перерыл множество ресурсов в поисках ответа на мой вопрос, но всё тщетно. Существует функция, в ней 4 типа данных: int, char, string, float. Все эти данные должны приводиться к одному общему, добавляться в массив SAFEARRAY и отправляться в dll на C#. Вопрос: каким образом добавлять новые значения в массив SAFEARRAY? cell AMX_NATIVE_CALL __callDotnetMethod(AMX* amx, cell*...
C/C++ Разработка программы, для управления моторизованным сканером магнитных карт https://www.cyberforum.ru/ c-cpp/ thread1601401.html
Добрый вечер. Не знаю правильно ли я выбрал ветку но попробую. Мне нужна помощь в написании, наверное программы, для управления моторизованным сканером магнитных карт. Требования не велики так как использование предполагается для одной только цели - проезд через шлагбаум. Вот ссылка на девайс: http://media.digikey.com/pdf/Data%20Sheets/Omron%20PDFs/3S4YR-MVF,MVS.pdf Заранее спасибо. Если...
Как получить WindowsForms (.NET) через ActiveX C/C++
Есть приложение, которое может использовать ActiveX элементы(контролы). Например можно использовать Windows Form 2.0 Функционал элементов Windows Form 2.0 довольно слабоват и хотелось бы использовать элементы которые есть в WindowsForms .NET (например DataGridView) Есть ли уже готовые решения для такой задачи? Возможно ли такое решение впринципе?
C/C++ Где в doc документе хранится его эскиз? https://www.cyberforum.ru/ c-cpp/ thread1592135.html
Нужно получить эскиз doc-документа. Из того, что смог найти в интернете узнал, что если при сохранении документа поставить галочку "Сохранить эскиз", то в документе сохраняется миниатюра. Но вот где именно она хранится найти не см
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
24.01.2016, 00:10  [ТС] 0

Activex перенести на задний план (позиция по оси z) - C/C++ - Ответ 8658185

24.01.2016, 00:10. Показов 1657. Ответов 13
Метки (Все метки)

Ответ

Я вернулся к варианту, при котором беру изображение из под activex и накладываю его поверх того, что рисую в activex`е. Вот код OnDraw который у меня получился.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
    void CStatusContainerCtrl::OnDraw(
    CDC* pdc, const CRect& rcBounds, const CRect&  /*rcInvalid*/ )
{
 
    CRgn    rgn;
    CDC     dcMem;
    CBitmap bmpMem;
    CBitmap* pOldBmp = NULL;
 
    if (!pdc)
        return;
    // TODO: Замените следующий код собственным кодом рисования.
 
    //Если находимся в RunTime режиме
    if (AmbientUserMode())
    {
        CWnd* pWndContainer = GetParent(); //Добираемся до контейнера
        CWnd* pWndPage = pWndContainer->GetParent(); //Добираемся до формы на которой расположен activex
 
        CDC* main = pWndPage->GetDC();
 
        int cx = GetDeviceCaps(main->m_hAttribDC, HORZRES); //Определяем размеры страницы x
        int cy = GetDeviceCaps(main->m_hAttribDC, VERTRES); //Определяем размеры страницы y
 
        CRect rectangle;
        pWndContainer->GetWindowRect(rectangle); //вычисляю координаты контейнера
        pWndPage->ScreenToClient(rectangle); //подгоняю координаты под форму
 
        rgn.CreateRectRgnIndirect(rcBounds);
        pdc->SelectClipRgn(&rgn);
 
        dcMem.CreateCompatibleDC(main);
        bmpMem.CreateCompatibleBitmap(main, cx, cy);
        pOldBmp = (CBitmap*)dcMem.SelectObject(&bmpMem);
 
        (*pic).Render(&dcMem, rectangle, rcBounds);
 
        //dcMem.BitBlt(0, 0, cx, cy, main, 0, 0, SRCCOPY); //тут картинка того, что расположено под activex выводится, но полностью перетирает мою картинку
 
        dcMem.TransparentBlt(0, 0, cx, cy, main, 0, 0, cx, cy, TranslateColor(GetBackColor())); //Тут моя картинка отображается на черном фоне
 
        pdc->BitBlt(0, 0, rcBounds.Width(), rcBounds.Height(), &dcMem, rectangle.TopLeft().x, rectangle.TopLeft().y, SRCCOPY);
        pdc->SelectClipRgn(NULL);
 
        rgn.DeleteObject();
 
        dcMem.SelectObject(pOldBmp);
        bmpMem.DeleteObject();
        dcMem.DeleteDC();
    }
    else
    {
        CBrush bkBrush(TranslateColor(GetBackColor()));
        pdc->FillRect(rcBounds, &bkBrush);
 
        default_pic.Render(pdc, rcBounds, rcBounds);
        bkBrush.DeleteObject();
    }
 
    DoSuperclassPaint(pdc, rcBounds);
}
Наткнулся на проблему. TransparentBlt не работает как надо. По идее он должен делать прозрачным фон и накладывать его на то, что я уже нарисовал в activex, но выводится картинка (которую я нарисовал до наложения) на черном фоне. Как сделать правильно?

Добавлено через 10 минут
Такое впечатление, что TransparentBlt вообще ничего не делает.

Добавлено через 8 часов 47 минут
Сделал я копирование участка формы на свой activex. Проблема с TransparentBlt оказалась в несоответствии размеров того, что копирую к тому куда копирую. Но проблема возникла в другом. Если я копирую область формы на свой activex то он тоже копируется (в картинке отображается и activex и если открыть окно над activex, то его изображение тоже захватывается). Как сделать чтобы в картинку захватывалось изображение только того, что находится под моим activex?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
void CStatusContainerCtrl::OnDraw(
    CDC* pdc, const CRect& rcBounds, const CRect&  /*rcInvalid*/ )
{
 
    CRgn    rgn;
    CDC     dcMem;
    CBitmap bmpMem;
    CBitmap* pOldBmp = NULL;
    CDC* main = NULL;
 
    if (!pdc)
        return;
    // TODO: Замените следующий код собственным кодом рисования.
 
    //Если находимся в RunTime режиме
    if (AmbientUserMode())
    {
        CWnd* pWndContainer = GetParent(); //Добираемся до контейнера
        CWnd* pWndPage = pWndContainer->GetParent(); //Добираемся до формы на которой расположен activex
 
        CRect rectangle;
        pWndContainer->GetWindowRect(rectangle); //вычисляю координаты контейнера
        pWndPage->ScreenToClient(rectangle); //подгоняю координаты под форму
 
        rgn.CreateRectRgnIndirect(rcBounds);
        pdc->SelectClipRgn(&rgn);
 
        main = pWndPage->GetDC();
 
        //Создаем буфер в которой будем рисовать
        dcMem.CreateCompatibleDC(pdc);
        bmpMem.CreateCompatibleBitmap(pdc, rcBounds.Width(), rcBounds.Height());
        pOldBmp = (CBitmap*)dcMem.SelectObject(&bmpMem);
        //Заполняю задний фон в буфере
        CBrush bkBrush(TranslateColor(GetBackColor()));
        dcMem.FillRect(rcBounds, &bkBrush);
        bkBrush.DeleteObject();
        //Рисую картинку в буфере
        (*pic).Render(&dcMem, rcBounds, rcBounds);
        //Копирую часть изображения формы в буфер здесь специально указал координаты левого верхнего угла экрана, 
        //чтобы не копировать изображение в activex само на себя.
        dcMem.TransparentBlt(0, 0, rcBounds.Width(), rcBounds.Height(), main, 0, 0, rcBounds.Width(), rcBounds.Height(), TranslateColor(GetBackColor()));
        //отпускаю форму
        ReleaseDC(main);
        //Копирую буфер в мой activex
        pdc->BitBlt(0, 0, rcBounds.Width(), rcBounds.Height(), &dcMem, 0, 0, SRCCOPY);
 
        pdc->SelectClipRgn(NULL);
        rgn.DeleteObject();
 
        //Удаляю объекты буфера
        dcMem.SelectObject(pOldBmp);
        bmpMem.DeleteObject();
        dcMem.DeleteDC();
    }
    else
    {
        CBrush bkBrush(TranslateColor(GetBackColor()));
        pdc->FillRect(rcBounds, &bkBrush);
 
        default_pic.Render(pdc, rcBounds, rcBounds);
        bkBrush.DeleteObject();
    }
 
    DoSuperclassPaint(pdc, rcBounds);
}


Вернуться к обсуждению:
Activex перенести на задний план (позиция по оси z) C/C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2016, 00:10
Готовые ответы и решения:

Поместить контролл на передний план, на задний план "по уровням"
Доброго времени суток :) В VS при создании есть 2 функции &quot;на передний план &quot; и &quot;на задний...

На задний план
Надо шар(.absolute) за прямоугольниками(.left/.rigth) сделать , я уже все перепробовал , ничего не...

Графика, задний план
Здравствуйте, задали сделать программу-открытку поздравления с новым годом, где падает снег и...

Задний план. (Фон)
Люди, плз помогите мне! На моем TForm стоит TImage. Он стоит на 2 месте, и закрывает (гадость)...

13
24.01.2016, 00:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2016, 00:10
Помогаю со студенческими работами здесь

Слайдер на задний план
Поставил, я слайдер FLEXSLIDER, и он у меня закрывает, всплываешее меню, на сайте, можно ли как то...

Картинка на задний план
Можно как-то при помощи свойств компонента TImage переместить картинку на задний план, чтобы было...

Как поместить на задний план?
Необходимо создать навигационное меню и на заднем плане должен быть фон. Но когда я создаю...

Компонент StringGrid на задний план
Хочу Label поверх компонента StringGrid(таблица) поставить. Упорно проваливается под него. Пробовал...

Картинка на задний план groupbox
Как присвоить картинку groupbox или сделать его полупрозрачным?

Рисунок на задний план в Excel
Здрасти У меня есть рисунок (Овал)прозрачный, необходимо поместить овал на задний план т.е. за...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru