GDI+

 
Не подключал ли кто-нибудь это через длл?
ехе с gdi я умею делать, а вот длл никак не начать
без mfc вылазят ошибки компиляции, а с mfc dll никак не вызвать из mt4.
 

Разобралси. Проект win32
Создаем файл jpg с градиентной заливкой фона.
Спасибо зарубежным друзьям за код с комментами :)

//#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
 
 
 
// TODO: reference additional headers your program requires here
#include <Objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
 
#pragma comment(lib, "gdiplus.lib")
#define MT4_EXPFUNC __declspec(dllexport)
 
void mb( char* str)
{
    WCHAR wszMessage[5000];
    char* source = str;
    int k=0;
    while ( *source != 0)
        wszMessage[k++] = *(source++);
    wszMessage[k] = 0;
    ::MessageBoxW( NULL, wszMessage, L"Hello! :)", MB_OK);
}





 
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
    UINT  num = 0; // тук ще запишем броя поддържани encoding-и
    UINT  size = 0; // това ще е размера на encoder-а
 
    ImageCodecInfo* pImageCodecInfo = NULL;
 
    GetImageEncodersSize(&num, &size);
    if(size == 0)
        return -1;  // грешка! нямаме encoder
 
    pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
    if(pImageCodecInfo == NULL)
        return -1;  // грешка! няма свободна памет
 
    GetImageEncoders(num, size, pImageCodecInfo);
 
    for(UINT j = 0; j < num; ++j) {
        if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 ) {
            *pClsid = pImageCodecInfo[j].Clsid;
            free(pImageCodecInfo);
            return j;  // успяхме!
        }    
    }
 
    free(pImageCodecInfo);
    return -1;  // грешка! не сме открили поддържка за дадения формат
}
 
MT4_EXPFUNC void __stdcall bbl_save_graphic()
{
    GdiplusStartupInput gdiplusStartupInput; 
    ULONG_PTR gdiplusToken; 
    GdiplusStartup( &gdiplusToken, &gdiplusStartupInput, NULL);
 
    int w = 400;
    int h = 300;
    RectF* pRect;
    pRect = new RectF( REAL( 0), REAL( 0), REAL(w), REAL(h));
 
    Bitmap* pBmp;
    pBmp = new Bitmap( w, h);
 
    Graphics* pGraphics;
    pGraphics = new Graphics( pBmp);
 
    // Создаем кисть фона с градиентом на все окно и полупрозрачностью
    LinearGradientBrush* pBackBrush;
    pBackBrush = new LinearGradientBrush( *pRect, Color(255, 255, 255, 255), Color(255, 150, 150, 150),
        LinearGradientModeVertical);
 
    // Закрашиваем фон
    pGraphics->FillRectangle( pBackBrush, 0, 0, w, h);
 
    CLSID jpgClsid;
    //взимаме CLSID за jpeg формат
    if(GetEncoderClsid( L"image/jpeg", &jpgClsid) != -1) 
    {
      //записваме нашия файл
        pBmp->Save( L"C:\\Work\\Image1.jpg", &jpgClsid, NULL);
    }
 
    delete pRect;
    delete pBmp;
    delete pBackBrush;
    delete pGraphics;
 
    GdiplusShutdown(gdiplusToken);
    mb( "Helo4");
}
 
А комментарии делал на украинском языке?
 
elritmo:
А комментарии делал на украинском языке?

Украинские комментарии не мои. Это чужой кусок. :)
 
Да вы чего, какой украинский 8)
Скорее, болгарский.
 
Во народ упорный за терминал взялся... ;)
Предлагаю сразу прикрутить к MT4 Windows Communication Foundation (WCF), и Windows Presentation Foundation (WPF) с SharePoint Services впридачу :-)
 
chv:
Во народ упорный за терминал взялся... ;)
Предлагаю сразу прикрутить к MT4 Windows Communication Foundation (WCF), и Windows Presentation Foundation (WPF) с SharePoint Services впридачу :-)

Прикручено вместе с .NEТ, упорство не причем, все проверено:) Валерий, что это вы тут ехидничаете, каждый волен заниматься тем, на что он способен:)
 
chv:
Во народ упорный за терминал взялся... ;)
Предлагаю сразу прикрутить к MT4 Windows Communication Foundation (WCF), и Windows Presentation Foundation (WPF) с SharePoint Services впридачу :-)

Это всего лишь, чтобы нарисовать картинку http://babybearreports.narod.ru/342636/342636_rep.htm
 
xnsnet:
chv:
Во народ упорный за терминал взялся... ;)
Предлагаю сразу прикрутить к MT4 Windows Communication Foundation (WCF), и Windows Presentation Foundation (WPF) с SharePoint Services впридачу :-)

Прикручено вместе с .NEТ, упорство не причем, все проверено:) Валерий, что это вы тут ехидничаете, каждый волен заниматься тем, на что он способен:)

Да шучу я так, время позднее было, ночью всё кажется как-то по-другому ;)
На самом деле я избрал другой путь сопряжения .Net и MT4 терминала, но не считаю его единственно верным и уважаю другое мнение и другие идеи.