mainformunit.cpp
来自「一些初级的网络编程」· C++ 代码 · 共 170 行
CPP
170 行
//---------------------------------------------------------------------------
// MainFormUnit.cpp
// bcb shell coded by mouser (9/18/04) using existing samples for delphi+c
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// System includes and C++ Builder Stuff
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// System includes
//#include <stdlib.h>
#include <stdio.h>
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Application includes
#include "MainFormUnit.h"
#include "apacksamplec.h"
#include "aplib.h"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// C++ Builder stuff
#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Global Form Instance Pointer
TMainForm *MainForm;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Compression callback sample
int STDPREFIX mainformcallback(unsigned int insize, unsigned int inpos, unsigned int outpos, void *cbparam)
{
char resultstr[255];
unsigned int ratioval=ratio(inpos, insize);
sprintf(resultstr,"compressed %u -> %u bytes (%u%% done)", inpos, outpos, ratioval);
MainForm->LabelResult->Caption=AnsiString(resultstr);
MainForm->ProgressBar->Position=ratioval;
// let gui update
Application->ProcessMessages();
// return
if (MainForm->get_wantscancel())
return 0;
return 1;
}
// result callback
void STDPREFIX mainformresultcallback(char *resultstr, int errorcode)
{
MainForm->LabelResult->Caption=AnsiString(resultstr);
if (errorcode==0)
MainForm->LabelResult->Font->Color=clBlack;
else
MainForm->LabelResult->Font->Color=clMaroon;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
// constructor
Initialize();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void TMainForm::Initialize()
{
// initialize the library
SetStateNotRunning();
}
void TMainForm::SetStateRunning()
{
// change visible state to running
ButtonCancel->Enabled=true;
}
void TMainForm::SetStateNotRunning()
{
// change visible state to not running
ButtonCancel->Enabled=false;
wantscancel=false;
ProgressBar->Position=0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TMainForm::ButtonCompressClick(TObject *Sender)
{
// ask for file and compress it
bool bretv;
int retv;
OpenDialog->Title="Browse for file to Compress..";
bretv=OpenDialog->Execute();
if (bretv)
{
// compress it
AnsiString filename=OpenDialog->FileName;
AnsiString newfilename=filename+".out";
SetStateRunning();
retv=compress_file(filename.c_str(),newfilename.c_str(),mainformcallback,mainformresultcallback);
SetStateNotRunning();
}
}
void __fastcall TMainForm::ButtonDecompressClick(TObject *Sender)
{
// ask for file and decompress it
bool bretv;
int retv;
OpenDialog->Title="Browse for file to Decompress..";
bretv=OpenDialog->Execute();
if (bretv)
{
// decompress it
AnsiString filename=OpenDialog->FileName;
AnsiString newfilename=filename+".out";
SetStateRunning();
retv=decompress_file(filename.c_str(),newfilename.c_str(),mainformcallback,mainformresultcallback);
SetStateNotRunning();
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TMainForm::ButtonCancelClick(TObject *Sender)
{
// user wants to cancel
wantscancel=true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?