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

📄 umain.cpp

📁 这是用C++BUILDER编写的QQ表情程序
💻 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 + -