好像要用到OPENFILENAME,OPENFILENAME有很多值,不明白,求解释,希望能附上实现代码,谢谢,改天吃饭

解决方案 »

  1.   

    int playlist_write()
    {
        OPENFILENAME fn;
        BOOL bResult;
        char pcOutputName[MAX_PATH] = "";    // Get filename to save
        fn.lStructSize = sizeof(OPENFILENAME);
        fn.hwndOwner = windows.m_hWndPlaylist;
        fn.hInstance = NULL;
        fn.lpstrFilter = "M3U Playlist Files (*.m3u)\0*.m3u\0PLS Playlist files (*.pls)\0*.pls\0";
        fn.lpstrCustomFilter = NULL;
        fn.nMaxCustFilter = 0;
        fn.nFilterIndex = 0;
        fn.lpstrFile = pcOutputName;
        fn.nMaxFile = MAX_PATH;
        fn.lpstrFileTitle = NULL;
        fn.nMaxFileTitle = 0;
        fn.lpstrInitialDir = options.last_used_directory;
        fn.lpstrTitle = NULL;
        fn.Flags = OFN_HIDEREADONLY
                   | OFN_EXPLORER
                   | OFN_OVERWRITEPROMPT
                   | OFN_PATHMUSTEXIST
                   | OFN_ENABLESIZING;
        fn.nFileOffset = 0;
        fn.nFileExtension = 0;
        fn.lpstrDefExt = "m3u";
        fn.lCustData = 0;
        fn.lpfnHook = NULL;
        fn.lpTemplateName = NULL;
        bResult = GetSaveFileName(&fn);
        if(bResult == FALSE)
            return FALSE;    return TRUE;
    }
      

  2.   

    楼上初始化的参数太多了,大多数人要求简单,大多参数用不着。这样也就够了。
    OPENFILENAME ofn;
    TCHAR szPath[MAX_PATH];
    ZeroMemory(szPath, sizeof(szPath));
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFilter = TEXT("应用程序\0*.exe\0*.*\0*.*\0\0");
    ofn.lpstrFile = szPath;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_DONTADDTORECENT | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST;
    if (GetOpenFileName(&ofn)) {
    MessageBox(hwnd, szPath, TEXT("提示"), MB_OK);
    }
      

  3.   

    ZeroMemory将参数设置为0,直接将 内存设置为0 
      

  4.   

    MSDN上的例子代码~OPENFILENAME ofn;       // common dialog box structure
    char szFile[260];       // buffer for file name
    HWND hwnd;              // owner window
    HANDLE hf;              // file handle// Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    //
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    // use the contents of szFile to initialize itself.
    //
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;// Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) 
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
            0, (LPSECURITY_ATTRIBUTES) NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
            (HANDLE) NULL);
      

  5.   


    怎么我的MSDN没有这个例子
      

  6.   

    http://www.rupeng.com/forum/thread-261-1-1.html
    如鹏网老杨教程
      

  7.   

    ZeroMemory 是个宏。是将第一、二个参数传递 memset 的第一、三个参数,memset 第二个参数 0。
      

  8.   

    学习windows编程的关键之一要会用msdn
      

  9.   

    哪位高手知道如何一次性选择上万的文件?我试过了,用CFlieDialog的话,无论如何设置,都是达不到目的的,最多一次性选择一千多文件!