API :: WM_NCMOUSELEAVE >> error C2065: 'WM_NMOUSELEAVE' : undeclared ident

Signaler
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Pourquoi j'ai ce message d'erreur alors que le WM figure bien sur msdn..

JackosKing For EvEr

21 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
c'est pas WM_NCMOUSELEAVE plutot?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
#define _WIN32_WINNT 0x500
#define WINVER 0x0500
ces 2 lignes tout en haut du module.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

thx
mais commen savoir qu'il faut cela?? c'est pas marqué sur le site msdn !

JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Si, si, mais de maniere indirecte.
Faut toujours regarder en bas:
Minimum operating systems: Windows 98, Windows 2000
Que veux-tu, c'est comme dans les sectes, il y a des messages exclusifs pour inities.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bein quand je vois ca, je me dit ok ca compilera sur mon pc:) pas qu'il faut un define:)
JackosKing For EvEr
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bon ca ne marche pas j'ai toujours:
error C2065: 'WM_MOUSELEAVE' : undeclared identifier :(
JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
tu as bien mis les #define tout en haut AVANT #include <windows.h> ????
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bein heu:

#define _WIN32_WINNT 0x500
#define WINVER 0x0500

#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "Twiny.h"

struct STwiny
{
STwiny *NTwiny;
Twiny TWINY;
};

STwiny* First = NULL;

inline void ULoadTwiny( void )
{
STwiny* pBack = First;
STwiny* pTmp;
while ( pBack != NULL )
{
pTmp = pBack->NTwiny;
free(pBack);
pBack = pTmp;
}
}

inline void LoadTwiny( HINSTANCE hInstance, int nShowCmd )
{
char IniPath[MAX_PATH];
char PlugPath[MAX_PATH];

GetCurrentDirectory( MAX_PATH, IniPath);
sprintf( PlugPath, "%s\\Datas\\Twiny.ini", IniPath);

memset(IniPath,0,MAX_PATH);
GetPrivateProfileString("TWINY",NULL," ",IniPath,MAX_PATH,PlugPath );

char *pStr=IniPath;
STwiny* pBack=NULL;

while ( (*pStr + *(pStr+1)) != 0)
{

if (pBack == NULL)
{
pBack = (STwiny*)malloc(sizeof(STwiny));
First = pBack;
}
else
{
pBack->NTwiny = (STwiny*)malloc(sizeof(STwiny));
pBack = pBack->NTwiny;
}

pBack->TWINY.CreatTwiny(pStr,hInstance);
ShowWindow(pBack->TWINY.hWnd, nShowCmd );
UpdateWindow(pBack->TWINY.hWnd);

pStr+=strlen(pStr)+1;

}

pBack->NTwiny = NULL;
}

long WINAPI WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam)
{if ( (message WM_DESTROY) || (message WM_NCMOUSELEAVE ))
{
//		if ( hwnd != a.hWnd)
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hwnd, message, wParam, lParam);
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
              LPSTR lpCmdLine, int nShowCmd)
{
MSG msg;

WNDCLASSEX winclassex;

winclassex.cbSize = sizeof(winclassex);
winclassex.style = CS_BYTEALIGNCLIENT;
winclassex.lpfnWndProc = WndProc;
winclassex.cbClsExtra=0L;
winclassex.cbWndExtra=0L;
winclassex.hInstance=hInstance;
winclassex.hIcon=LoadIcon(NULL,IDI_APPLICATION);
winclassex.hCursor=LoadCursor(NULL,IDC_ARROW);
winclassex.hbrBackground=(HBRUSH) (COLOR_BTNFACE+1);
winclassex.lpszMenuName=NULL;
winclassex.lpszClassName="MyWndClassEx";
winclassex.hIconSm = LoadIcon( NULL, IDI_APPLICATION );

RegisterClassEx(&winclassex);

LoadTwiny(hInstance, nShowCmd);

while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;
}


a moins que j'ai trop bu :(

JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
#define WM_NCMOUSELEAVE 0x02A2
alors mets cela en haut de ton source.
BruNews, ciao...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
#include "stdafx.h"
laisse donc ce machin aux MFCistes, ne sert absolument a rien.
#include <stdlib.h>
#include <stdio.h>
ces 2 la ne sont peut etre pas indispensables non plus.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

Ok lma ca marche thx:)
Par contre heu je ne comprend pas pourquoi quand le curseur quitte la fenetre le programme s'arrete pas!!
Normalement quand la sourie quitte la fenetre le msg WM devrai etre envoyé non?
JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
NON, lis bien msdn sur le sujet, dependra de la circonstance, du temps d'inactivite etc...
C'est quoi le but ? Fermer la fenetre quand la mouse quitte le rectangle de la fenetre ? Si oui pas avec cela qu'il faut faire.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

non ce n'etait pas pour fermer la fenetre, je testait le code.
En fait j'ai une fenetre qui est defin comme always on top et je voudrai que lorsque la sourie vient dessus (la fenetre n'et pas forcement active) la fenetre chnage de taille, et l'inverse quand la sourie part, la fenetre reprend sa taille precedente.

JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
changemet de taille quand souris arrive dessus va generer messages en boucle infinie, attention.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bein des qu'elle arrive dessu j'initialise une variable pour dire que la fenetre est grande=> pas de boucle infini.

Par contre faut que j'utilise quel msg?

JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
WM_MOUSEMOVE et/ou WM_NCMOUSEMOVE, lis bien ce que msdn en dit surtout a propos de la capture et fais gaffe au boclage infini.
Sinon WM_ACTIVATE et WM_ACTIVATEAPP sont bien pratiques et tres faciles a employer.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bon si j'ai bien compris ca permet de detecter le curseur sur la client area..
donc j'ai voulu essayer:
if ( message == WM_NCMOUSEMOVE )
{
PostQuitMessage(0);
return 0;
}
et lorsque je vais sur la fenetre, rien ne se passe qu'elle soit active ou non:(
JackosKing For EvEr
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bisard parce qu'avec MFC ca marche:
void CExplorerDlg::OnMouseMove(UINT nFlags, CPoint point)
{
AfxMessageBox("e");
}
alors que avec :
WM_NCMOUSEMOVE ca ne marche pas pour les api!
JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
ce message ne sera genere qu'en cas de non capture.
BruNews, ciao...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Tu ne peux pas comparer OnMouseMove et NCMouseMove, 1 est pour zone client et l'autre non.
BruNews, ciao...