LVN_ENDLABELEDIT

cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004 - 21 juil. 2003 à 18:05
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004 - 22 juil. 2003 à 13:02
Salut,
Voici mon code pour edit un item dans une listview:
Pour le Begin, pas de probleme, mais pour le ENDLABELEDIT, il m'affiche la msgbox, et juste apres il quitte brusquement le programme.
A la place des MessageBox(j'ai des fonctiones persos), mais ca revient a la mm chose.
case IDC_LIST1:
{
  switch(((LPNMHDR)lParam)->code)
  {
    case LVN_BEGINLABELEDIT:
    {
      MessageBox(hDlg,"Debut","Message",MB_OK);
      break;
    }
    case LVN_ENDLABELEDIT:
    {
      MessageBox(hDlg,"lu","la",0);
      break;
    }
  }
break;
}


Quelqu'un sait-il d'ou vient le probleme?
Bye,Xentor609

19 réponses

cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
21 juil. 2003 à 19:30
au lieu des break essaye de mettre des return 0; et met aussi un message default : return 0;
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
21 juil. 2003 à 19:45
Change rien.
Je vois vraiment pas d'ou peux venir le prob.
Bye,Xentor609
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
21 juil. 2003 à 19:51
ta essayé de mettre une procédure default : return 0; ??
et sinon est-ce ke tu as bien une procédure DefProc
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
21 juil. 2003 à 20:01
Oui j'ai bien un default : return 0;
Non je n'ai pas de DefProc,je fais ca comment, je met koi dedans?
Bye,Xentor609
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
21 juil. 2003 à 20:11
LRESULT CALLBACK WinProc(HWND hWindow, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT paintst;
switch(message)
{
case WM_DESTROY :
PostQuitMessage(0);
return 0;
case WM_PAINT :
hDC = BeginPaint(hWindow, &paintst);
EndPaint(hWindow, &paintst);
return 0;
default :
return DefWindowProc(hWindow, message, wParam, lParam);
}
}
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
21 juil. 2003 à 20:15
LRESULT CALLBACK WinProc(HWND hWindow, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT paintst;
switch(message)
{
case WM_DESTROY :
PostQuitMessage(0);
return 0;
case WM_PAINT :
hDC = BeginPaint(hWindow, &paintst);
EndPaint(hWindow, &paintst);
return 0;
default :
return DefWindowProc(hWindow, message, wParam, lParam);
}
}
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
21 juil. 2003 à 20:23
Non, ben j'ai essaye avec DefDlgProc(j'ai une dlgbox), mais ca change rien.
Bon c pas grave, je vais bien finir par trouver un jour, merci qd mm pour ton aide.
Bye,Xentor609
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 09:38
est-ce que ça serait possible que tu me montre le code de ta MessageBox perso ??? :question)
Lahou
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
22 juil. 2003 à 09:50
Salut, voila mon code pour ma dlgbox:
Je t'epargne tout les WM_SIZE....qui n'ont rien a voir avec mon probleme. Le probleme vient juste de endlabeledit (pas de beginlabeledit):
LRESULT CALLBACK DlgMainProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG: 
{
SetClassLong(hDlg, GCL_HICON, (long)LoadIcon(hInst, MAKEINTRESOURCE(IDI_APP)));
InitCommonControls();

hDlgMain=hDlg;
hhk = SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, 0, GetCurrentThreadId());

InitTreeViewImageLists();
InitTreeViewItems();
himlSmall=ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 2, 0);
himlLarge=ImageList_Create(32, 32, ILC_COLORDDB | ILC_MASK, 2, 0);
InitListViewImageLists();

HMENU hMenu=LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU));
SetMenu(hDlg,hMenu);

InitSplit();
break;
}

case WM_NOTIFY:
{
switch((int)wParam)
{
case IDC_TREE1:
{
if(((LPNMHDR)lParam)->code == TVN_SELCHANGED)
OnSelTree();
break;
}

case IDC_LIST1:
{
switch(((LPNMHDR)lParam)->code)
{
case LVN_BEGINLABELEDIT:
{
MessageBox(hDlg,"ok","ok",MB_OK);
break;
}
case LVN_ENDLABELEDIT:
{
switch(ListViewCas())
{
case 3:
case 4:
MessageBox(hDlg,"lu","la",MB_OK);
Rename((NMLVDISPINFO*)lParam);
break;
}
return DefDlgProc(hDlg, msg, wParam, lParam);
//break;
}

case NM_DBLCLK:
{
switch(ListViewCas())
{
case 1:
case 4:
OpenFolder(szItemSel);
break;
case 3:
FORWARD_WM_COMMAND(hDlg, ID_OPEN, 
GetDlgItem(hDlg,ID_OPEN), BN_CLICKED, SendMessage);
break;
}
break;
}
/*default :
return DefDlgProc(hDlg, msg, wParam, lParam);*/
}
break;
}
}
break;
}

case WM_INITMENUPOPUP:
{
HMENU hMenu=GetMenu(hDlg);
EnableGrayMenu(hMenu,ListViewCas());
UpdateMenu(GetDlgItem(hDlg,IDC_LIST1),hMenu);
break;
}

case WM_CONTEXTMENU:
{
if(DoContextMenu(wParam, lParam))
return false;
break;
}

case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case ID_OPEN:
OpenExplorePrint("open");
break;

case ID_OPEN_EXPLORE:
OpenExplorePrint("openfolder");
break;

case ID_NEW_FILE:
Mode=1;
DialogBox(hInst, MAKEINTRESOURCE(IDD_EDIT), hDlg, (DLGPROC)DlgEditProc);
break;

case ID_LARGE:
SwitchView(GetDlgItem(hDlg,IDC_LIST1), LVS_ICON);
break;
         
case ID_SMALL:
SwitchView(GetDlgItem(hDlg,IDC_LIST1), LVS_SMALLICON);
break;
         
case ID_LISTE:
SwitchView(GetDlgItem(hDlg,IDC_LIST1), LVS_LIST);
break;

case ID_QUIT:
case WM_DESTROY:
EndDialog(hDlg,0);
break;
}
break;
}
default: 
return 0;
}
return 1;
}

Bye,Xentor609
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 10:08
Le problème vient sans doute de ta fonction Rename située après ta MessageBox, à quoi elle sert ? tu utilises des types perso ?? NMLVDISPINFO <= c koi ?
Lahou
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
22 juil. 2003 à 10:11
Non, non le prob, vient pas de ma fonction Rename(fonstion perso), j'ai deja essaye en affichant juste la msgbox et le prob ets le mm.
Bye,Xentor609
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 10:22
Alors c'est dans ta fonction de MessageBox perso
est-ce que tu mettre le code ?
Lahou
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
22 juil. 2003 à 10:36
Bon, je crois qu'on s'ets pas compris, le prob ne vient pas de ma fonction(je l'ai mis en commentair epour voir)
et je fais juste:

MessageBox(NULL,"test","test",MB_OK); //dans endlabeledit

et la messagebox s'affiche mais la fenetre se quitte qd mm
Bye,Xentor609
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 11:37
case LVN_ENDLABELEDIT:
{
switch(ListViewCas())
{
case 3:
case 4:
MessageBox(hDlg,"lu","la",MB_OK);
Rename((NMLVDISPINFO*)lParam);
break;
default :
return 0;
}
return DefDlgProc(hDlg, msg, wParam, lParam);
}

Lahou
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 11:41
je viens de voir un truc : à la fin t'as mis return 1; je pense que c'est ça ki fé ke ton prog quitte

Lahou
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
22 juil. 2003 à 11:53
En fait, je viens de me rendre compte;
si je fais:
switch(ListViewCas())
{
case 3:
case 4:
MessageBox(hDlg,"lu","la",MB_OK);
Rename((NMLVDISPINFO*)lParam);
break;
}

Il affiche la message box sans arret, la fenetre disparait, mais le prog est tjs en memoire(ben oui puisqu'il affiche une mesage box a chaque fois)
Mais si je fais
switch(ListViewCas())
{
case 3:
case 4:
MessageBox(hDlg,"lu","la",MB_OK);
Rename((NMLVDISPINFO*)lParam);
return 0;
}

La il affiche une fois la msgbox et il quitte le prog.

Bye,Xentor609
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
22 juil. 2003 à 12:02
C'est un peu plus compliqué à utiliser que ca. Regarde sur mon site, kaid.fr.st / "Sources" / "C++" / "Edition de l'item de la première colonne dans une listview".

Kaid - kaid.fr.st
0
cs_lahou Messages postés 41 Date d'inscription dimanche 18 mars 2001 Statut Membre Dernière intervention 4 novembre 2003
22 juil. 2003 à 12:53
je viens de voir un truc : à la fin t'as mis return 1; je pense que c'est ça ki fé ke ton prog quitte
et il vaut mieux que tu remplace tt tes break par des return 0;
Lahou
0
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
22 juil. 2003 à 13:02
J'ai essaye, mais ca marche tjs pas, je comprends plus rien ca m'enerve c pas possible, bo c pas grave de tpute faocn, je finirai bien par trouver(j'vais bosser serieusement dessus). Merci qd mm pour ton aide.
Bye,Xentor609
0
Rejoignez-nous