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

📄 msgdlg.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        src/mac/carbon/msgdlg.cpp// Purpose:     wxMessageDialog// Author:      Stefan Csomor// Modified by:// Created:     04/01/98// RCS-ID:      $Id: msgdlg.cpp,v 1.32 2006/04/28 12:43:57 ABX Exp $// Copyright:   (c) Stefan Csomor// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#include "wx/msgdlg.h"#ifndef WX_PRECOMP    #include "wx/intl.h"    #include "wx/app.h"#endif#include "wx/mac/uma.h"IMPLEMENT_CLASS(wxMessageDialog, wxDialog)wxMessageDialog::wxMessageDialog(    wxWindow *parent, const wxString& message, const wxString& caption,    long style, const wxPoint& pos ){    m_caption = caption;    m_message = message;    m_parent = parent;    SetMessageDialogStyle(style);}int wxMessageDialog::ShowModal(){    int resultbutton = wxID_CANCEL;    const long style = GetMessageDialogStyle();    wxASSERT_MSG( (style & 0x3F) != wxYES, wxT("this style is not supported on Mac") );    AlertType alertType = kAlertPlainAlert;    if (style & wxICON_EXCLAMATION)        alertType = kAlertNoteAlert;    else if (style & wxICON_HAND)        alertType = kAlertStopAlert;    else if (style & wxICON_INFORMATION)        alertType = kAlertNoteAlert;    else if (style & wxICON_QUESTION)        alertType = kAlertCautionAlert;#if TARGET_API_MAC_OSX    CFStringRef defaultButtonTitle = NULL;    CFStringRef alternateButtonTitle = NULL;    CFStringRef otherButtonTitle = NULL;    wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );    wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );    wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );    wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );    wxMacCFStringHolder cfOKString( _("OK") , m_font.GetEncoding()) ;    wxMacCFStringHolder cfCancelString( _("Cancel"), m_font.GetEncoding() );    int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };    if (style & wxYES_NO)    {        if ( style & wxNO_DEFAULT )        {            defaultButtonTitle = cfNoString;            alternateButtonTitle = cfYesString;            buttonId[0] = wxID_NO;            buttonId[1] = wxID_YES;        }        else        {            defaultButtonTitle = cfYesString;            alternateButtonTitle = cfNoString;            buttonId[0] = wxID_YES;            buttonId[1] = wxID_NO;        }        if (style & wxCANCEL)        {            otherButtonTitle = cfCancelString;            buttonId[2] = wxID_CANCEL;        }    }    else    {        // the MSW implementation even shows an OK button if it is not specified, we'll do the same        buttonId[0] = wxID_OK;        // using null as default title does not work on earlier systems        defaultButtonTitle = cfOKString;        if (style & wxCANCEL)        {            alternateButtonTitle = cfCancelString;            buttonId[1] = wxID_CANCEL;        }    }    CFOptionFlags exitButton;    OSStatus err = CFUserNotificationDisplayAlert(        0, alertType, NULL, NULL, NULL, cfTitle, cfText,        defaultButtonTitle, alternateButtonTitle, otherButtonTitle, &exitButton );    if (err == noErr)        resultbutton = buttonId[exitButton];#else    short result;#if TARGET_CARBON    if ( UMAGetSystemVersion() >= 0x1000 )    {        AlertStdCFStringAlertParamRec param;        wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );        wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );        wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );        wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );        param.movable = true;        param.flags = 0;        param.version = kStdCFStringAlertVersionOne;        bool skipDialog = false;        if (style & wxYES_NO)        {            if (style & wxCANCEL)            {                param.defaultText = cfYesString;                param.cancelText = (CFStringRef) kAlertDefaultCancelText;                param.otherText = cfNoString;                param.helpButton = false;                param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;                param.cancelButton = kAlertStdAlertCancelButton;            }            else            {                param.defaultText = cfYesString;                param.cancelText = NULL;                param.otherText = cfNoString;                param.helpButton = false;                param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;                param.cancelButton = 0;            }        }        // the MSW implementation even shows an OK button if it is not specified, we'll do the same        else        {            if (style & wxCANCEL)            {                // that's a cancel missing                param.defaultText = (CFStringRef) kAlertDefaultOKText;                param.cancelText = (CFStringRef) kAlertDefaultCancelText;                param.otherText = NULL;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = 0;            }            else            {                param.defaultText = (CFStringRef) kAlertDefaultOKText;                param.cancelText = NULL;                param.otherText = NULL;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = 0;            }        }#if 0        else        {            skipDialog = true;        }#endif        param.position = kWindowDefaultPosition;        if ( !skipDialog )        {            DialogRef alertRef;            CreateStandardAlert( alertType, cfTitle, cfText, &param, &alertRef );            RunStandardAlert( alertRef, NULL, &result );        }        else        {            return wxID_CANCEL;        }    }    else#endif    {        AlertStdAlertParamRec param;        Str255 yesPString, noPString;        Str255 pascalTitle, pascalText;        wxMacStringToPascal( m_caption, pascalTitle );        wxMacStringToPascal( _("Yes"), yesPString );        wxMacStringToPascal( _("No"), noPString );        wxMacStringToPascal( m_message, pascalText );        param.movable = true;        param.filterProc = NULL;        if (style & wxYES_NO)        {            if (style & wxCANCEL)            {                param.defaultText = yesPString;                param.cancelText = (StringPtr) kAlertDefaultCancelText;                param.otherText = noPString;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = kAlertStdAlertCancelButton;            }            else            {                param.defaultText = yesPString;                param.cancelText = NULL;                param.otherText = noPString;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = 0;            }        }        else if (style & wxOK)        {            if (style & wxCANCEL)            {                param.defaultText = (StringPtr) kAlertDefaultOKText;                param.cancelText = (StringPtr) kAlertDefaultCancelText;                param.otherText = NULL;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = 0;            }            else            {                param.defaultText = (StringPtr) kAlertDefaultOKText;                param.cancelText = NULL;                param.otherText = NULL;                param.helpButton = false;                param.defaultButton = kAlertStdAlertOKButton;                param.cancelButton = 0;            }        }        else        {            return resultbutton;        }        param.position = 0;        StandardAlert( alertType, pascalTitle, pascalText, &param, &result );    }    if (style & wxOK)    {        switch ( result )        {        case 1:            resultbutton = wxID_OK;            break;        case 2:            // TODO: add Cancel button            // if (style & wxCANCEL)            //     resultbutton = wxID_CANCEL;            break;        case 3:        default:            break;        }    }    else if (style & wxYES_NO)    {        switch ( result )        {        case 1:            resultbutton = wxID_YES;            break;        case 2:            if (!(style & wxCANCEL))                resultbutton = wxID_CANCEL;            break;        case 3:            resultbutton = wxID_NO;            break;        default:            break;        }    }#endif    return resultbutton;}

⌨️ 快捷键说明

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