PDA

Visualizza la versione completa : [c win32] avere il nome nella listbox


Ripper_92
10-10-2009, 10:45
salve a tutti. sto facendo un programmino e non ne vengo fuori. quando vado per prendere la stringa selezionata in una listbox non riesce a prenderla. vi allego il codice:

BOOL CALLBACK DialogProc3(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
int iIndex, iLength;
TCHAR *pVarName, *pVarValue;
switch(uMsg) {
HANDLE_MSG(hwndDlg,WM_CLOSE,OnDlgClose);
case WM_INITDIALOG:
scrivilista(hwndDlg);
return TRUE;
case WM_COMMAND:
if (LOWORD (wParam) == IDOK)
{
SetFocus(hwndDlg);
iIndex= SendMessage(hwndDlg, LB_GETCURSEL,0,0);
iLength= SendMessage(hwndDlg, LB_GETTEXTLEN,iIndex,0);
pVarName=calloc (iLength,sizeof(TCHAR));
SendMessage(hwndDlg, LB_GETTEXT, iIndex, (LPARAM)pVarName);
iLength = GetEnvironmentVariable (pVarName, NULL, 0) ;
pVarValue = calloc (iLength, sizeof (TCHAR)) ;
GetEnvironmentVariable (pVarName, pVarValue, iLength) ;
FILE* note=fopen("nome.txt","w"); //vedo cosa prende
fprintf(note,"%s\n%s\n%d\n%d",pVarValue,pVarName,iIndex,iLength); //da sempre 0 per iIndex e i Length
fclose(note); //e vuoto per le stringhe
OnDlgClose(hwndDlg);
open++;
CreateDialogParam(0,"Dialog2",0,DialogProc5,0);
}
}
return FALSE;
}
e qui lo screen di come č fatta la finestra
http://i33.tinypic.com/f441vr.png
grazie a chiunque cerca di aiutarmi

oregon
10-10-2009, 10:58
Nel tuo codice non c'e' nessun riferimento alla IDC_LIST1 ...

Puoi usare la

SendDlgItemMessage

per accedere alla listbox.
Ad esempio,

iIndex = SendDlgItemMessage(hWndDlg, IDC_LIST1, LB_GETCURSEL, 0, 0);

oppure usi la

GetDlgItem con la SendMessage

ad esempio

iIndex = SendMessage(GetDlgItem(hWndDlg, IDC_LIST1), LB_GETCURSEL, 0, 0);

Ripper_92
10-10-2009, 11:54
grazie ora va! :D

oregon
10-10-2009, 11:55
Originariamente inviato da Ripper_92
grazie ora va! :D

Pergo ... spero tu abbia compreso l'errore che commettevi (non dialogavi con la listbox ...)

Ripper_92
10-10-2009, 12:13
si lo sapevo, perņ non sapevo dove andava messo! :master:

Loading