VC ++ win32 API编程:如何更改鼠标光标

时间:2009-10-08 08:31:00

标签: winapi visual-c++ mouse-cursor

我正在尝试更改鼠标光标并编写下面的代码但不起作用。 似乎应将IDC_CURSOR_WHITE放入rc文件中。我尝试过但失败了。最后我来到这里寻求你的指导。救命!感谢。

IDC_CURSOR_WHITE IDC_CURSOR_BLACK不

hWhiteCursor = ::LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR_WHITE);

hBlackCursor = ::LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR_BLACK);



case WM_LBUTTONDOWN:
  if ((type = ++type % 2) == 0)
   SetCursor(hWhiteCursor);
  else 
   SetCursor(hBlackCursor);
  break;
 case WM_SETCURSOR
  return 0;

PS:rc文件代码。并且错误是鼠标cousor未定义。

// Microsoft Visual C++ generated resource script.
//
#include "resource."

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
//  resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//

IDC_CURSOR_WHITE             CURSOR                  "cursor1.cur"
IDC_CURSOR_BLACK            CURSOR                  "cursor2.cur"
#endif    //  resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

2 个答案:

答案 0 :(得分:1)

从您发布的代码段中,您使用IDC_CURSOR_WHITEIRC_CURSOR_BLACK加载游标的代码,但是您将它们作为IDC_CURSOR1和{{1}包含在.rc文件中}}

答案 1 :(得分:1)

当我需要使用资源时,这就是我的工作。首先,我创建一个resource.h文件,并使用唯一的整数定义资源名称。在.rc文件中包含resource.h文件,然后定义实际资源。所以在你的情况下,文件应该如下

resource.h
#define IDC_BLACK_CURSOR   1001

resource.rc
#include "resource.h"
......
IDC_BLACK_CURSOR CURSOR "cursor1.cur"

现在要在特定文件中使用资源,我只需要包含resource.h文件并使用特定的游标。所以在你的情况下,如果你想在test.cpp文件中使用游标。

test.cpp
#include "resource.h"
....
hBlackCursor = LoadCursor(hInst, MAKEINTRESOURCE(IDC_BLACK_CURSOR));
.....

我希望这会有所帮助。有关详细信息,MSDN始终是您的朋友。

http://msdn.microsoft.com/en-us/library/ms648380%28VS.85%29.aspx