📄 umain.cpp
字号:
//---------------------------------------------------------------------------
// 模拟QQ魔法表情 2005.3
// Author: GaoLun(米老鼠), ccrun(老妖)
//
// 欢迎光临 C++Builder研究 - http://www.ccrun.com
//---------------------------------------------------------------------------
#include <vcl.h>
#include "stdio.h"
#pragma hdrstop
#include "uMain.h"
#include "uPlay.h"
#include "uAbout.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
imgProgram->Picture->Assign(Application->Icon);
// 临时文件夹所在的路径
char szBuf[MAX_PATH];
::GetTempPath(MAX_PATH, szBuf);
strTempPath = String(szBuf);
// 如果路径最后没有"\"就添加一个
if(strTempPath.LastDelimiter("\\") != strTempPath.Length())
strTempPath += "\\";
// _QQMagicFlash.htm文件
strHtmlFileName = strTempPath + "_QQMagicFlash.tmp";
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnBrowseClick(TObject *Sender)
{
if(dlgOpen->Execute())
{
edtFileName->Text = dlgOpen->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnPlayClick(TObject *Sender)
{
String strFlashFile = edtFileName->Text;
if(strFlashFile.IsEmpty() || !FileExists(strFlashFile))
{
MessageBox(Handle, "请选择正确的播放文件!",
Application->Title.c_str(), MB_OK | MB_ICONWARNING);
return;
}
// 如果临时文件夹下的_QQMagicFlash.htm文件不存在,就从资源中释放一个
if(!FileExists(strHtmlFileName))
{
TResourceStream *rs;
try
{
rs = new TResourceStream(
(int)HInstance, "HTMLFILE", RT_RCDATA);
try
{
rs->SaveToFile(strHtmlFileName);
}
catch(...)
{
MessageBox(Handle, ("HTML资源释放失败: " + strHtmlFileName
+ "\r\n请检查这个文件是否正在使用中,"
+ "或手动删除这个文件再试试").c_str(),
Application->Title.c_str(), MB_OK | MB_ICONERROR);
delete rs;
return;
}
}
__finally
{
delete rs;
}
}
// 将_QQMagicFlash.htm文件读入并将其中的initflash.swf字符串
// 替换为刚才选定的文件名
TStringList *pList = new TStringList;
pList->LoadFromFile(strHtmlFileName);
pList->Text = StringReplace(pList->Text, "initflash.swf",
strFlashFile, TReplaceFlags() << rfReplaceAll);
// 另存为临时目录下的QQMagicFlash.htm
pList->SaveToFile(strTempPath + "QQMagicFlash.htm");
delete pList;
// 一切就绪, 播放的说
frmPlay = new TfrmPlay(this);
frmPlay->ShowModal();
delete frmPlay;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnAboutClick(TObject *Sender)
{
// 无他,关于对话框而已
frmAbout = new TfrmAbout(this);
frmAbout->ShowModal();
delete frmAbout;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
// 程序结束时将用过的临时文件删除,做人要厚道
if(FileExists(strHtmlFileName)) // MagicFlash模板文件
DeleteFile(strHtmlFileName);
if(FileExists(strTempPath + "_bg4mgc.tmp")) // HTML中的背景图片文件
DeleteFile(strTempPath + "_bg4mgc.tmp");
if(FileExists(strTempPath + "QQMagicFlash.htm")) // 真正显示的HTML文件
DeleteFile(strTempPath + "QQMagicFlash.htm");
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -