我得到了一段 c++ 代码,它看起来像是来自一个 c++ 应用程序,它利用共享内存向其他程序发送消息。
c++ 代码还没有#include 或任何东西。我获得了在我的 C# 应用程序中使用的代码,但我被卡住了。我有点理解代码的作用,但我不太了解将它翻译成 C#,因为我对编码很陌生。
我的问题是,能够在我的项目中使用代码功能的最简单方法是什么?最终结果是将消息发送到另一个程序,这反过来会做一些我不担心的事情。
我曾尝试在我的解决方案中创建不同的 c++ 项目和文件类型,以便稍后使用参考链接它们,但我永远无法正确编译它。
如果您有什么建议或有什么好去处,请告诉我。我总是可以提供更多信息。
代码(我不得不删除评论,对不起):
UINT WM_HELO_ZOOM_XYZ = RegisterWindowMessage("WM_HELO_ZOOM_XYZ");
int HELO_Broadcast_Zoom_Message(
double dbX,
double dbY,
double dbZ,
UINT uMessage=WM_HELO_ZOOM_XYZ) {
#ifndef HELO_
typedef struct {
UINT uMajVersion;
UINT uMinVersion;
DWORD dwReserved;
double dbX;
double dbY;
double dbZ;
} HELOCoordsStruct;
#endif
char *szSharedMemory = "HELO-_Coords";
char szErr[_MAX_PATH*3];
HANDLE hMem = OpenFileMapping(FILE_MAP_WRITE, FALSE, szSharedMemory);
if (NULL == hMem) {
return(0);
}
void *pvHead = MapViewOfFile(hMem, FILE_MAP_WRITE, 0,0,0);
if (NULL == pvHead) {
CloseHandle(hMem);
sprintf(szErr, "Unable to view", szSharedMemory);
AfxMessageBox(szErr, MB_OK|MB_ICONSTOP);
return(0);
}
HELOCoordsStruct *pHELOCoords = (HELOCoordsStruct *)pvHead;
BOOL bVersionOk=FALSE;
if (1 == pHELOCoords->uMajorVersion) {
if (WM_HELO_ZOOM_XYZ==uMessage) {
pHELOCoords->dbX = dbX;
pHELOCoords->dbY = dbY;
pHELOCoords->dbZ = dbZ;
}
bVersionOk=TRUE;
}
else {
sprintf(szErr, "Unrecognized HELO- shared memory version: %d.%d", pHELOCoords->uMajVersion, pHELOCoords->uMinVersion);
AfxMessageBox(szErr, MB_OK);
}
if (NULL != hMem) CloseHandle(hMem);
UnmapViewOfFile(pvHead);
if (bVersionOk) {
PostMessage(HWND_BROADCAST,uMessage,0,0);
return(1);
}
else return(0);
}
编辑:反馈完全不真实。我必须说社区肯定会宠坏这里的人。
谢谢,凯文