他のプログラムにメッセージを送信するために共有メモリを利用する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);
}
編集:フィードバックは完全に非現実的です。コミュニティは確かにこのあたりの人々を台無しにしていると言わなければなりません。
ありがとう、ケビン