Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > GetOpenFileName()


Автор: Belous 31.1.2017, 13:02
Делаю стандартный диалог "Открыть файл", при нажатии на кнопку Toolbar "Open" диалог отображается, при выборе из меню - нет, и при нажатии горячей клавиши Ctrl + O тоже - нет.
Почему ?

Код


void FormOpenFile(HWND hwnd)
{
    OPENFILENAME ofn;
    char filename[MAX_PATH];
    memset(&ofn, 0, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFilter = "Text files (*.txt)\0*.txt\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = filename;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    ofn.lpstrDefExt = "txt";
    if (GetOpenFileName(&ofn))
    {
        MessageBox(hwnd, "OPEN_FILE OK", "Message", MB_OK);
    }
}







Автор: Belous 31.1.2017, 13:22
Здесь на форуме нашел решение

Код

void FormOpenFile(HWND hwnd)
{
    OPENFILENAME ofn;
    char filename[MAX_PATH];

    filename[0] = 0;         // <-- это добавить, тогда работает ! 

    memset(&ofn, 0, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFilter = "Text files (*.txt)\0*.txt\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = filename;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    ofn.lpstrDefExt = "txt";
    if (GetOpenFileName(&ofn))
    {
        MessageBox(hwnd, "OPEN_FILE OK", "Message", MB_OK);
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)