Привет, в поиске не нашел, так что напишу тут.
Нужно вызвать окно, по типу как open, или browse или сохранить как.
Грубо говоря что бы дать пользователю самому показать где находиться файл, а потом этот путь сохранить.
У нас в функциях такого нет, вроде как должна работать функция GetOpenFileName() из COMDLG32.DLL
В интернетах нашел, что нужно еще вроде как правильно заполнить структуру
Спойлер (Отобразить)Спасибо вот эта функция работает GetOpenFileName ()
Но там оказывается надо было структуру заполнять.
Вот так работает:
CODE:
OPENFILENAMEA ofn;
char filename[256]={0};
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd_; // не обязательно
ofn.lpstrFilter = "Bitmap Files (*.bmp)\0*.bmp\0All Files (*.*\0*.*\0\0";
ofn.lpstrFile = filename;
ofn.nMaxFile = 256;
ofn.lpstrTitle = "Browse";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
GetOpenFileNameA(&ofn);
std::cout << "\nоткрытый файл=" << filename;
И у нас на форуме нашел в теме про external
Спойлер (Отобразить)Заполнение структуры для передачи в виде параметра в GetSaveFileNameA.. Используется COMDLG32.
CODE:external(VOID, "GetSaveFile", "GetSaveFileNameA", "COMDLG32.DLL");
char b[100];
strcpy(#b[0], "Все файлы такого типа..");
char a[76];
for (int n=0; n<76; n++)a[n]=0;
writeaddress(76, address(#a[0]));
writeaddress(0, address(#a[4]));
writeaddress(0, address(#a[8]));
writeaddress(address(#b[0]), address(#a[12]));
writeaddress(0, address(#a[16]));
writeaddress(1634928, address(#a[20]));
writeaddress(1000, address(#a[24]));
writeaddress(0, address(#a[28]));
writeaddress(0, address(#a[32]));
writeaddress(0, address(#a[36]));
writeaddress(6148, address(#a[40]));
GetSaveFile(address(#a[0]));
Главная проблема правильно заполнить структуру, указатель на которую надо передать в виде параметра функции..
А теперь вопрос, что это вообще такое, и как это правильно готовить :S