/* * Callback function to control the native Win32 API folders dialog */ static int __stdcall winGetExistDirCallbackProc (HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED && lpData != 0) { QString *initDir = (QString *)(lpData); if (!initDir->isEmpty()) { SendMessage (hwnd, BFFM_SETSELECTION, TRUE, uintptr_t( initDir->isNull() ? 0 : initDir->utf16())); } } else if (uMsg == BFFM_SELCHANGED) { TCHAR path [MAX_PATH]; SHGetPathFromIDList (LPITEMIDLIST (lParam), path); QString tmpStr = QString::fromUtf16 ((ushort*)path); if (!tmpStr.isEmpty()) SendMessage (hwnd, BFFM_ENABLEOK, 1, 1); else SendMessage (hwnd, BFFM_ENABLEOK, 0, 0); SendMessage (hwnd, BFFM_SETSTATUSTEXT, 1, uintptr_t(path)); } return 0; }
static int __stdcall winGetExistDirCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED && lpData != 0) { QString *initDir = (QString *)(lpData); if (!initDir->isEmpty()) { SendMessage(hwnd, BFFM_SETSELECTION, TRUE, LPARAM(initDir->utf16())); } } else if (uMsg == BFFM_SELCHANGED) { qt_win_resolve_libs(); if (ptrSHGetPathFromIDList) { wchar_t path[MAX_PATH]; ptrSHGetPathFromIDList(LPITEMIDLIST(lParam), path); QString tmpStr = QString::fromWCharArray(path); if (!tmpStr.isEmpty()) SendMessage(hwnd, BFFM_ENABLEOK, 1, 1); else SendMessage(hwnd, BFFM_ENABLEOK, 0, 0); SendMessage(hwnd, BFFM_SETSTATUSTEXT, 1, LPARAM(path)); } } return 0; }
/*---------------------------------------------------------------*/ LPITEMIDLIST CPidlMgr::GetNextItem ( LPCITEMIDLIST pidl ) { ATLASSERT(pidl != NULL); return LPITEMIDLIST(LPBYTE(pidl) + pidl->mkid.cb); }