{{notification.text}}

MirGames

17.09.08 21:26
0
Привет всем!
Нужен пример системных диалогов для сохранения и загрузки файлов на winapi.
В палитре компонентов Delphi 5..7 VCL они есть во вкладке диалоги.
Может делал кто или документация есть???
#1
17.09.08 22:00
0
Смотри GetSaveFileName() и GetOpenFileName() в commdlg32.dll.
#2
17.09.08 22:03
0
Код
OPENFILENAME ofn;       // common dialog box structure
char szFile[260];       // buffer for file name
HWND hwnd;              // owner window
HANDLE hf;              // file handle

// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
//
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
//
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

// Display the Open dialog box.

if (GetOpenFileName(&ofn)==TRUE)
    hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
        0, (LPSECURITY_ATTRIBUTES) NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        (HANDLE) NULL);


Код
The GetOpenFileName function creates an Open dialog box that lets the user specify the drive, directory, and the name of a file or set of files to open.

Syntax

BOOL GetOpenFileName(          LPOPENFILENAME lpofn
);
Parameters

lpofn
[in, out] Pointer to an OPENFILENAME structure that contains information used to initialize the dialog box. When GetOpenFileName returns, this structure contains information about the user's file selection.

ну дальше думаю сам разберешься...
#3
17.09.08 22:08
0
Хм....а я всегда думал что это шеллапи...
#4
18.09.08 03:15
0
Спасибо всем! Но чет неполучается...
Если использовать CommDlg.pas (способ Drako) все компилится
и ничего не выводится в итоге :)
А как это вызвать с shellapi я невкурсе... Буду пробовать..

Может кто дать работающий пример???
#6
18.09.08 04:26
0
XProger
Да спасибо! Все заработало! Но вот вопрос:

У меня на компьютере несколько ОС стоит...
В Windows XP все работает замечательно...
И предыдущий способ тож заработал
В Wndows 98SE все компилируется, но игнорируется... не работает...
В чем может быть дело???
#7
18.09.08 12:36
0
дело в win98 )
#8
18.09.08 15:51
0
ra1n
Просто в 9X это как-то по другому реализовано скорее всего,
иначе чем в NT 4 (2000),5 (XP) я думаю...
Я за тотальную совместимость просто.
Пишу программу патчер - мне нужно чтобы везде работало.
Кстати в библиотеке KOL + MCK диалоги прекрасно работают.
Нужно порыться в KOL исходняках...
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}