[Win32-api] Dateien mit Listenfenstern auslesen

So noch eine Frage ... kann mir jemand sagen warum bei diesem Code TextOutA keinen Text ausgibt? So sthet das auch in meinem Handbuch aber irgendwie muss da was falsch sein...
Code:
WM_COMMAND:
         
        if ( LB_ERR == (iIndex  = SendMessage (hwndMapList, LB_GETCURSEL, 0, 0))){
			break;}

			SendMessage (hwndMapList, LB_GETTEXT, i, (LPARAM) szBuffer) ;

			if(INVALID_HANDLE_VALUE != (hFile = CreateFile (szBuffer,
					GENERIC_READ, FILE_SHARE_READ, NULL, 
					OPEN_EXISTING, 0, NULL)))

			{
				CloseHandle (hFile) ;
				bValidFile = TRUE ;
				lstrcpy (szFile, szBuffer) ;
				GetCurrentDirectory (MAX_PATH + 1, szBuffer) ;

				if (szBuffer [lstrlen (szBuffer) - 1] != '\\')
					lstrcat (szBuffer, TEXT ("\\")) ;
			}
         return 0;

WM_PAINT:
        if(!bValidFile)
		break;
	if(INVALID_HANDLE_VALUE != (hFile = CreateFile (szFile,
			GENERIC_READ, FILE_SHARE_READ, NULL, 
			OPEN_EXISTING, 0, NULL)))
	{
		bValidFile = FALSE ;
		break;
	}
	ReadFile (hFile, buffer, MAXREAD, &i, NULL) ;
	CloseHandle (hFile);
	TextOutA(hdc,500,400,buffer,strlen(buffer));
        return 0;
 
1)
In WM_PAINT solltest du mit BeginPaint/EndPaint arbeiten (und deren HDC nehmen)

2)
Hast du mit dem Debugger getestet, dass dein Programm auch bis zu TextOutA durchkommt? Zeigt der Debugger dann auch an, dass etwas in buffer steht?
 
Also bei WM_PAINT arbeite ich mit Begin Paint bzw. EndPaint ( hab das nur vergessen hinzuschreiben)

Und ich weiss nich wie ich das rausbekomme ob in buffer was drin steht aber ich denke nich weil die Funktion ja richtig arbeitet.
Das Problem ist das bValidFile FALSE ist, also der irgendein Problem beim Lesen der Datei in WM_PAINT hat... aber warum? was nmuss ich da noch ändern?
 
Zuletzt bearbeitet:
Also... ich mach das jetzt anders... ich öffne das ganze mit fopen()...

Dazu eine aller letzte Frage... gibt es eine Nachricht die ich an die ListBox per SendMessage senden kann die mir den Namen der x-ten Datei zurück gibt?
:confused::confused::confused:

Was könnte man andernfalls nehmen um den Namen der Datei zu ermitteln?
 
nee bleib bei WinAPI.
C++:
CloseHandle (hFile) ;
				bValidFile = TRUE ;
				lstrcpy (szFile, szBuffer) ;
				GetCurrentDirectory (MAX_PATH + 1, szBuffer) ;

				if (szBuffer [lstrlen (szBuffer) - 1] != '\\')
					lstrcat (szBuffer, TEXT ("\\")) ;[7
			}
was willst du damit bewerkstelligen?

C++:
if(INVALID_HANDLE_VALUE != (hFile = CreateFile (szFile,
			GENERIC_READ, FILE_SHARE_READ, NULL, 
			OPEN_EXISTING, 0, NULL)))
	{
		bValidFile = FALSE ;
		break;
	}
wenn es kein Invalid_handle is, soll der bValidFile auf FALSE setzen und die Funktion verlassen? Mach da mal aus != ein ==.
 

Neue Beiträge

Zurück