[ 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! |