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

📄 dirdlg.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        src/mac/carbon/dirdlg.cpp// Purpose:     wxDirDialog// Author:      Stefan Csomor// Modified by:// Created:     1998-01-01// RCS-ID:      $Id: dirdlg.cpp,v 1.29 2006/10/14 15:44:45 SC Exp $// Copyright:   (c) Stefan Csomor// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#if wxUSE_DIRDLG#include "wx/dirdlg.h"#ifndef WX_PRECOMP    #include "wx/utils.h"    #include "wx/dialog.h"    #include "wx/cmndata.h"#endif // WX_PRECOMP#include "wx/filename.h"#include "wx/mac/private.h"#ifdef __DARWIN__    #include <Carbon/Carbon.h>#else    #include <Navigation.h>#endifIMPLEMENT_CLASS(wxDirDialog, wxDialog)static pascal void NavEventProc(                                NavEventCallbackMessage inSelector,                                NavCBRecPtr ioParams,                                NavCallBackUserData ioUserData );static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc);static pascal void NavEventProc(                                NavEventCallbackMessage inSelector,                                NavCBRecPtr ioParams,                                NavCallBackUserData ioUserData ){    wxDirDialog * data = ( wxDirDialog *) ioUserData ;    if ( inSelector == kNavCBStart )    {        if (data && !data->GetPath().empty() )        {            // Set default location for the modern Navigation APIs            // Apple Technical Q&A 1151            FSRef theFile;            wxMacPathToFSRef(data->GetPath(), &theFile);            AEDesc theLocation = { typeNull, NULL };            if (noErr == ::AECreateDesc(typeFSRef, &theFile, sizeof(FSRef), &theLocation))                 ::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);        }    }}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_parent = parent;    m_path = defaultPath;}int wxDirDialog::ShowModal(){    NavDialogRef dialog;    NavDialogCreationOptions options;    NavReplyRecord reply ;    bool disposeReply = false ;    OSStatus err = noErr;    err = NavGetDefaultDialogCreationOptions(&options);    if (err == noErr)    {        wxMacCFStringHolder message(m_message, m_font.GetEncoding());        options.message = message;        err = NavCreateChooseFolderDialog(&options, sStandardNavEventFilter , NULL,  this , &dialog);        if (err == noErr)        {            err = NavDialogRun(dialog);            if ( err == noErr )            {                err = NavDialogGetReply(dialog, &reply);                disposeReply = true ;            }        }    }    if ( err == noErr )    {        if ( reply.validRecord )        {            FSRef folderInfo;            AEDesc specDesc ;            OSErr err = ::AECoerceDesc( &reply.selection , typeFSRef, &specDesc);            if ( err != noErr )            {                m_path = wxEmptyString ;            }            else            {                folderInfo = **(FSRef**) specDesc.dataHandle;                m_path = wxMacFSRefToPath( &folderInfo ) ;                if (specDesc.dataHandle != nil)                {                    ::AEDisposeDesc(&specDesc);                }            }        }        else        {            err = paramErr ; // could be any error, only used for giving back wxID_CANCEL        }    }    if ( disposeReply )        ::NavDisposeReply(&reply);    // apparently cancelling shouldn't change m_path    if ( err != noErr && err != userCanceledErr )        m_path = wxEmptyString ;    return (err == noErr) ? wxID_OK : wxID_CANCEL ;}#endif

⌨️ 快捷键说明

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