全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1829
推到 Plurk!
推到 Facebook!

如何去觸發Form2的觸發事件

尚未結案
octto741023
一般會員


發表:13
回覆:3
積分:3
註冊:2008-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-21 08:41:49 IP:140.120.xxx.xxx 訂閱
想請問各位,小弟今天再做的事情是利用ccd顯示影像,想請問的是我在Form1是利用OnFormPaint觸發事件去描繪我顯示出來的影像,而現在我需要用Form2去顯示畫面,這下我就不知道要怎麼用了,有玩過多視窗的可以跟我講一下大概要怎麼用嗎?我有試過把Form1的OnFormPaint寫到Form2上,也有把彼此的.h檔include進去,可是不行都會出現錯誤在Form2上那些原本寫在Form1的變數都會變成未定義的,謝謝!!
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-22 11:49:15 IP:140.116.xxx.xxx 訂閱
最好是把code post上來, 通常講的跟實際code都有差別...
看樣子是form2找不到form1, 可能是程式未產生視窗?? form1 與 form2 都有出現??
又或是呼叫的錯誤form1 instance, --> extern PACKAGE TForm1 *Form1; 應該使用Form1
又或是存取到form1的private 成員.
------
FPGA驗證, FPGA開發平台, http://smims.com
octto741023
一般會員


發表:13
回覆:3
積分:3
註冊:2008-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-22 17:11:55 IP:140.120.xxx.xxx 訂閱

===================引 用 ikk 文 章===================
最好是把code post上來, 通常講的跟實際code都有差別...
看樣子是form2找不到form1, 可能是程式未產生視窗?? form1 與 form2 都有出現??
又或是呼叫的錯誤form1 instance, --> extern PACKAGE TForm1 *Form1; 應該使用Form1
又或是存取到form1的private 成員.

==============================================
ikk大大你好:
這是我寫的程式,我是利用paint去描繪出我要的影像,可是要怎麼去觸發Form2的paint的事件哩,我是有想過是不是可以要使Form2得到Handle勒。

void __fastcall TForm1::OnFormPaint(TObject *Sender)
{
// Protection
if (m_pCurrent==NULL) return;
// Get DC of the window
HDC hDevice = GetDC (Handle);

SetDIBitsToDevice (hDevice, 220, 0, m_SizeX, m_SizeY, //增加子視窗 右上
0, 0, 0, m_SizeY,
m_pCurrent, m_pBitmapInfo, DIB_RGB_COLORS);

// Release DC
ReleaseDC(Handle,hDevice);
// Display channel info on status bar
// Retrieve the channel state
McGetParamInt (m_Channel, MC_ChannelState, &m_ChannelState);
// Retrieve the frame rate
double frameRate_Hz;
McGetParamFloat(m_Channel, MC_PerSecond_Fr, &frameRate_Hz);
// Display frame rate and channel state
StatusBar1->SimpleText = m_StatusBarText.sprintf("Frame Rate: %.2f, Channel State: %s", frameRate_Hz,
(m_ChannelState == MC_ChannelState_ACTIVE? "ACTIVE" : "NOT ACTIVE"));
}
//---------------------------------------------------------------------------

void WINAPI GlobalCallback (PMCSIGNALINFO SigInfo)
{
if (SigInfo && SigInfo->Context)
{
TForm1* pTForm1 = (TForm1*) SigInfo->Context ;
pTForm1->Callback (SigInfo);
}
}
//---------------------------------------------------------------------------
void TForm1::Callback(PMCSIGNALINFO SigInfo)
{
if (SigInfo->Signal == MC_SIG_SURFACE_PROCESSING)
{
// Update "current" surface address pointer
McGetParamInt (SigInfo->SignalInfo, MC_SurfaceAddr, (PINT32) &m_pCurrent);

// Post screen refresh message
RECT recpict ;
recpict.left =0;
recpict.top =0;
recpict.right = m_SizeX-1;
recpict.bottom = m_SizeY-1;
InvalidateRect(Handle,&recpict,false);
Form2->Show();
HDC hDevice =Form2->Handle;
}
else if (SigInfo->Signal == MC_SIG_SURFACE_PROCESSING)
{
// Insert your failure handling code here.
}
}


ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-23 08:41:44 IP:163.28.xxx.xxx 訂閱
在 TForm1::OnFormPaint 裡面呼叫form2去儲存畫面,
將畫面儲存在Form2的暫存資料,
讓Form2的OnPaint自己從暫存資料更新畫面,
------
FPGA驗證, FPGA開發平台, http://smims.com
octto741023
一般會員


發表:13
回覆:3
積分:3
註冊:2008-11-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-01-23 17:19:20 IP:140.120.xxx.xxx 訂閱
不好意思我要怎麼去儲存 可以舉的例子嗎?
拜託
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-02-02 09:11:04 IP:140.116.xxx.xxx 訂閱
memcpy((unsigned char*)form2->newptr,(PINT32)m_pCurrent,(m_SizeX*m_Size*3));
------
FPGA驗證, FPGA開發平台, http://smims.com
系統時間:2024-05-20 8:56:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!