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:
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

grazie a chiunque cerca di aiutarmi