Jeśli chodzi Ci o rysowanie pixel po pixelu to mam rozwiązanie.
Kod DLLa (C++, w C::B )
#define exportdll extern "C" __declspec(dllexport)
#include <windows.h>
HDC gmHDC;
HWND gmHWND;
exportdll double Init ( double hwnd )
{
int t = (int )hwnd;
HWND gmHWND = (HWND)t;
gmHDC = GetDC( gmHWND );
return 1;
}
exportdll double DrawPixel ( double x, double y, double color )
{
SetPixel( gmHDC, (int)x, (int)y, (COLORREF) color );
return 1;
}
W GMie coś takiego:
// Definiujemy funkcje DLLa
dll = 'winds.dll';
call = dll_stdcall;
ex[0] = external_define( dll, 'Init', call, ty_real, 1, ty_real );
ex[1] = external_define( dll, 'DrawPixel', call, ty_real, 3, ty_real, ty_real, ty_real );
// Musimy wyłączyć rysowanie GMa
set_automatic_draw( false );
screen_redraw();
// Inicjacja
external_call( ex[0], window_handle() );
// Rysujemy czerwony pixel w punkcje (10, 10)
external_call( ex[1], 10, 10, c_red );
Do testowania tu:
http://www.gmclan.org/up152_3_winds.html
Klik, klik.