Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, Аноним, Вы писали:
А>>Да у меня все просто — сохранить содержимое в файл. Никакой отправки на сервер — все локально.
CS>Я могу добавить <input type="file-name" /> — его значением будет имя файла, а не его содержимое.
CS>Соотв. можно разрешить программную установку оного. Пойдет?
Добрый день!
Я сам столкнулся с подобногй задачей несколько дней назад.
Решение — "<input type="file-name" />" для имени файла подойдет идеально.
Хотелось бы еще решение вида "<input type="dir-name" />" для выбора директории (именно это понадобилось мне).
Я вышел из положения созданием "буттона", при нажатии на который открывался стандартный виндовый "GetOpenFileName(&ofn)"
а выбранный путь записывался в "едит".
Что-то вроде:
void OnSelectPath( void )
{
// выбрать каталог
char path[MAX_PATH];
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFilter = "Swf-files\0*.swf\0All files\0*.*\0\0";
ofn.nFilterIndex = 1;
ofn.lpstrFile = path;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrInitialDir = mSetValues.GetFullResPath();
ofn.lpstrTitle = "Выберите файл *.swf";
ofn.Flags = OFN_ENABLESIZING | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&ofn))
{
std::string temp;
// выделяем только каталог
temp.append(ofn.lpstrFile, ofn.nFileOffset - 1);
htmlayout::dom::element he = mHtmlRoot.find_first("#PathToRes");
if (he.is_valid())
{
json::value value;
value = aux::a2w(temp.c_str()).operator const wchar_t*();
he.set_value(value);
this->PostMessage(WM_APPLY_PARAMETERS);
}
}
}