Cursor-Position mit File-Mapping übergeben
-
Hallo wieder mal.
Ich brauche noch mal Eure Hilfe.
Ich möchte die Cursor-Position die ich aus meiner Dll bekomme, in eine Form übergeben.
In der Dll sende ich die Position so:hsignal= OpenEvent( EVENT_ALL_ACCESS, FALSE, //must be set to false "show_Event"); //name of the event object if (hsignal ==NULL) { OutputDebugString("hsignal ==NULL"); } else { OutputDebugString("hsignal FERTIG"); } SetEvent(hsignal); hMapFile = OpenFileMapping( FILE_MAP_ALL_ACCESS, // read/write access FALSE, // do not inherit the name "map"); // name of mapping object if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE) { OutputDebugString("Could not create file mapping object"); }else { OutputDebugString("CREATE file mapping object"); } pData = (POINT*) MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, sizeof(pData)); if (pData == NULL) { OutputDebugString("Could not map view of file"); }else { OutputDebugString("MAP view of file"); }
und weiter unten:
x_pos=pt.x; //store mouse x-position y_pos=pt.y; //store mouse y-postion PulseEvent(hsignal); SetSystemCursor(my_cursor,32512); //hide cursor //send ccordinates of mouse to mapped file CopyMemory(pData,&pt,sizeof(pData)); //OutputDebugStr("weiter");
Empfangen wird die Position durch meine Form:
void create_mapping(void) { hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read access 0, // max. object size sizeof(this->pData), // buffer size "map"); // name of mapping object if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE) { MessageBox::Show("Could not create file mapping object"); } pData = (Point*) MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, sizeof(pData)); if (pData == NULL) { MessageBox::Show("Could not map view of file"); } }
Leider bekomme ich in meiner Form nur die x-Position richtig angezeigt, die y-Position ist 0 oder Schwachsinn.
Liegt es an sizeof(pData) ?
Wird dadurch nicht genügend Speicher reserviert?
Danke Euch schon mal