السلام عليكم
حاولت ان اقوم بإستدعاء دالة داخل ملف ما عن طريق
هذا الشيئ
#include <iostream>
#include <windows.h>
using namespace std;
struct Object
{
int x,y;
DWORD color;
};
typedef INT (CALLBACK* ACTION)(HWND,Object*);
#define MAX_SIZE 251
LONG SaveFile(LPSTR name,LPVOID buffer,DWORD size);
LONG LoadFile(LPSTR name,LPVOID buffer,DWORD size);
int CALLBACK func1(HWND hwnd,Object* object)
{
object->x += 1;
object->y += 1;
object->color = 0xffff00ff;
return TRUE;
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT)
{
//SaveFile("h.bin",(LPVOID)func1,MAX_SIZE);
BYTE Action[MAX_SIZE];
LoadFile("h.bin",(LPVOID)Action,MAX_SIZE);
ACTION action = (ACTION)&Action;
Object obj;obj.x = 0;obj.y = 0;
action(NULL,&obj);
return 0;
}
LONG SaveFile(LPSTR name,LPVOID buffer,DWORD size)
{
HANDLE File = CreateFile(name,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(!File)
return FALSE;
DWORD dwSise;
if(!WriteFile(File,buffer,size,&dwSise,0))
{
CloseHandle(File);
return FALSE;
}
CloseHandle(File);
return TRUE;
}
LONG LoadFile(LPSTR name,LPVOID buffer,DWORD size)
{
HANDLE File = CreateFile(name,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
if(!File)
return FALSE;
DWORD dwSise;
if(!ReadFile(File,buffer,size,&dwSise,0))
{
CloseHandle(File);
return FALSE;
}
CloseHandle(File);
return TRUE;
}هذا الكود يشتغل عادي ولكن عندما اضيف مثلا messagebox الى الدالة (func1)
واحذف Savefile (بعد ان حصلت على الملف) تحدث مشكلة :huh:
؟؟؟؟؟.

