Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / GetSaveFileName - как задать имя файла при открытии? / 25 сообщений из 52, страница 1 из 3
08.06.2017, 15:56
    #39468802
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Здравствуйте уважаемые Гуру!

Собственно, sabj.

В аналогичном диалоговом окне в С# есть возможность задать имя файла из переменной
при открытии окна.
А в С++ , в GetSaveFileName есть такая возможность?
Мои попытки поисков в структуре не увенчались успехом.
В гугле тоже не получилось найти. (может не так запрос делал...)
Я хочу сохранять изображения из массива в фал и чтобы имя файла
при открытии окна уже было записано в соответствующее поле.

И второй вопрос, в какой кодировке должно быть имя в переменной,
чтобы оно правильно записалось на диск при условии что имена могут быть
не только на латинице , но и в кирилице , а также на иврите ...

Имена будут браться из С# в DataGridViev и передаваться в DLL C++ как string .
Приниматься будут в DLL как const wchar_t*
А в гриде имена могут быть на любом языке

Заранее всех благодарю.
...
Рейтинг: 0 / 0
08.06.2017, 15:58
    #39468808
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Забыл сказать что для сохранения файла я использую API WriteFile
...
Рейтинг: 0 / 0
08.06.2017, 16:04
    #39468817
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
...
Рейтинг: 0 / 0
08.06.2017, 16:06
    #39468820
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Надо заполнить структуру OPENFILENAME
Гугл в помощь
...
Рейтинг: 0 / 0
08.06.2017, 21:33
    #39469071
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Dima T, я вообще-то обращался за помощью к Гуру.

Гуру внимательно читают посты , а не кидают сходу ссылку на MSDN
У Гуру другая миссия.

Где лежит MSDN я и сам знаю.
И прежде чем просить помощи я всегда пытаюсь сам сначала разобраться
...
Рейтинг: 0 / 0
08.06.2017, 22:04
    #39469078
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitМои попытки поисков в структуре не увенчались успехом.искал без фонарика))
MSDN::OPENFILENAME structure lpstrFile
Type: LPTSTR
The file name used to initialize the File Name edit control.
...
Рейтинг: 0 / 0
08.06.2017, 22:14
    #39469083
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
egorych, Если у с получилось проинициализировать это поле структуры,
Не сочтите за труд,
Покажите пожалуйста всего одну строчку кода.
...
Рейтинг: 0 / 0
08.06.2017, 23:03
    #39469094
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitПокажите пожалуйста всего одну строчку кода.с выньапи одной строчкой не получится ))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
const wchar_t *savefilename = L"Hello world.txt"; // что-то, что пришло из вне
...
OPENFILENAME ofn;
...
wchar_t filename[255]; // число взято от балды, никогда не знаешь, сколько надо зарезервировать :) сюда ведь ещё будет записан результат
wsprintf( filename, "%s", savefilename );
ofn.lpstrFile = LPTSTR( &filename );
...

как то так, не компилировал, мог наврать
...
Рейтинг: 0 / 0
08.06.2017, 23:35
    #39469101
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
egorych, Простите великодушно. Вы меня не совсем правильно поняли.
Повторюсь:
Если у Вас получится не только скомпилировать свой код, но и при открытии окна диалога
в поле имя файла обнаружить Hello world.txt, тогда я с благодарностью сниму шляпу
...
Рейтинг: 0 / 0
09.06.2017, 00:12
    #39469105
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitЕсли у Вас получится не только скомпилировать свой код, но и при открытии окна диалога
в поле имя файла обнаружить Hello world.txt, тогда я с благодарностью сниму шляпуну ё-моё
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
// getsavefilename_w32.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include <windows.h>
#include "resource.h"
#include <Commdlg.h>

int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
	UNREFERENCED_PARAMETER( hPrevInstance );
	UNREFERENCED_PARAMETER( lpCmdLine );

	OPENFILENAME ofn;
	const wchar_t *hello = L"hello world.txt";

	// a another memory buffer to contain the file name
	wchar_t szFile[ 255 ];
	wsprintf( szFile, L"%s", hello );

	// open a file name
	ZeroMemory( &ofn , sizeof( ofn ) );
	ofn.lStructSize = sizeof ( ofn );
	ofn.hwndOwner = NULL  ;
	ofn.lpstrFile = szFile ;
	ofn.nMaxFile = sizeof( szFile );
	ofn.lpstrFilter = L"All\0*.*\0Text\0*.TXT\0";
	ofn.nFilterIndex =1;
	ofn.lpstrFileTitle = NULL ;
	ofn.nMaxFileTitle = 0 ;
	ofn.lpstrInitialDir=NULL ;
	ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
	GetSaveFileName( &ofn );

	// Now simpley display the file name 
	MessageBox ( NULL , ofn.lpstrFile , L"File Name" , MB_OK);
	return 0;
}

приложение на C#, надеюсь, мне не придётся писать сейчас? ;)
...
Рейтинг: 0 / 0
09.06.2017, 00:32
    #39469110
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
egorych, действительно, снимаю шляпу!
Но мне нужна была всего одна строчка. Вот эта
wsprintf(szFile, L"%s", hello);
И тогда "ларчик просто открывался"
Спасибо большое!

Ну и осмелюсь спросить по поводу второго вопроса:
В какой кодировке записываются имена файлов на диске;
Мне нужно будет использовать латиницу, кирилицу и иврит
...
Рейтинг: 0 / 0
09.06.2017, 08:02
    #39469130
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitDima T, я вообще-то обращался за помощью к Гуру.

Гуру внимательно читают посты , а не кидают сходу ссылку на MSDN
У Гуру другая миссия.

Где лежит MSDN я и сам знаю.
И прежде чем просить помощи я всегда пытаюсь сам сначала разобраться
Я ссылку на гугл давал, там примеры заполнения OPENFILENAME. Собственно тоже самое что тебе egorych, но без использования юникода.

ИМХО У тебя проблема в том что ты не понимаешь как с юникодом работать, чем он отличается от ASCII-кодировок. Почитай что-нибудь на эту тему.
ArbitВ какой кодировке записываются имена файлов на диске;
Мне нужно будет использовать латиницу, кирилицу и иврит
NTFS хранит имена файлов в юникоде ( UTF-16 ) Виндовс тоже использует UTF-16 в качестве родной кодировки.
...
Рейтинг: 0 / 0
09.06.2017, 09:05
    #39469150
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitDima T, я вообще-то обращался за помощью к Гуру.

Гуру внимательно читают посты , а не кидают сходу ссылку на MSDN
У Гуру другая миссия.Какая у Гуру миссия? Завязывать шнурочки новичкам?
Тебе скинули ссылку на способ "завязывания шнурков" - учись "завязывать" самостоятельно.
...
Рейтинг: 0 / 0
09.06.2017, 09:31
    #39469162
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitМне нужно будет использовать латиницу, кирилицу и иврит
используйте явную юникод версию GetSaveFileNameW и OPENFILENAMEW
...
Рейтинг: 0 / 0
09.06.2017, 12:03
    #39469332
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitDima T, я вообще-то обращался за помощью к Гуру.

Гуру внимательно читают посты , а не кидают сходу ссылку на MSDN
У Гуру другая миссия.



Ребята, начинаем миссию "ГУРУ"!.
...
Рейтинг: 0 / 0
09.06.2017, 12:06
    #39469339
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Arbitegorych, действительно, снимаю шляпу!
Но мне нужна была всего одна строчка. Вот эта
wsprintf(szFile, L"%s", hello);
И тогда "ларчик просто открывался"
Спасибо большое!

Ну и осмелюсь спросить по поводу второго вопроса:
В какой кодировке записываются имена файлов на диске;
Мне нужно будет использовать латиницу, кирилицу и иврит

Имена файлов на диске в неизвестной кодировке, потому что это -- дело файловой системы.
А вот общаться с WinAPI ты должен в той кодировке, в которой работает приложение.
Там всё сложнее немного, чем ты себе представляешь.
...
Рейтинг: 0 / 0
09.06.2017, 12:11
    #39469351
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Dima TNTFS хранит имена файлов в юникоде ( UTF-16 ) Виндовс тоже использует UTF-16 в качестве родной кодировки.

Но это вовсе не значит, что приложение обязано общаться с WinAPI именно в UTF-16.
А вовсе и наоборот, должно общаться в той кодировке, в которой оно настроено.
Например, это может быть cp866 для консольных приложений, или cp1251 для оконных.
Это для MBCS -приложений (см. документацию на tchar.h)

Для UNICODE-приложений это обычно кодировка UTF-16.

Но это вовсе не обязательно.
...
Рейтинг: 0 / 0
09.06.2017, 12:41
    #39469384
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
MasterZivРебята, начинаем миссию "ГУРУ"!. Оффтоп:
Кто вообще завёл это определение (Гуру) в программировании? Введение экзистенциальных понятий в точных технических дисциплинах наводит на мысль, что кто-то что-то хотел втиснуть в индустрию (плохое слово, корень "индус"... отсюда, что ли, эти Гуры пошли?...), в сообщество мимо "проходной".
Кидание ссылки - это самый профессиональных ход, если не требуется каких-то технических уточнений со стороны отвечающего, которых не хватает в материале по ссылке.
Во-первых, это кратко.
Во-вторых, решает проблему (если нет, автор может вернуться за уточнениями)
В-третьих, экономит место и время. Всем.
Как могло так получится, что люди, выдающие лишние простыни текста (как я сейчас) вдруг стали экспертами?
Кстати, знаете, какая мне идея пришла, пока я всё это набирал, как надо отвечать на вопросы, если они требуют уточнения со стороны отвечающего:
- идёте к себе в блог, журнал, ещё куда-то.
- пишите вопрос и ответ с объяснениями там, в блоге/журнале
- возвращаетесь назад и оставляете ссылку на ответ в форуме
в результате, у вас +1 статья в бложике, и в следующий раз вам просто опять вызвать эту функцию оставить эту ссылку. Всё, как у программеров
...
Рейтинг: 0 / 0
09.06.2017, 12:53
    #39469403
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
MasterZivдолжно общаться в той кодировке, в которой оно настроено.
Например, это может быть cp866 для консольных приложений

Ню-ню. Удачи с использованием ОЕМ кодировки в ANSI функциях.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2017, 13:03
    #39469425
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
MasterZivА вовсе и наоборот, должно общаться в той кодировке, в которой оно настроено.
независимо от настроек компиляции, приложение может обращаться как к UNICODE, так и к ANSI версиям API функций (указанием суффикса A или W в именах функций и структур)
...
Рейтинг: 0 / 0
09.06.2017, 13:34
    #39469464
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Ребята, дорогие, ну чего вы в самом деле!
Совсем "помидорами закидали" :))

Ну захожу я сюда раз в месяц с конкретным вопросом...
Да, мне уже седьмой десяток лет...
Да, я вообще не технарь, а врач-психиатр и всю жизнь "завязываю шнурочки" и "вытираю сопельки"
всем страждущим и не сетую на это
Да. я постоянно стараюсь тренировать свои мозги - это профилактика надвигающеося маразма!
Простите меня за это!

Теперь о Гуру...
Во-первых это мое уважение к вашему Сообществу
Во-вторых Гуру - это Наставник

И благодаря вам, Гуру, я с нуля практически написал свое маленькое бизнес-приложение
на медицинскую тему
используя C# как пользовательский интерфейс, С++ как основной модуль программы (DLL)
PHP - автоматическая регистрация приложения на своем сайте, и SQL - база данных
И для меня - это еще один мой личный маленький успех в моем возрасте

Вопрос сохранения файла с именем на разных языках - последний не решенный в моем приложении.

Спасибо вам за то, что помогаете тянущимся к знаниям, независимо от их возраста!
Особая моя благодарность: Изопропил, Dimitry Sibiryakov!

Простите еще раз.
"Да не оскуднеет рука дающего"
Т
...
Рейтинг: 0 / 0
09.06.2017, 18:25
    #39469745
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Arbit
Ну захожу я сюда раз в месяц с конкретным вопросом...
Да, мне уже седьмой десяток лет...
Да, я вообще не технарь, а врач-психиатр и всю жизнь "завязываю шнурочки" и "вытираю сопельки"



Блин, предупреждать надо!
...
Рейтинг: 0 / 0
09.06.2017, 19:37
    #39469779
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
MasterZiv,
Вы сожалеете что оказывали мне действенную помощь?
Я ведь не от нечего делать этим занимаюсь.
И мои скромные результаты дают мне добавку к пенсии ... кстати

Так что не сожалейте, СПАСИБО всем! :)
...
Рейтинг: 0 / 0
09.06.2017, 19:46
    #39469783
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
ArbitMasterZiv,
Вы сожалеете что оказывали мне действенную помощь?
Я ведь не от нечего делать этим занимаюсь.
И мои скромные результаты дают мне добавку к пенсии ... кстати

Так что не сожалейте, СПАСИБО всем! :)
Странный ты. Как будто тут сидят и ждут продвинутых пенсионеров. Тут проходит 100500 студентов желающих что бы им на халяву порешали их курсовые, потом чтобы за них поработали когда они на работу устроятся. Ты просто затерялся в этой толпе. MasterZiv правильно написал - обозначь себя и отношение в тебе будет другое.
...
Рейтинг: 0 / 0
09.06.2017, 20:00
    #39469789
Arbit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetSaveFileName - как задать имя файла при открытии?
Dima T,
Спасибо всем за понимание !!!
А беспокоить вопросами буду только когда своих мозгов не хватит разобраться.
Общение с умными людьми обогащает в прямом и переносном смысле :))
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / GetSaveFileName - как задать имя файла при открытии? / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]