Wrzucę może ktoś będzie wiedział o co kaman tej windzie:
Trochę kodu:
typedef void(WINAPI* TGenerateWndBitmap32)(UINT32*,int);
TGenerateWndBitmap32 GenerateWndBitmap32;
linijka powodująca wyjątek:
GenerateWndBitmap32=(TGenerateWndBitmap32)GetProcAddress(hBottomBarAlgorithm,"GenerateWndBitmap32");
i zawartość DLL'ki:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
BOOL APIENTRY DllMain(HINSTANCE,DWORD,LPVOID) { return TRUE; }
//default algorithm genarating bitmap32 bottom Bar's
extern "C" void __declspec(dllexport) WINAPI GenerateBottomBarBitmap32(UINT32* DataBitmap,int BarX)
//UINT32* DataBitmap - pointer to bitmap bits, sizeof this table is always BarX*30 - UINT32 DataBitmap[BarX*30];
//int BarX - width bitmap(bottom Bar) in pixels(width single line in bitmap)
{
UINT32 ColorValue=0x80a0a0a0;//ARGB alpha=128 red=160 green=160 blue=160
int NumLine=0;//number of present writing line in bitmap
int progress_line=0;//write progress of single line
for(int i=0;i<BarX*30;i++)//write every pixel
{
DataBitmap[i]=ColorValue;//write pixel actualy ColorValue
progress_line++;//step progress of actual line
if(progress_line==BarX)//if started new line
{
NumLine++;//up single line
progress_line=0;//progress writing line to begin
if(NumLine<18) ColorValue-=0x080808;//if Line is smaller then 18 change color channels valule to lower
}
}
}
extern "C" void __declspec(dllexport) WINAPI GenerateWndBitmap32(UINT32* DataBitmap,int BitmapWidth)
{
for(int i=0;i<BitmapWidth*24;i++)
{
DataBitmap[i]=0xffffffff;
}
}
Wyjątek:
Dodam, że przy imporcie pierwszej funkcji wszystko perfekt, a przy drugiej winda się buntuje, nie kompliuję z żadnymi opcjami optymalizującymi(Dev C++), cóż najwyzej spróbujemy zrobić drugom bibliotekę, ale trochę głupio robić dla każdej funkcji oddzielną DLL :D</image>