如何判斷滑鼠游標是否進入TImage的範圍 |
答題得分者是:jessechan
|
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
各位大大...
我有用cursor下去搜尋過..找到Delphi有解決方法:
http://delphi.ktop.com.tw/topic.php?topic_id=22891
但是我不知C 要怎麼做...
可否請大大們幫我翻譯一下..^^
或是TImage有其他的方法來判斷mouse_enter and mouse_leave??
感謝各位大大..^^
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
因為 TImage 也是繼承自 TControl, 所以也有MouseEnter 及 MouseLeave, 所以你要新增一個 class 繼承自 TImage, 然後在 protect: 中 override 這兩個函數, 其原型宣告為
DYNAMIC void __fastcall MouseEnter(TControl* AControl);
DYNAMIC void __fastcall MouseLeave(TControl* AControl); Jesse Chan
------
Jesse Chan |
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
我的作法如下: .h file class SImage : public TImage
{
protected:
DYNAMIC void __fastcall MouseEnter(TControl* AControl);
DYNAMIC void __fastcall MouseLeave(TControl* AControl);
public:
__fastcall virtual SImage(Classes::TComponent* AOwner){}
__fastcall virtual ~SImage(void){}
private:
}; ----------------
.cpp file
void __fastcall SImage::MouseEnter(TControl* AControl)
{ int a = 3; a ; } // set break point //-------------------------------------------------------------------void __fastcall SImage::MouseLeave(TControl* AControl)
{ int a = 3; a ; } // set break point -----------------------------------------------
但是not work.....怎辦??
感謝大大的回答..^^
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
我鄭重道歉, 回答這題時剛好老闆找我, 所以答錯了, 那部份是屬於 CLX 的作法, 在BCB中的做法如下,
class SImage : public TImage
{
public:
__fastcall SImage(TComponent* Owner);
__fastcall virtual ~SImage(void){};
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,OnMouseEnter);
END_MESSAGE_MAP(TImage);
private:
void __fastcall OnMouseEnter(TMessage &Message);
}; void __fastcall SImage::OnMouseEnter(TMessage &Message)
{
Screen->Cursor = crHandPoint; } 我把它簡略了一些, 但我相信你可以知道我的意思. Jesse Chan
------
Jesse Chan |
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
再加個提示, __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
hMenu = GetSystemMenu(Handle,false);
SImage * FImage = new SImage(this);
FImage->Parent = this;
FImage->Left = 0;
FImage->Top = 0;
FImage->Width = 100;
FImage->Height = 100;
FImage->Canvas->Brush->Color = clWhite;
} Jesse Chan
------
Jesse Chan |
okiss
一般會員 發表:11 回覆:55 積分:13 註冊:2002-11-27 發送簡訊給我 |
|
China Join
中階會員 發表:81 回覆:242 積分:89 註冊:2003-03-12 發送簡訊給我 |
抱歉小弟執行時會有連結的錯誤 [Linker Error] Unresolved external 'SImage::' referenced from C:\DOCUMENTS AND SETTINGS\CJ\桌面\TEMP2\UNIT1.OBJ
[Linker Error] Unresolved external '__fastcall SImage::SImage(Classes::TComponent *)' referenced from C:\DOCUMENTS AND SETTINGS\CJ\桌面\TEMP2\UNIT1.OBJ 是否 void __fastcall OnMouseEnter(TMessage &Message); 宣告的位子不對ㄋ?THX
|
mzhuang
一般會員 發表:6 回覆:11 積分:3 註冊:2002-08-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |