程序開始時(shí)先顯示信息框
發(fā)表時(shí)間:2024-02-24 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一、軟件進(jìn)入主窗口前,先顯示一個(gè)信息框,告訴用戶一些有關(guān)該軟件的信息,比如軟件名稱,版本號(hào)等。該信息框在顯示1~2秒后自動(dòng)消失。 1.建立New Application,這時(shí)系統(tǒng)自動(dòng)生成一個(gè)Form1,這作為主Form. 2.File->New Form 建立一個(gè)新Form為...
一、軟件進(jìn)入主窗口前,先顯示一個(gè)信息框,告訴用戶一些有關(guān)該軟件的信息,比如軟件名稱,版本號(hào)等。該信息框在顯示1~2秒后自動(dòng)消失。
1.建立New Application,這時(shí)系統(tǒng)自動(dòng)生成一個(gè)Form1,這作為主Form.
2.File->New Form 建立一個(gè)新Form為Form2,這個(gè)作為信息框。
3.在Form2上添加組件TTimer(System控件條上),用于設(shè)定信息框的顯示時(shí)間。
4.TTimer的事件OnTimer中加入:Form2->Close();
5.在WinMain()函數(shù)中加入:
Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal( ); //這句要自己加入
Application->Run();
并且要把Form2的頭文件Unit2.h包括到WinMain()所在的Project1.cpp中。
6.運(yùn)行程序,將先顯示Form2,顯示時(shí)間由TTimer的Interval屬性決定,1000是一秒。
二、軟 件 封 面 的 實(shí) 現(xiàn)
現(xiàn) 代 軟 件 設(shè) 計(jì) 的 流 行 做 法 是, 在 程 序 運(yùn) 行 完 成 初 始 化 之 前, 先 調(diào) 用 一 幅 畫 面 做 為 封 面, 通 常 是1/4 屏 幕 大 小, 顯 示 一 下 軟 件 的 名 稱、 作 者、 版 本 等 信 息。 要 用C++ Builder 實(shí) 現(xiàn) 這 樣 的 功 能, 方 法 很 簡(jiǎn) 單:
① 自 定 義 一 窗 體 類 TSplashForm, 將 其 設(shè) 置 成" 透 明 窗 口", 即 BorderIcons 下 的 所 有 選 項(xiàng) 均 置 成false, BorderStyle=bsNone,F(xiàn)ormStyle=fsStayOnTop, Position=poScreenCenter;
② 在TSplashForm 窗 體 上 放 置 一TPanel( 相 當(dāng) 于 圖 形 的 鏡 框);
③ 在TPanel 上 放 置 一TImage 控 件, 調(diào) 入 所 需 要 的 圖 形;
④ 對(duì)WinMain 函 數(shù) 稍 加 修 改, 加 入 如 下 所 示 代 碼 即 可。 需 要 指 出 的 是, 這 段 代 碼 通 過(guò) 函 數(shù) FindWindow, 搜 索 內(nèi) 存 中 是 否 有 窗 口 標(biāo) 題 為 "Demo" 應(yīng) 用 程 序 存 在, 若 存 在, 則 退 出 程 序 的 運(yùn) 行。 該 功 能 可 防 止 程 序 的 再 次 運(yùn) 行。 在 某 些 場(chǎng) 合 這 樣 設(shè) 計(jì) 是 必 須 的。
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
if(FindWindow(NULL,"Demo")!=0)
{
Application- >MessageBox (" 程 序 已 經(jīng) 運(yùn) 行!"," 警
告",MB_ICONSTOP);
return 0;
}
TSplashForm *splash=new TSplashForm(Application);
splash- >Show();
splash- >Update();
Application- >Initialize();
Application- >CreateForm(__classid(TForm1), &Form1);
splash- >Close();
delete splash;
Application- >Run();
}
catch (Exception &exception)
{
Application- >ShowException(&exception);
}
return 0;
}