取得Controls父代類別名稱所產生的錯誤? |
尚未結案
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
如題:
.h public: // User declarations void __fastcall ActiveControlChange(System::TObject *Sender); .cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Screen->OnActiveControlChange = ActiveControlChange; } //-----------取得Form上頭繼承至TWinControl 之Controls父代類別名稱 void __fastcall TForm1::ActiveControlChange(System::TObject *Sender) { TWinControl *src; Memo1->Clear(); //<-錯誤所指位址 if ((src = dynamic_cast用以上程式碼所生成的執行檔(關閉時)會產生以下的錯誤訊息 "0x........."指令參考的"0x........."記憶體。該記憶體不能為"read" 各位先進:這樣的錯誤問題出在那裡?如何修正? ◎天長地久有時盡,追求知識無絕期! |
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: 如題:Memo已釋放但事件還存在!! 於事件OnDestroy釋放OnActiveControlChange事件 Screen.OnActiveControlChange = NULL; 學而時習之不亦樂乎!.h public: // User declarations void __fastcall ActiveControlChange(System::TObject *Sender); .cpp //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Screen->OnActiveControlChange = ActiveControlChange; } //-----------取得Form上頭繼承至TWinControl 之Controls父代類別名稱 void __fastcall TForm1::ActiveControlChange(System::TObject *Sender) { TWinControl *src; Memo1->Clear(); //<-錯誤所指位址 if ((src = dynamic_cast用以上程式碼所生成的執行檔(關閉時)會產生以下的錯誤訊息 "0x........."指令參考的"0x........."記憶體。該記憶體不能為"read" 各位先進:這樣的錯誤問題出在那裡?如何修正? ◎天長地久有時盡,追求知識無絕期! |
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
jest0024您好:
真是感謝,問題解決了!
可否容我再問,按此範例ActiveControlChange(焦點轉移/Next Controls),修改成攔截訊息來實做,系統會送出何種訊息?
比如:
if (Message.Msg == WM_ENDSESSION)
ShowMessage("使用者按了螢幕左下角 [關機] 指令");
或
if (Message.Msg == WM_SYSCOMMAND)
{
if (Message.WParam== SC_CLOSE) //若Message為 Close Window
{
ShowMessage("使用者按了程式右上角 [X] 按鈕");
}
} 諸如此類的訊息,我想知道的是焦點轉移會送出何種訊息代碼,還望不吝教導,在此先謝過! ◎天長地久有時盡,追求知識無絕期!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |