cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 13 juil. 2009 à 20:16
"à la personne qui vient de m'écrire un message"
Heu !
Un message privé ?
Si oui peux tu donner le contenu du message ainsi que le pseudo de celui qui te l'a envoyé ?
Merci.
Pour ton problème c'est expliqué dans la doc, ici précisément.
Globalement, on intercepte les LPNMTVDISPINFO.
Si pszText n'est pad renseigné, c'est que l'utilisateur à annulé donc on ne fait rien.
Si pszText est là, suffit de faire un TVM_SETITEM.
case WM_NOTIFY:
if (((NMHDR*)lParam)->code == TVN_ENDLABELEDIT)
{
lpDispInfo = (LPNMTVDISPINFO)lParam;
/* Si le texte est à zéro, c'est que l'utilisateur a annulé */
if (lpDispInfo->item.pszText)
SendMessage(_hTreeView, TVM_SETITEM, 0, (LPARAM)&lpDispInfo->item);
}
break;
Code complet :
Application GUI.
Pour compiler sous gcc, ajouter -nostartfiles -nodefaultlibs -nostdlib -ffreestanding dans les options du lieur.
Pour compiler sous VC, s'arranger pour que le lieur ignore toutes les librairies par défaut (/nodefaultlib).
S'assurer que kernel32 et user32 sont en entrée du lieur.
Sous VC, en cas d'erreur LNK2001 : __chkesp symbole externe non résolu -> Enlever /GZ des options de compilation.
<hr size="2" width="100%" />#ifdef UNICODE
#define _UNICODE
#endif /* UNICODE */
HINSTANCE _hThisInstance; /* Handle du module */
HWND _hWnd; /* Handle de la fenêtre */
HWND _hStatusBar; /* Handle sur la bar de status */
HWND _hTreeView; /* Handle sur le treeview */
LPTSTR _lpAppName = _T("TreeView"); /* Nom de l'appli */
DWORD _nStatusBarHeight; /* Redimenssionement du treeview */
/**
* Affiche un message d'erreur correspondant à la dernière erreur Win32
*/
DWORD __stdcall ShowLastError()
{
DWORD nLastError; /* Numéro de l'erreur */
LPTSTR lpMessageBuffer; /* Récupération du message */
/**
* Traitement des messages
*/
LRESULT __stdcall WindowProcedure(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
MINMAXINFO *lpMinMaxInfo; /* Info sur les tailles min et max de la fenêtre */
RECT clientRect; /* Taille de la zone cliente */
int bHandled; /* Pour savoir si le message est traité */
LPNMTVDISPINFO lpDispInfo; /* Info sur l'édition du noeud */
long nResult;
case WM_SIZE:
/* On signale à la barre de status que la fenêtre a été redimenssionnée */
SendMessage(_hStatusBar, WM_SIZE, wParam, lParam);
/* On ajuste la taille de le treeview */
GetClientRect(_hWnd, &clientRect);
SetWindowPos(_hTreeView, 0, 0, 0,
clientRect.right - clientRect.left,
clientRect.bottom - clientRect.top - _nStatusBarHeight,
SWP_NOMOVE | SWP_NOZORDER);
break;
case WM_NOTIFY:
if (((NMHDR*)lParam)->code == TVN_ENDLABELEDIT)
{
lpDispInfo = (LPNMTVDISPINFO)lParam;
/* Si le texte est à zéro, c'est que l'utilisateur a annulé */
if (lpDispInfo->item.pszText)
SendMessage(_hTreeView, TVM_SETITEM, 0, (LPARAM)&lpDispInfo->item);
}
break;
case WM_DESTROY:
/* On signale que le thread va s'arrêter */
PostQuitMessage(0);
bHandled = 1;
break;
}
if (! bHandled)
nResult = DefWindowProc(hWnd, nMessage, wParam, lParam);
return nResult;
}
/**
* Ajoute la barre de status
*/
int __stdcall CreateStatusBar()
{
int nWidth; /* Largeur de la partie 0 */
RECT statusBarRect; /* Taille de la barre de status */
int nResult;
nResult = 0;
/* Création de la barre de status */
_hStatusBar = CreateWindowEx(0, STATUSCLASSNAME, (LPCTSTR)NULL,
SBARS_SIZEGRIP | WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
_hWnd, NULL, _hThisInstance, NULL);
if (! _hStatusBar) goto the_end;
/* Affectation du nombre de parties */
nWidth = -1;
SendMessage(_hStatusBar, SB_SETPARTS, (WPARAM)1, (LPARAM)&nWidth);
/* Calcul de la hauteur de la barre de status */
GetWindowRect(_hStatusBar, &statusBarRect);
_nStatusBarHeight = statusBarRect.bottom - statusBarRect.top;
nResult = 1;
the_end:
return nResult;
}
/**
* Crée une imagelist utilisée par le treeview
*/
int __stdcall CreateImageList()
{
HIMAGELIST hImageList; /* Handle sur la imagelist */
int nResult;
nResult = 0;
/* Création de la liste */
hImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
ILC_MASK, 1, 1);
if (! hImageList) goto the_end;
/* Ajout d'un icône */
if (ImageList_ReplaceIcon(hImageList, -1, LoadIcon(NULL, IDI_APPLICATION)) == -1) goto the_end;
/* Affectation de la imagelist à le treeview */
SendMessage(_hTreeView, TVM_SETIMAGELIST, (WPARAM)TVSIL_NORMAL, (LPARAM)hImageList);
nResult = 1;
the_end:
return nResult;
}
/**
* Crée les items de le treeview
*/
int __stdcall CreateItems()
{
TVINSERTSTRUCT insertStruct; /* Structure contenant les infos d'insertion */
HTREEITEM hRoot; /* Handle sur la racine */
if (! CreateImageList()) goto the_end;
if (! CreateItems()) goto the_end;
nResult = 1;
the_end:
return nResult;
}
/**
* Initialise la fenêtre principale de l'appli.
*/
int __stdcall CreateMyWindow()
{
WNDCLASSEX wincl; /* Classe de la fenêtre utilisée */
int nResult;
nResult = 0;
/* Création de la classe de fenêtre */
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.style = 0;
wincl.lpfnWndProc = WindowProcedure;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hInstance = _hThisInstance;
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wincl.lpszMenuName = 0;
wincl.lpszClassName = _lpAppName;
wincl.hIconSm = NULL;
/* Enregistrement de la classe */
if (! RegisterClassEx(&wincl)) goto the_end;
/* Création de la fenêtre */
_hWnd = CreateWindowEx(0, _lpAppName, _lpAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 500, 300,
HWND_DESKTOP, NULL, _hThisInstance, NULL);
if (! _hWnd) goto the_end;
/* Création de la barre de status */
if (! CreateStatusBar()) goto the_end;
/* Création de la treeview */
if (! CreateTreeView()) goto the_end;
/* Affichage de la fenêtre */
ShowWindow (_hWnd, SW_SHOW);
nResult = 1;
the_end:
return nResult;
}
/**
* Main
*/
int __cdecl WinMainCRTStartup()
{
MSG messages; /* Messages envoyés à l'application */
INITCOMMONCONTROLSEX initCommon; /* Initialisation de comctl32 */
int nResult;
lectpe
Messages postés162Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention17 juillet 20103 8 juil. 2009 à 19:05
Bon alors sollen9, je vais te faire le même topo qu'à la personne qui vient de m'écrire un message :
Je me suis inscrit sur ce site afin de trouver des réponses à mes questions.
J'en ai marre qu'on me redirige vers des sites où il y a 36000 pages et pas une qui correspond à ce que je recherche !!!
Il y a quelque temps, j'étais satisfait de ce site car on répondait correctement à mes questions.
Maintenant, quand je pose une question, que certains doivent se poser aussi, on m'envoie chier et ça ça me plait pas.
Je vais me désinscrire définitivement de ce site est le déconseiller fortement à ceux qui cherchent à trouver des réponses à leur question car certaines personnes répondent correctement aux questions, mais elle ne sont que trop peu nombreuses sur ce site. Les personnes comme toi ou comme Sollen9 me redirigent vers des sites à la con dont j'ai rien à foutre.
Et en plus, dans les forums, les "Bonjour", "Cordialement", "Merci"... sont très rare, ce qui me déçoit beaucoup.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 12 juil. 2009 à 18:35
Bonjour,
Désolé, mais il se trouve qu'on a un petit souci avec un membre que l'on banni régulièrement.
Jeffy131, Miquel75, laurentis100, Azer33, boris20... et maintenant sollen9 (Maintenant banni). Toujours la même personne répétant inlassablement la même rengaine...
Qui plus est, la pollution est assez élevée ces derniers temps (Mais que font les écolos ?) donc ça doit pas vraiment donner envie à ceux qui répondent de venir aider.
Je vais jetter un oeil sur ton problème mais pas dans la seconde.
Vous n’avez pas trouvé la réponse que vous recherchez ?
burt13
Messages postés2Date d'inscriptionmercredi 15 juillet 2009StatutMembreDernière intervention15 juillet 2009 15 juil. 2009 à 15:07
Non, ils ont raison.
Ces questions sont des questions répondues des millers de fois depuis 20 ans sur les réseaux pros MS et autres!!
Quel est l'intéret de reposer une ènième fois ce genre de question de débutant ?!!!
Le niveau de ce forum devient lamentable...