大神求救啊啊。。 本人剛接觸bcb 但上面任務催得緊啊啊啊。
是要新添加一個繼承的Tbutton組件 ?具體又如何做呢?
還是可以直接拖個TButton然后添加繪制資訊自己繪制呢?
可否說個詳細點的思路 呢--
uj5u.com熱心網友回復:
要繪制什么效果啊繼承控制元件最好
uj5u.com熱心網友回復:
就是能在表面畫東西就行, 類似在WM_PAINT中繪制,只要得到HDC就可以啊. 具體的怎么做呢==uj5u.com熱心網友回復:
bitbtnspeedbutton
這2個按鈕可以換圖片
uj5u.com熱心網友回復:
多載WindowProc訊息
h file
void __fastcall myWindowProc(Messages::TMessage &msg); // 增加
Classes::TWndMethod OldWindowProc; // 增加
cpp file
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWindowProc = this->Button1->WindowProc;
this->Button1->WindowProc = this->myWindowProc;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::myWindowProc(Messages::TMessage &msg)
{
OldWindowProc(msg);
HDC hdc;
TCanvas *cvs;
TBitmap *bmp; // TPicture
if (msg.Msg == BM_SETSTATE || msg.Msg == WM_PAINT || msg.Msg == WM_NCPAINT)
{
// hdc = GetDC(this->Button1->Handle);
hdc = GetWindowDC(this->Button1->Handle);
cvs = new TCanvas;
bmp = new TBitmap;
bmp->Width = this->Button1->Width;
bmp->Height = this->Button1->Height;
cvs->Handle = hdc;
bmp->TransparentColor = GetSysColor(COLOR_BTNFACE);
BitBlt(bmp->Canvas->Handle, 0, 0, bmp->Width, bmp->Height, cvs->Handle, 0, 0, SRCCOPY);
bmp->Transparent = true;
bmp->LoadFromFile("C:\\Users\\Administrator\\Desktop\\QQ截圖20150826091707.bmp");
cvs->Draw(0, 0, bmp); // bmp->Graphic
delete bmp;
delete cvs;
ReleaseDC(this->Button1->Handle, hdc);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94378.html
標籤:基礎類
上一篇:bcb2011 Lite 典藏版
