progdlg.cpp
来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C++ 代码 · 共 127 行
CPP
127 行
///////////////////////////////////////////////////////////////////////////////
// Name: src/palmos/progdlg.cpp
// Purpose: wxProgressDialog implementation
// Author: Wlodzimierz ABX Skiba
// Modified by:
// Created: 29.12.2004
// RCS-ID: $Id: progdlg.cpp,v 1.3 2005/07/01 19:36:57 ABX Exp $
// Copyright: (c) Wlodzimierz Skiba
// License: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "progdlg.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/string.h"
#endif //WX_PRECOMP
#if wxUSE_PROGRESSDLG
#include "wx/progdlg.h"
#include "wx/msgdlg.h"
#include <Progress.h>
#include <SysEvtMgr.h>
IMPLEMENT_CLASS(wxProgressDialog, wxDialog)
static Boolean wxProgressCallback(PrgCallbackData *data)
{
if(!data)
return false;
wxProgressDialog *dialog = (wxProgressDialog *)data->userDataP;
if(!dialog)
return false;
return dialog->Callback(data);
}
wxProgressDialog::wxProgressDialog(const wxString &title,
wxString const &message,
int maximum,
wxWindow *parent,
int style)
:wxDialog(parent, wxID_ANY, title),
m_prgFrame(NULL),
m_msg(message),
m_cur(0),
m_max(maximum),
m_canSkip((style & wxPD_CAN_SKIP )==wxPD_CAN_SKIP)
{
wxString prgTitle = title.Mid(0, progressMaxTitle);
m_prgFrame = PrgStartDialog(prgTitle.ToAscii(), wxProgressCallback, this);
}
wxProgressDialog::~wxProgressDialog()
{
if(m_prgFrame)
{
PrgStopDialog((ProgressType *)m_prgFrame, false);
m_prgFrame = NULL;
}
}
bool wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
{
if(!m_prgFrame)
return false;
if(!newmsg.empty())
m_msg = newmsg;
m_cur = value;
EventType event;
ProgressType *prg = (ProgressType *)m_prgFrame;
do
{
EvtGetEvent(&event, 0);
Boolean handled = PrgHandleEvent(prg, &event);
if (!PrgHandleEvent(prg, &event))
if( PrgUserCancel(prg) )
return false;
}
while(event.eType != sysEventNilEvent);
PrgUpdateDialog(prg, 0, 0, "", true);
m_activeSkip = m_canSkip && true;
return true;
}
void wxProgressDialog::Resume()
{
}
bool wxProgressDialog::Show(bool show)
{
return false;
}
Boolean wxProgressDialog::Callback(void *data)
{
PrgCallbackData *palmData = (PrgCallbackData *)data;
strncpy( palmData->textP, m_msg.ToAscii() , palmData->textLen - 1 );
palmData->textChanged = true;
palmData->displaySkipBtn = m_canSkip;
palmData->barMaxValue = (uint32_t)m_max;
palmData->barCurValue = (uint32_t)m_cur;
palmData->delay = (m_max == m_cur);
return true;
}
#endif // wxUSE_PROGRESSDLG
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?