// 向下捲 1 像素
ScrollWindow(RichEdit1->Handle, 0, -1, NULL, NULL);
// 向上捲 1 像素
ScrollWindow(RichEdit1->Handle, 0, 1, NULL, NULL);
配合 Timer 即可實現類電子書自動捲動效果。
.dcr 檔BRCC32.exe 編譯 .dcr → .res.res 加入 .bpk 專案,重新編譯安裝
#include "utilcls.h"
void CompactDatabase(String srcFile, String srcPwd, String dstFile, String dstPwd) {
String srcConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + srcFile
+ ";Jet OLEDB:Database Password=" + srcPwd;
String dstConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dstFile
+ ";Jet OLEDB:Database Password=" + dstPwd;
Variant jet = Variant::CreateObject("JRO.JetEngine");
jet.OleProcedure("CompactDatabase", srcConn, dstConn);
jet.Clear(); // 釋放 COM
}
void __fastcall TForm1::Button1Click(TObject *Sender) {
String dir = ExtractFilePath(Application->ExeName);
String f1 = dir + "yhecdagl1.mdb", p1 = "yhecdagl";
String f2 = dir + "yhecdagl2.mdb", p2 = "yhecdagl2";
if (FileExists(f2)) DeleteFile(f2);
CompactDatabase(f1, p1, f2, p2);
ShowMessage("Finished");
}
Query1->Close();
Query1->DatabaseName = "c:\\temp";
Query1->SQL->Text = "CREATE TABLE a.db (field1 VARCHAR(10), field2 VARCHAR(10))";
Query1->ExecSQL();
.db 即資料表檔,SQL DDL 可建立表、欄位、索引等。
方法一:修改 win.ini (Win98)
[mci extensions]
mp3=MPEGVideo
方法二:SndPlaySound 記憶體播放
TFileStream fs("song.mp3", fmOpenRead);
char* buf = new char[fs.Size];
fs.Read(buf, fs.Size);
SndPlaySound(buf, SND_MEMORY | SND_ASYNC);
// 播放結束後 delete[] buf
TStringStream* pms = new TStringStream("");
TStringList* sl = new TStringList();
RichEdit1->Lines->SaveToStream(pms);
pms->Position = 0;
sl->LoadFromStream(pms);
Table1->FieldByName("RichField")->AsString = sl->Text;
delete sl; delete pms;
關鍵:SaveToStream 保留 RTF 格式,AsString 直接寫入 Memo/Blob 欄位。
class TForm2 : public TForm {
protected:
virtual void __fastcall CreateParams(TCreateParams &Params);
};
void __fastcall TForm2::CreateParams(TCreateParams &Params) {
TForm::CreateParams(Params);
Params.ExStyle |= WS_EX_TOPMOST;
Params.WndParent = GetDesktopWindow(); // 關鍵:不掛在 Application
}
// PageControl OwnerDraw
PageControl1->OwnerDraw = true;
void __fastcall TForm1::PageControl1DrawTab(TCustomTabControl *Control,
int TabIndex, const TRect &Rect, bool Active) {
Control->Canvas->Brush->Color = (TabIndex == 0) ? clRed : clGreen;
Control->Canvas->FillRect(Rect);
// 繪製文字...
}
HANDLE hMutex = CreateMutex(NULL, FALSE, "MyUniqueAppName_Mutex");
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 已有實例在執行
CloseHandle(hMutex);
return;
}
// 繼續執行...
// 結束時 CloseHandle(hMutex);
無需列舉系統互斥體,CreateMutex 回傳 ERROR_ALREADY_EXISTS 即可判斷。