【问题标题】:VC++ win32 API programming :how to change mouse cursorVC++ win32 API编程:如何改变鼠标光标
【发布时间】:2010-12-04 22:03:21
【问题描述】:

我正在尝试更改鼠标光标并编写下面的代码但不起作用。 看来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文件代码。错误是鼠标未定义。

// 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

【问题讨论】:

  • 将资源放入 rc 文件时遇到什么错误?
  • 还有什么错误,你是怎么放到rc文件里的?
  • hWhiteCursor 和 hBlackCursor 句柄的值是多少?

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


【解决方案1】:

根据您发布的 sn-ps,在代码中您使用 IDC_CURSOR_WHITEIRC_CURSOR_BLACK 加载游标,但您将它们作为 IDC_CURSOR1IDC_CURSOR2 包含在 .rc 文件中。

【讨论】:

    【解决方案2】:

    当我需要使用资源时,我会这样做。首先,我创建一个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2017-12-02
      相关资源
      最近更新 更多