如何在win32 api中将鼠标坐标写入文本文件?
Posted
技术标签:
【中文标题】如何在win32 api中将鼠标坐标写入文本文件?【英文标题】:how to write mouse coordinates to a text file in win32 api? 【发布时间】:2011-01-10 03:05:18 【问题描述】:我想将鼠标坐标写入文本文件。这是我的代码:
HANDLE hfile;
DWORD nOut;
POINT mouseCoords;
int counter = 10;
char buffer[10];
/*CRETAE_ALWAYS - creates a new file OR overwrites existing one*/
hfile = CreateFile(g_fileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
/*Make sure that file is successfully created*/
if ( hfile == INVALID_HANDLE_VALUE )
MessageBox(NULL, "Cannot create file!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
//while ( counter >= 0 )
GetCursorPos(&mouseCoords);
sprintf_s(buffer, "%d, %d", mouseCoords.x, mouseCoords.y);
//buffer[0] = (char)mouseCoords.x;
//buffer[1] = (char)mouseCoords.y;
if ( !( WriteFile(hfile, buffer, 2/*strlen(buffer)*/, &nOut, NULL) ) )
MessageBox(NULL, "Cannot write to file!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
谢谢。
我在 windows vista 下使用 win32 api,Visual Studio 2008。
编辑: 我收到了这些警告(它们都指向带有 sprintf_s 的行): 警告 C4047:“函数”:“size_t”与“char [7]”的间接级别不同 警告 C4024:“sprintf_s”:形参和实参 2 的不同类型 警告 C4047:“函数”:“const char *”与“LONG”的间接级别不同 警告 C4024: 'sprintf_s' : 形参和实参 3 的不同类型
【问题讨论】:
【参考方案1】:sprintf_s()
也需要被告知缓冲区的大小:
sprintf_s(buffer, sizeof buffer, "%d, %d", mouseCoords.x, mouseCoords.y);
【讨论】:
不错不错。我怎么能错过这个?以上是关于如何在win32 api中将鼠标坐标写入文本文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用win32 CreateProcess函数等到孩子完成写入文件