bool sendMessageToGraphics(char* msg)
{
//char ea[] = "SSS";
char* chRequest = msg; // Client -> Server
DWORD cbBytesWritten, cbRequestBytes;
// Send one message to the pipe.
cbRequestBytes = sizeof(TCHAR) * (lstrlen(chRequest) + 1);
if (*msg - '8' == 0)
{
char new_msg[1024] = { 0 };
string answer = "0" + '\0';
copy(answer.begin(), answer.end(), new_msg);
char *request = new_msg;
WriteFile(hPipe, request, cbRequestBytes, &cbRequestBytes, NULL);
}
BOOL bResult = WriteFile( // Write to the pipe.
hPipe, // Handle of the pipe
chRequest, // Message to be written
cbRequestBytes, // Number of bytes to writ
&cbBytesWritten, // Number of bytes written
NULL); // Not overlapped
if (!bResult/*Failed*/ || cbRequestBytes != cbBytesWritten/*Failed*/)
{
_tprintf(_T("WriteFile failed w/err 0x%08lx\n"), GetLastError());
return false;
}
_tprintf(_T("Sends %ld bytes; Message: \"%s\"\n"),
cbBytesWritten, chRequest);
return true;
}
после первого файла записи в рабочем состоянии (в случае «8») другая функция записи не работает правильно, может кто-нибудь понять, почему? функция sendMessageToGraphics нужно отправить перейти на шахматной доскеdo writefile function double
* Как * не работает ли «правильно»? Что происходит, когда вы вызываете функцию во второй раз? Как вы называете функцию 'sendMessageToGraphics'? Почему бы вам не проверить результат первого вызова «WriteFile»? –
во второй раз его не доходит до конца (часть _tprintf), его просто вернется к функции, которая называется sendMessageToGraphics – ronbob
О, а вместо того, чтобы делать, например, '* msg - '8' == 0' не было бы проще (и более« читаемым »), если бы вы это сделали. 'msg [0] == '8''? –