dlg_messagebox.cpp

来自「ncbi源码」· C++ 代码 · 共 194 行

CPP
194
字号
/* * =========================================================================== * PRODUCTION $Log: dlg_messagebox.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 20:54:32  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5 * PRODUCTION * =========================================================================== *//*  $Id: dlg_messagebox.cpp,v 1000.1 2004/06/01 20:54:32 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Yuri Kapustin * * File Description: *    CDlgMessageBox -- FLTK-based message box class */#include <ncbi_pch.hpp>#include <corelib/ncbistd.hpp>#include "dlg_messagebox.hpp"BEGIN_NCBI_SCOPECDlgMessageBox::CDlgMessageBox( const char* message, const char* title,                                EMessageBoxType type ):    m_title(title),    m_msg(message),    m_btnclicked(eID_ERROR){    m_wnd = new Fl_Window(235, 100, m_title.c_str());    m_wnd->labeltype(FL_NORMAL_LABEL);    m_wnd->user_data((void*)(this));    m_textbox = new Fl_Box(1, 1, 233, 45, m_msg.c_str());    m_button[0] = m_button[1] = 0;    switch(type) {    case eMB_OK: {        m_button[0] = new Fl_Button(80, 55, 85, 32, "Ok");    }    break;    case eMB_CANCEL: {        m_button[0] = new Fl_Button(80, 55, 85, 32, "Cancel");    }    break;    case eMB_OKCANCEL: {        m_button[0] = new Fl_Button(26, 55, 85, 32,  "Ok");        m_button[1] = new Fl_Button(126, 55, 85, 32, "Cancel");    }    break;    case eMB_YESNO: {        m_button[0] = new Fl_Button(26, 55, 85, 32,  "Yes");        m_button[1] = new Fl_Button(126, 55, 85, 32, "No");    }    break;    }    if(m_button[0])        m_button[0]->callback((Fl_Callback*)x_OnButtonClicked, (void*) this);    if(m_button[1])        m_button[1]->callback((Fl_Callback*)x_OnButtonClicked, (void*) this);        m_wnd->end();}CDlgMessageBox::~CDlgMessageBox(){    delete m_textbox;    delete m_button[0];    delete m_button[1];    delete m_wnd;}CDlgMessageBox::EMessageBoxButton CDlgMessageBox::DoModal(){    if(!m_wnd)        return eID_ERROR;    m_wnd->show();    while(m_wnd->shown()) {        Fl::wait();    }    return m_btnclicked;}// button callbackvoid CDlgMessageBox::x_OnButtonClicked(Fl_Button* button, void* owner){    CDlgMessageBox* pmb = reinterpret_cast<CDlgMessageBox*>(owner);    const string btnlabel (string(button->label()));    if(btnlabel == "Yes") {        pmb->m_btnclicked = eID_YES;    }    else if(btnlabel == "No") {        pmb->m_btnclicked = eID_NO;    }    else if(btnlabel == "Ok") {        pmb->m_btnclicked = eID_OK;    }    else if(btnlabel == "Cancel") {        pmb->m_btnclicked = eID_CANCEL;    }    pmb->m_wnd->hide();}CDlgMessageBox::EMessageBoxButton CDlgMessageBox::GetLastButtonClicked(){    return m_btnclicked;}void CDlgMessageBox::Show(){    if(m_wnd)        m_wnd->show();}void CDlgMessageBox::Hide(){    if(m_wnd)        m_wnd->hide();}void CDlgMessageBox::SetText(const char* new_text){    if(m_textbox) {        m_textbox->label(new_text);        m_textbox->redraw();    }}END_NCBI_SCOPE/* * =========================================================================== * $Log: dlg_messagebox.cpp,v $ * Revision 1000.1  2004/06/01 20:54:32  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5 * * Revision 1.5  2004/05/21 22:27:46  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.4  2003/04/22 16:01:07  kapustin * Rearrange init order to supress gcc warnings * * Revision 1.3  2003/03/12 21:12:07  kapustin * Change sub-objects destruction order * * Revision 1.2  2003/02/21 17:13:54  dicuccio * Changed enums in CDlgMessageBox - added leading 'e' to avoid * impossible-to-remove conflict with Windows code. * * Revision 1.1  2003/02/04 22:56:46  kapustin * Initial revision * * =========================================================================== */

⌨️ 快捷键说明

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