Vous avez probablement le code comme:
BOOL CMyWnd::RegisterWindowClass()
{
WNDCLASS wndcls;
// HINSTANCE hInst = AfxGetInstanceHandle();
HINSTANCE hInst = AfxGetResourceHandle();
if (!(::GetClassInfo(hInst, _T("MyCtrl"), &wndcls)))
{
// otherwise we need to register a new class
wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndcls.lpfnWndProc = ::DefWindowProc;
wndcls.cbClsExtra = wndcls.cbWndExtra = 0;
wndcls.hInstance = hInst;
wndcls.hIcon = NULL;
wndcls.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
wndcls.hbrBackground = (HBRUSH) (COLOR_3DFACE + 1);
wndcls.lpszMenuName = NULL;
wndcls.lpszClassName = _T("MyCtrl");
if (!AfxRegisterClass(&wndcls))
{
AfxThrowResourceException();
return FALSE;
}
}
return TRUE;
}
où le wndcls.hCursor
dit ce que le curseur sera utilisé lorsque WM_SETCURSOR
message est jeté; cela arrive chaque fois qu'il se produit un mouvement de souris et pas seulement.
Je résolu un problème similaire de cette façon:
Dans la classe carte de message ajouter une entrée pour le message WM_SETCURSOR
:
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
//... other messages
ON_WM_SETCURSOR()
END_MESSAGE_MAP()
Ajoutez la méthode OnSetCursor
, qui remplacera la classe parente la mise en œuvre :
BOOL CMyWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if (SomeCondition())
return FALSE;
return __super::OnSetCursor(pWnd, nHitTest, message);
}
Explication: quand SomeCondition()
est vrai, vous ne serez pas appeler la mise en œuvre des parents.Peut-être que vous voulez toujours avoir un curseur non remplacé avec le comportement de la classe parent, vous donc juste besoin d'une méthode encore plus courte:
BOOL CMyWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
return FALSE;
}
Et la déclaration de la méthode dans le fichier d'en-tête est:
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
Passer à NULL n'a pas résolu le problème. Au lieu de permettre au curseur de changer, le curseur était toujours <-> au lieu de la flèche normale. Et les messages messages WM_SETCURSOR étaient toujours envoyés, comme je pouvais vérifier en utilisant Spy ++ 64bit. Cependant, j'ai augmenté parce que vous m'avez fait apprendre quelque chose de nouveau. – sergiol