[ stargazer @ 24.02.2006. 12:41 ] @
pozdrav ljudi, ovo mi je prvi post, pa ako neko može da mi pomogne

Radim PlatformSDK projekat u MSVS 2005 okruženju

Pri obradi poruke BN_CLICKED poziva se moja funkcija GetDirectory ( i nšta drugo se ne radi u okviru nje ) u kojoj treba da pozove SHBrowseForFolder i onda da parsuje pidl ( LPITEMIDLIST ) sa SHGetPathFromIDList. Evo kod :

BOOL GetDirectory(LPCTSTR prethodni)
{
BROWSEINFO bi;
LPITEMIDLIST pidl;
char szBase[MAX_PATH];
char * izabrano = NULL;

if (!prethodni || !(*prethodni))
GetCurrentDirectory(MAX_PATH, szBase);
else
lstrcpy(szBase, prethodni);

bi.hwndOwner = hGlavniProzor;
bi.pidlRoot = NULL; // Desktop
bi.pszDisplayName = izabrano;
bi.lpszTitle = "Izabrati direktorijum :";
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
bi.lpfn = &BFFProc;
bi.lParam = (LPARAM)szBase;
bi.iImage = 0;

pidl = SHBrowseForFolder(&bi);

if (pidl)
{
if (SHGetPathFromIDList(pidl, izabrano)) // ovde prijavi Access violation
{
lpMalloc->Free(pidl);
SendMessage(hPutanjaEdit, WM_SETTEXT, 0, (LPARAM)izabrano);
return TRUE;
}
}

return FALSE;
}

Naravno u WinMain sam inicirao lpMalloc globalnu sa SHGetMalloc ( hPutanjaEdit je handle EDIT kontrole ). BFFProc je Hook koji samo menja izabrani dir u dialogu :

int CALLBACK BFFProc(HWND hWnd, UINT Msg, LPARAM lParam, LPARAM lpData)
{
if (Msg == BFFM_INITIALIZED)
SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lpData);

return 0;

UNREFERENCED_PARAMETER(lParam);
}

Sve kontrole nalaze se na istom prozoru ( hGlavniProzor ).

Da li neko može da mi kaže o čemu se radi?

Nadam se da sam bio dovoljno precizan u vezi pitanja i
Hvala unapred!
[ stargazer @ 27.02.2006. 15:05 ] @
E ljudi, hvala na pregledanju, ali kada je neko idiot, onda mu nema pomoći.

Rešio sam problem...
[ idb @ 27.02.2006. 15:15 ] @
Hajde podeli resenj sa nama,...
Ali ako pogledas svoj predhodni post ti nisi ni postavio pitanje - samo si izlozi kod koji ti pravi problem.
Na kraju je samo trebalo i konkretno pitanje ...
[ stargazer @ 27.02.2006. 18:25 ] @
Pitanje se nalazi u kodu ( linija u kojoj se koristi SHGetPathFromIDList ) da mi prijavljuje Access Violation pri upotrebi iste.

Elem, MSDN Online je prava stvar za onog ko radi MSVS ili sl.

Rešenje :
Potrebno je pozvati OleInitialize() pre poziva problematične funkcije.
Ali morala je promenljiva izabrano da se stavi kao :
char izabrano[MAX_PATH];

To mu to dođe........

PS : Ako ti nije jasno pitanje, zašto tražiš odgovor?????
[ idb @ 28.02.2006. 08:47 ] @
Citat:
PS : Ako ti nije jasno pitanje, zašto tražiš odgovor?????

Problem si na neki nacin dobro opisao, sto je OK i potrebno, ali je falilo samo jos i konkretno pitanje.
Da si postavio pitanje ja bih procitao i tvoj kod i uputio te ovde:
http://www.elitesecurity.org/tema/58373/0#373386 , nisi ti prvi koji je imao ovaj problem.
BTW, ja sam dva puta procitao tvoj prvi post (ali samo tekst) - trazeci problem, a tek sada i sam procitao i kod.

Zasto trazim odgovor?
Ako ovde iznosis problem i trazis pomoc, onda je u redu da i ti pruzis pomoc drugima, mozda jos neko ima taj problem.

I jedan savet: stavi kod izmedju code tagova da bi bio citljiviji, ovako se teze cita pa ga mnogi i ne pogledaju.
Pozdrav idb.