Вопрос

Я пытаюсь использовать шаблон с GetopenFilename без успеха. Я нашел очень мало на этой теме в MSDN или в Интернете. Я основал свою попытку того, что я увидел здесь

http://visual-c.itags.org/visual-c-c++/77687/

Мой код следует. Шаблон комментариев показывают, где я внес изменения в код B4 попытки шаблона; в основном для удаления определенных строк. Отображается обычные Windows Explorer Type Open Windows, но без добавок, которые я хочу сделать с шаблоном. Я совсем не уверен, что должно быть в функции крючка, но я знаю, что это не вызывается, так как я устанавливаю точку перерыва.

// Global variable

OPENFILENAME    IFN;

// In WndProc

    case WM_CREATE:
        IFN.hInstance = ((LPCREATESTRUCT)lParam)->hInstance;    // TEMPLATE
        IFN.hwndOwner = hWnd;               // TEMPLATE
        break;

// In WndProc menu processing

    case IDM_INPUT_FILE:
    {
//      OPENFILENAME    IFN;                        // TEMPLATE
        strcpy (szFile,"NEWEXPORT.GED");
        IFN.lStructSize     = sizeof(IFN);
//      IFN.hwndOwner       = hWnd;                 // TEMPLATE
//      IFN.hInstance       = NULL;                 // TEMPLATE
        IFN.lpstrFilter     = "All\0*.*\0GEDCOM\0*.GED\0";
        IFN.nFilterIndex    = 2;
        IFN.lpstrCustomFilter   = NULL;
        IFN.lpstrFile       = szFile;
        IFN.nMaxFile        = 510;
        IFN.lpstrFileTitle  = NULL;
        IFN.lpstrInitialDir = NULL;
        IFN.lpstrTitle      = NULL;
        IFN.Flags       = OFN_FILEMUSTEXIST || OFN_PATHMUSTEXIST || OFN_EXPLORER || OFN_ENABLETEMPLATE || OFN_ENABLEHOOK ; // TEMPLATE
        IFN.lpstrDefExt     = NULL;
        IFN.lpfnHook        = FileAddOn;                // TEMPLATE NULL;
        IFN.lpTemplateName  = MAKEINTRESOURCE(IDD_FILEADDON);   // TEMPLATE

        if (!GetOpenFileName(&IFN))
        {
            Beep (1000,500);
            break;
        }

// **************** Hook function

UINT_PTR CALLBACK FileAddOn (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_INITDIALOG:
                return TRUE;

        case WM_COMMAND:
            if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
            {
                EndDialog(hDlg, LOWORD(wParam));
                return TRUE;
            }
            break;
    }
    return TRUE;
}

// IDD_FILEADDON was made with the visual C dialog editor and has the following properties
// Style=Child, Border=none,clip siblings,3D look
Это было полезно?

Решение

Вы должны ИЛИ флаги OpenFileName с |, нет ||

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top