⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirdlg.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        src/mac/classic/dirdlg.cpp// Purpose:     wxDirDialog// Author:      Stefan Csomor// Modified by:// Created:     1998-01-01// RCS-ID:      $Id: dirdlg.cpp,v 1.10 2006/05/28 23:32:03 VZ Exp $// Copyright:   (c) Stefan Csomor// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#ifdef __BORLANDC__    #pragma hdrstop#endif#include "wx/dirdlg.h"#ifndef WX_PRECOMP    #include "wx/utils.h"    #include "wx/dialog.h"    #include "wx/cmndata.h"#endif // WX_PRECOMP#include "wx/mac/private.h"#ifdef __DARWIN__  #include <Carbon/Carbon.h>#else  #include <Navigation.h>#endifIMPLEMENT_CLASS(wxDirDialog, wxDialog)wxDirDialog::wxDirDialog(wxWindow *parent,                         const wxString& message,                         const wxString& defaultPath,                         long style,                         const wxPoint& WXUNUSED(pos),                         const wxSize& WXUNUSED(size),                         const wxString& WXUNUSED(name)){    wxASSERT_MSG( NavServicesAvailable() , wxT("Navigation Services are not running") ) ;    m_message = message;    m_windowStyle = style;    m_parent = parent;    m_path = defaultPath;}int wxDirDialog::ShowModal(){    NavDialogOptions        mNavOptions;    NavObjectFilterUPP        mNavFilterUPP = NULL;    NavPreviewUPP            mNavPreviewUPP = NULL ;    NavReplyRecord            mNavReply;    AEDesc*                    mDefaultLocation = NULL ;    bool                    mSelectDefault = false ;    ::NavGetDefaultDialogOptions(&mNavOptions);    mNavFilterUPP    = nil;    mNavPreviewUPP    = nil;    mSelectDefault    = false;    mNavReply.validRecord                = false;    mNavReply.replacing                    = false;    mNavReply.isStationery                = false;    mNavReply.translationNeeded            = false;    mNavReply.selection.descriptorType = typeNull;    mNavReply.selection.dataHandle        = nil;    mNavReply.keyScript                    = smSystemScript;    mNavReply.fileTranslation            = nil;    // Set default location, the location    //   that's displayed when the dialog    //   first appears    if ( mDefaultLocation ) {        if (mSelectDefault) {            mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;        } else {            mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;        }    }    OSErr err = ::NavChooseFolder(                        mDefaultLocation,                        &mNavReply,                        &mNavOptions,                        NULL,                        mNavFilterUPP,                        0L);                            // User Data    if ( (err != noErr) && (err != userCanceledErr) ) {        m_path = wxEmptyString ;        return wxID_CANCEL ;    }    if (mNavReply.validRecord) {        // User chose a folder        FSSpec    folderInfo;        FSSpec  outFileSpec ;        AEDesc specDesc ;        OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);        if ( err != noErr ) {            m_path = wxEmptyString ;            return wxID_CANCEL ;        }        folderInfo = **(FSSpec**) specDesc.dataHandle;        if (specDesc.dataHandle != nil) {            ::AEDisposeDesc(&specDesc);        }//            mNavReply.GetFileSpec(folderInfo);            // The FSSpec from NavChooseFolder is NOT the file spec            // for the folder. The parID field is actually the DirID            // of the folder itself, not the folder's parent, and            // the name field is empty. We must call PBGetCatInfo            // to get the parent DirID and folder name        Str255        name;        CInfoPBRec    thePB;            // Directory Info Parameter Block        thePB.dirInfo.ioCompletion    = nil;        thePB.dirInfo.ioVRefNum        = folderInfo.vRefNum;    // Volume is right        thePB.dirInfo.ioDrDirID        = folderInfo.parID;        // Folder's DirID        thePB.dirInfo.ioNamePtr        = name;        thePB.dirInfo.ioFDirIndex    = -1;    // Lookup using Volume and DirID        err = ::PBGetCatInfoSync(&thePB);        if ( err != noErr ) {            m_path = wxEmptyString;            return wxID_CANCEL ;        }                                            // Create cannonical FSSpec        ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,                       name, &outFileSpec);        // outFolderDirID = thePB.dirInfo.ioDrDirID;        m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;        return wxID_OK ;    }    return wxID_CANCEL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -