【问题标题】:how to write mouse coordinates to a text file in win32 api?如何在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 的不同类型

【问题讨论】:

    标签: winapi file-io type-conversion


    【解决方案1】:

    sprintf_s()也需要被告知缓冲区的大小:

    sprintf_s(buffer, sizeof buffer, "%d, %d", mouseCoords.x, mouseCoords.y);
    

    【讨论】:

    • 不错不错。我怎么能错过这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多