Dodanie pliku i nakazanie wydrukowania go

0

Chciałbym stworzyć plik tekstowy na pulpicie osoby, która uruchamia program, a następnie wydrukować go. Mój problem polega na tym, że nie mogę stworzyć pliku i nie wiem jak się zabrać za drukowanie. W textboxie wypisałem sobie adres uchwytu na plik i wydaje mi się, że taki nie powinien być. Oto kod który mam:

					SHGetFolderPath(NULL,CSIDL_DESKTOP, 
												 NULL, 
												 0, 
												 szPath);
					sprintf(szPath,"%s%s",szPath,"\\Nowy.txt");
hFile= CreateFile(
    szPath,	// pointer to name of the file 
    DWORD GENERIC_WRITE,	// access (read-write) mode 
    0,	// share mode 
    (LPSECURITY_ATTRIBUTES)CREATE_ALWAYS,	// pointer to security descriptor 
    FILE_ATTRIBUTE_NORMAL,	// how to create 
    0,	// file attributes 
    0 	// handle to file with attributes to copy  
   );	
sprintf(szPath,"%x",hFile);
                    hwndChild = CreateWindowEx (0, (LPCSTR)"EDIT", 
                                   (LPCSTR)szPath,
                                   WS_CHILD | WS_VISIBLE | 
                                   WS_BORDER,
                                   cxChar, cyChar,
                                   200, 40,
                                   hwnd, (HMENU) 6,
                                   ((LPCREATESTRUCT) lParam)->hInstance, 
                                   NULL) ;  

Napisałem w tym temacie, ponieważ to jest .NET i z c++ ma mniej wspólnego.

0

Tu nie ma żadnego .NET.

0

Nawet jeśli piszesz w VC++ możesz pisać tak jak w czystym C++. Możesz też pisać w czystym .NET. A możesz pisać w mixed mode. Tak czy inaczej ten program to czysty C++ :)

OK, ale jeśli już zadałeś pytanie to odpowiem:
powodów może być mnóstwo, łącznie z tym że np. być może masz np. aplikację budowaną w wersji unicode a przekazujesz ANSIstring.

Z bardziej prawdopodobnych:
Czemu w wywołaniu metody masz DWORD GENERIC_WRITE,? nie wiem czemu to się kompiluje ale... nie powinno (wyrzuć DWORD).

Dalej, czemu OPEN_ALWAYS ? To znaczy że plik musi już istnieć. Prawdopodobnie chodziło ci o CREATE_ALWAYS.

Btw, ciekawy sposób na debugowanie:
CreateWindowEx (0, (LPCSTR)"EDIT", (LPCSTR)szPath, ...)
:D (dla piszących tylko w C# - chyba wiadomo o co chodzi, stworzenie okna i wyświetlenie w tytule zmiennej którą chcemy podejrzeć ;) )

0

Brak związku z .NET, do tego za cuda typu (LPSECURITY_ATTRIBUTES)CREATE_ALWAYS powinno się wieszać, ktoś tu niespecjalnie sobie poradził z czytaniem dokumentacji (to flaga zupełnie innego typu, dla innego argumentu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1