Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Помогите создать конструкцию как экспортируемую функцию shared DLL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ использование ActiveX http://www.cyberforum.ru/cpp-beginners/thread474745.html
Киньте плз в меня эхотажным кодом, который будет аналогичен jscript-овскому: var progid='Sample.MyObj'; var obj=new ActiveXObject(progid); var param='test1'; var text=obj.getValue(param);
C++ Как реализован полиморфизм? Если я не ошибаюсь, то, благодаря ему, если member-функция fun в базовом классе CBase объявлена как virtual, и перегружена в производном CDerived, то при вызове pBaseObj->fun то, какая функция... http://www.cyberforum.ru/cpp-beginners/thread474720.html
Как добавить CRecordVIew в проект VC7.0 C++
Подскажите пожалуйста как добавить CRecordVIew в проект VC7.0 В 6 версии готовился шаблон диалога далее вызывался CLassWizard с помощью которго добавлялся CRecordView и связывался с CRecordset. ...
подскажите с выбором языка C++
В данный момент изучаю ассемблер, потом хочу выучить выссокий язык для создания игр типа star craft'a или cs помогите выбрать язык который лучше всего справляется с этим и проще всего делать такие...
C++ Проблема с выводом bitmap-ов на принтер... http://www.cyberforum.ru/cpp-beginners/thread474658.html
Вобчем, дело такое. берем любой экранный DC например форму. берем любой битмап - например из ресурсов берем самый стандартный BitBlt - все пучком, через не раз описанный memDC все работает. ...
C++ Как программно сжать директорию или несколько файлов? нужно программно сжать директорию или несколько файлов то что я нашел в сети сжимает только один файл подскажите если кто знает подробнее

Показать сообщение отдельно
Vita
Сообщений: n/a
23.03.2009, 17:54
Это проще сделать в VB непосредственно, чем тащить это в VC.

А если конкретно по коду VC вызвать pDoc.Print pArgs, то
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
extern 'C' __declspec(dllexport) void __stdcall toPrint(IDispatch* *ppDoc, SAFEARRAY* *pArgs)
{
    if( *ppDoc == NULL || *pArgs == NULL )
        return E_INVALIDARG;
 
    IDispatch* pDoc = *ppDoc;
 
    // Определяем номер метода Print
    DISPID dispid;
    LPOLESTR lpszEv = OLESTR('Print');
    HRESULT hr = pDoc->GetIDsOfNames(IID_NULL, &lpszEv, 1, LOCALE_USER_DEFAULT, &dispid);
    if( SUCCEEDED(hr) )
    {
        VARIANT vResult;
        VariantInit(&vResult);
        VARIANT vParam;
        // Определяем тип массива
        hr = ::SafeArrayGetVartype(*pArgs, &vParam.vt);
        if( SUCCEEDED(hr) )
        {
            vParam.vt |= VT_BYREF|VT_ARRAY;
            vParam.pparray = pArgs;
            DISPPARAMS dispparams = { &vParam, 1, 0, 0};
            // Вызываем метод Print, передавая параметром переданный массив
            hr = pDoc->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, &vResult, NULL, NULL);
            VariantClear(&vResult);
        }
    }
    return hr;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru