2009-10-08 7 views
2

J'essaie de changer le curseur de la souris et d'écrire le code ci-dessous, mais cela ne fonctionne pas. Il semble que IDC_CURSOR_WHITE devrait être placé dans un fichier rc. J'ai essayé et échoué. Enfin, je suis venu ici pour vous guider. Aidez-moi! Merci.Programmation de l'API VC++ win32: comment changer le curseur de la souris

IDC_CURSOR_WHITE IDC_CURSOR_BLACK pas

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: Le code de fichier rc. Et l'erreur est le cousin de souris non défini.

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

Quelle est l'erreur que vous obtenez tout en mettant la ressource dans le fichier rc? – Naveen

+0

En plus de quelle erreur obtenez-vous, comment le mettez-vous dans le fichier rc? – Vicky

+0

Quelle est la valeur des descripteurs hWhiteCursor et hBlackCursor? – Blake7

Répondre

1

Des extraits vous avez publié, dans le code que vous chargez les curseurs à l'aide IDC_CURSOR_WHITE et IRC_CURSOR_BLACK, mais vous les inclure dans le fichier .rc comme IDC_CURSOR1 et IDC_CURSOR2.

1

C'est ce que je fais quand j'ai besoin d'utiliser des ressources. D'abord, je crée un fichier resource.h et définissons le nom de la ressource avec un entier unique. Incluez le fichier resource.h dans votre fichier .rc, puis définissez la ressource réelle. Donc, dans votre cas, les fichiers doivent être les suivantes

resource.h 
#define IDC_BLACK_CURSOR 1001 

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

maintenant d'utiliser la ressource dans un fichier particulier, j'inclure simplement le fichier resource.h et utiliser le curseur particulier. Donc encore une fois dans votre cas, si vous voulez utiliser le curseur dans le fichier test.cpp.

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

J'espère que cela aide. Pour plus d'informations, MSDN est toujours votre ami.

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