攔截TPanel上的TShape的WM_PAINT |
尚未結案
|
khaupe
一般會員 發表:28 回覆:25 積分:15 註冊:2003-06-30 發送簡訊給我 |
程式目的:
在TShape上用Canvas寫字 , 這不是重點 , 重點是我的Shape是在一個Panel上 , 而Panel在Form1上 目前寫法:
我抄了這一篇
http://delphi.ktop.com.tw/topic.php?topic_id=58271
若Shape直接放在Form1上 , 它確實可行.
但在我的情況卻不行. 因為Canvas是畫在Form1上 , 而非Shape. 事實上我也參考了這篇
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23435
但他是new一個TBitmap , 畫在TBitmap後再貼上 , 這跟我要的不太一樣(其實符合需求啦 , 但我的壞脾氣又上來了 , 硬是要搞懂怎麼畫在Shape上) 程式碼如下:
.h
private: // User declarations TWndMethod ShapeParentWindowProc;
void __fastcall ShapeHookWindowProc(TMessage &Message); .cpp
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ShapeParentWindowProc = Shape1->WindowProc;
Shape1->WindowProc = ShapeHookWindowProc ;
} //--------------------------------------------------------------------------- void __fastcall TForm1::ShapeHookWindowProc(TMessage& Message){
ShapeParentWindowProc(Message);
if(Message.Msg == WM_PAINT){
this->Canvas->Brush->Color = Shape1->Brush->Color;
this->Canvas->TextOutA(Shape1->Left 1,Shape1->Top 1,"ShapeHookWindowProc");
} } //--------------------------------------------------------------------------- 請問這該如何解決呢???
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
khaupe
一般會員 發表:28 回覆:25 積分:15 註冊:2003-06-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |