0

我正在尝试使用带有 GetOpenFileName 的模板但没有成功。我在 MSDN 或网络上发现的关于这个主题的内容很少。我的尝试基于我在这里看到的

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

我的代码如下。TEMPLATE 注释显示了我对模板尝试的代码 b4 进行更改的位置;主要是去除某些线条。显示了正常的 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
4

1 回答 1

0

您必须将OPENFILENAME标志与|,而不是||

于 2010-08-29T20:07:14.263 回答