Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带模板和挂钩的Windows API GetOpenFileName_Windows_Templates_Getopenfilename - Fatal编程技术网

带模板和挂钩的Windows API GetOpenFileName

带模板和挂钩的Windows API GetOpenFileName,windows,templates,getopenfilename,Windows,Templates,Getopenfilename,我试图使用带有GetOpenFileName的模板,但没有成功。我在MSDN或网络上几乎没有找到关于这个主题的内容。我的尝试是基于我在这里看到的 我的代码如下。模板注释显示了我在模板尝试中对代码b4所做的更改;主要是删除某些行。将显示正常的Windows资源管理器类型open Windows,但没有我希望使用模板进行的添加。我根本不确定钩子函数中应该包含什么,但我知道它不会被调用,因为我在那里设置了断点 // Global variable OPENFILENAME IFN; //

我试图使用带有GetOpenFileName的模板,但没有成功。我在MSDN或网络上几乎没有找到关于这个主题的内容。我的尝试是基于我在这里看到的

我的代码如下。模板注释显示了我在模板尝试中对代码b4所做的更改;主要是删除某些行。将显示正常的Windows资源管理器类型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,而不是
|

OMG!至少现在这里有一个例子。谢谢。知道为什么桌面、网络等按钮没有出现吗?#定义_WIN32_WINNT 0x0500,然后再包含windows标题(称为位置栏)没有乐趣。可能是因为我使用的是旧的sdk或旧的visual c,但本文暗示您不能使用places栏和钩子过程。好的,明白了!立即移动定义b4窗口。h成功了。这将向openfilename结构添加更多字段,包括FlagsEx。