CFile file;
file.Open("otkroy menya pogalusto.txt", CFile::modeCreate | CFile::modeWrite));
file.Close();
Rabota s faylami.
Kak mogno otkrit file naprimer s pomohyu classa
"CFile", yesli yego imya sodergit odin ili neskolko probelov ?
naprimer: "otkroy menya pogalusto.txt"
Цитата:
Originally posted by scanf
Vopros takoy.
Kak mogno otkrit file naprimer s pomohyu classa
"CFile", yesli yego imya sodergit odin ili neskolko probelov ?
naprimer: "otkroy menya pogalusto.txt"
Vopros takoy.
Kak mogno otkrit file naprimer s pomohyu classa
"CFile", yesli yego imya sodergit odin ili neskolko probelov ?
naprimer: "otkroy menya pogalusto.txt"
А в чем проблема? Это прекрасно работает:
Код:
Цитата:
Originally posted by srd
А в чем проблема? Это прекрасно работает:
А в чем проблема? Это прекрасно работает:
Код:
CFile file;
file.Open("otkroy menya pogalusto.txt", CFile::modeCreate | CFile::modeWrite));
file.Close();
file.Open("otkroy menya pogalusto.txt", CFile::modeCreate | CFile::modeWrite));
file.Close();
Da kogda ti sozdayosh fayle to vsyo rabotayet normalno no kogda otkrivayesh suhestvuyuhiy on otkrivayet bog znayet chto. :x
Цитата:
Originally posted by scanf
Da kogda ti sozdayosh fayle to vsyo rabotayet normalno no kogda otkrivayesh suhestvuyuhiy on otkrivayet bog znayet chto. :x
Da kogda ti sozdayosh fayle to vsyo rabotayet normalno no kogda otkrivayesh suhestvuyuhiy on otkrivayet bog znayet chto. :x
Странно, все работает замечательно. Покажи свой код.
Цитата:
Originally posted by srd
Странно, все работает замечательно. Покажи свой код.
Странно, все работает замечательно. Покажи свой код.
Blin vdrug stalo rabotat naverno chtoto s Windows.
No vseravno spasibo za uchastiye. :)
Da ti ne znayesh sluchayno kak mogno sdelat ili vizvat menyu dlya vibora papki ne zaprashivayuheye imya fayla (vrode kak poyavlyayetsya u WinZip dlya deystviya "Extract")
Код:
class Folder_browser {
public:
Folder_browser(void);
bool show(CString &folder, const TCHAR *title = 0,
const TCHAR *initial_folder = 0,
UINT flags = BIF_BROWSEINCLUDEFILES);
private:
BROWSEINFO bi;
TCHAR display_name[MAX_PATH];
static int CALLBACK callback(HWND hwnd, UINT msg, LPARAM param,
LPARAM data);
};
public:
Folder_browser(void);
bool show(CString &folder, const TCHAR *title = 0,
const TCHAR *initial_folder = 0,
UINT flags = BIF_BROWSEINCLUDEFILES);
private:
BROWSEINFO bi;
TCHAR display_name[MAX_PATH];
static int CALLBACK callback(HWND hwnd, UINT msg, LPARAM param,
LPARAM data);
};
Файл browser.cpp
Код:
#include "browser.h"
Folder_browser::Folder_browser(void)
{
memset(&bi, 0, sizeof(bi));
bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();
bi.lpfn = callback;
bi.pszDisplayName = display_name;
}
int Folder_browser::callback(HWND hwnd, UINT msg, LPARAM param, LPARAM data)
{
if (msg == BFFM_INITIALIZED) {
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, data);
}
return 0;
}
bool Folder_browser::show(CString &folder,
const TCHAR *title,
const TCHAR *initial_folder,
UINT flags)
{
bi.lParam = reinterpret_cast<LPARAM>(initial_folder);
bi.lpszTitle = title;
bi.ulFlags = flags;
if (ITEMIDLIST *pidl = SHBrowseForFolder(&bi)) {
TCHAR *buffer = folder.GetBuffer(MAX_PATH);
SHGetPathFromIDList(pidl, buffer);
folder.ReleaseBuffer();
IMalloc *malloc;
SHGetMalloc(&malloc);
malloc->Free(pidl);
malloc->Release();
}
return false;
}
Folder_browser::Folder_browser(void)
{
memset(&bi, 0, sizeof(bi));
bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();
bi.lpfn = callback;
bi.pszDisplayName = display_name;
}
int Folder_browser::callback(HWND hwnd, UINT msg, LPARAM param, LPARAM data)
{
if (msg == BFFM_INITIALIZED) {
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, data);
}
return 0;
}
bool Folder_browser::show(CString &folder,
const TCHAR *title,
const TCHAR *initial_folder,
UINT flags)
{
bi.lParam = reinterpret_cast<LPARAM>(initial_folder);
bi.lpszTitle = title;
bi.ulFlags = flags;
if (ITEMIDLIST *pidl = SHBrowseForFolder(&bi)) {
TCHAR *buffer = folder.GetBuffer(MAX_PATH);
SHGetPathFromIDList(pidl, buffer);
folder.ReleaseBuffer();
IMalloc *malloc;
SHGetMalloc(&malloc);
malloc->Free(pidl);
malloc->Release();
}
return false;
}
Вот, за пару минут слепил учебный класс :)
Надо включать заголовочный файл shlobj.h и библиотеку shell32.lib
Цитата:
Originally posted by srd
Файл browser.h
Вот, за пару минут слепил учебный класс :)
Надо включать заголовочный файл shlobj.h и библиотеку shell32.lib
Файл browser.h
Код:
class Folder_browser {
public:
Folder_browser(void);
bool show(CString &folder, const TCHAR *title = 0,
const TCHAR *initial_folder = 0,
UINT flags = BIF_BROWSEINCLUDEFILES);
private:
BROWSEINFO bi;
TCHAR display_name[MAX_PATH];
static int CALLBACK callback(HWND hwnd, UINT msg, LPARAM param,
LPARAM data);
};
public:
Folder_browser(void);
bool show(CString &folder, const TCHAR *title = 0,
const TCHAR *initial_folder = 0,
UINT flags = BIF_BROWSEINCLUDEFILES);
private:
BROWSEINFO bi;
TCHAR display_name[MAX_PATH];
static int CALLBACK callback(HWND hwnd, UINT msg, LPARAM param,
LPARAM data);
};
Вот, за пару минут слепил учебный класс :)
Надо включать заголовочный файл shlobj.h и библиотеку shell32.lib
Prosto net slow. Spasibo.
Yesli ya chegoto ponimayu v Visual C++ to zdes ti isspolzoval tolko funkzii Windows API dlya vizova okna ? V MFC vrode stolko koda dlya etogoge pisat ne nugno ?
Да, окно выбора каталога создается средствами WINAPI. Из MFC здесь используется только класс CString и функция получения дескриптора главного окна, т.е. от этих зависимостей легко избавиться. Просто в MFC нет соответствующего класса-оболочки (или я его просто не нашел).