DialogBox,WinApi i GetOpenFileName

0

Witam, chcialbym otworzyc sobie standardowe windowsowe okienko do otwierania plikow. Do tego sluzy funkcja GetOpenDialog w ktorej trzeba podac
strukture OPENFILENAME ktora przedstawia sie tak:
typedef struct tagOFN { // ofn
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCTSTR lpstrFilter;
LPTSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPTSTR lpstrFile;
DWORD nMaxFile;
LPTSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCTSTR lpstrInitialDir;
LPCTSTR lpstrTitle;
DWORD Flags;

WORD          nFileOffset; 
WORD          nFileExtension; 
LPCTSTR       lpstrDefExt; 
DWORD         lCustData; 
LPOFNHOOKPROC lpfnHook; 
LPCTSTR       lpTemplateName; 

} OPENFILENAME;

No i niestety mimo ze przekazuje do tej funkcji swoja strukture to okno sie nie pokazuje. SPrawdzilem za pomoca funkcji CommDlgExtendedError
gdzie tkwi problem i okazalo sie ze podaje zly rozmiar lStructSize. I akurat to by sie zgadzalo bo ja nie mam pojecia jakirozmiar struktury podac?
W ogole o jaka tu strukture chodzi? w Win32.hlp mam tylko tyle.
lStructSize
Specifies the length, in bytes, of the structure.

Ale jakiej struktury? Czy ja mam zliczyc ile zajmuja w pamieci wszystkie inne uzyte parametry tej struktury i to tam podac?
Pogubilem sie w tym..

Moze ktos mi cos podpowie?
Z gory dziekuje za poswiecony czas,

Wodzu

0

A nie czasem GetOpenFileName(), a jako rozmiar struktury podaj sizeof(OPENFILENAME)

0

Tak masz racje, pomylilo mi sie:)

ZRobilem tak jak mowisz ale wtedy program misie wykrzacza w trakcie dzialania i wywoalania tej funkcji...:/

0

Maly przykladzik:

#include <windows.h>

void main(void)
{
  OPENFILENAME struktura = {0};
  char aktualnyFolder[MAX_PATH] = {0};
  char nazwaPliku[MAX_PATH] = {0};

  GetCurrentDirectory(MAX_PATH, aktualnyFolder);

  struktura.lStructSize = sizeof(OPENFILENAME);
  struktura.hwndOwner = GetDesktopWindow();
  struktura.lpstrFile = nazwaPliku;
  struktura.nMaxFile = MAX_PATH;
  struktura.lpstrInitialDir = aktualnyFolder;
  struktura.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_PATHMUSTEXIST;

  if (GetOpenFileName(&struktura))
   MessageBox(GetDesktopWindow(), nazwaPliku, "Wybrano", MB_OK);
}
0

Slicznie dziekuje za pomoc,

Swoaj droga bede musial sprawdzic gdzie ja skopalem sprawe...:/

Pozdrawiam,

Wodzu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.