Программирование VC++ win32 API: как изменить курсор мыши

Я пытаюсь изменить курсор мыши и написать код ниже, но не работает. Кажется, 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

person user185369    schedule 08.10.2009    source источник
comment
Какую ошибку вы получаете при помещении ресурса в файл rc?   -  person Naveen    schedule 08.10.2009
comment
А также какую ошибку вы получаете, как вы помещаете ее в файл rc?   -  person Vicky    schedule 08.10.2009
comment
Каково значение дескрипторов hWhiteCursor и hBlackCursor?   -  person Blake7    schedule 08.10.2009


Ответы (2)


Из фрагментов, которые вы опубликовали, в коде вы загружаете курсоры, используя IDC_CURSOR_WHITE и IRC_CURSOR_BLACK, но вы включаете их в файл .rc как IDC_CURSOR1 и IDC_CURSOR2.

person Franci Penov    schedule 08.10.2009

Это то, что я делаю, когда мне нужно использовать ресурсы. Сначала я создаю файл resource.h и определяю имя ресурса с уникальным целым числом. Включите файл resource.h в свой файл .rc, а затем определите фактический ресурс. Итак, в вашем случае файлы должны быть следующими

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

person Pratik Bhatt    schedule 09.10.2009