请指教有关函数地址的问题??? |
尚未結案
|
chenpeng20000
一般會員 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
以前的程序:
bool CALLBACK BeginCapture(HANDLE hBoard);
bool CALLBACK BackDisplay(HANDLE hBoard, long No);
bool CALLBACK EndCapture(HANDLE hBoard);
调用时:SeqCallback(hBoard,BeginCapture,BackDisplay,EndCapture);
现我将
BeginCapture(HANDLE hBoard);
BackDisplay(HANDLE hBoard, long No);
EndCapture(HANDLE hBoard);
写在一个类AAA中;那么我的调用函数SeqCallback应该怎样写? 努力学习 發表人 - chenpeng20000 於 2004/02/20 19:55:09
------
努力学习 |
pental
初階會員 發表:3 回覆:48 積分:30 註冊:2003-09-21 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
您好,callback方式如下:
// 定義 class AAA { public: void CALLBACK BeginCapture(HANDLE hBoard); }; void SeqCallback(void (CALLBACK AAA::* BeginCaptureCallBack)(HANDLE hBoard)); // 叫用 void __fastcall TForm1::Button1Click(TObject *Sender) { AAA atest; SeqCallback(atest.BeginCapture); }------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com 發表人 - anpino 於 2004/03/01 12:50:00 |
chenpeng20000
一般會員 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 谢谢两位回复。 我这里的BeginCapture(HANDLE hBoard);BackDisplay(HANDLE hBoard, long No);EndCapture(HANDLE hBoard);都是厂家提供的函数形式那就是SDK內DLL的函式囉~~ 那麼要將這3個函式寫入類AAA中便不可行。 引言: 。还有SeqCallback的定义是在库文件中,不能改的。 我的意思是想在BeginCapture;BackDisplay;EndCapture中能够访问到一个类AAA中的属性不是很清楚您的意思, 在DLL內的函式是無法更改的。 可以具體說明您要的效果嗎? ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com |
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
我猜想您要的或許是這樣:
class AAA { public: int test; }; AAA testA; bool CALLBACK BeginCapture(HANDLE hBoard) { testA.test; //這裡可直接叫用AAA的public屬性。 }------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com |
chenpeng20000
一般會員 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
我说的确实有些糊涂,其实我所问的一切都是有关ocx控件的制作。
下面就是我所遇到的具体问题了。
new一个activex form,
"ActiveFormImpl1.h"中
class TActiveFormX : public TActiveForm
{
__published:
TPanel *Panel1;
void __fastcall ActiveFormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
//略
}
ActiveFormImpl1.cpp中
TActiveFormX *ActiveFormX1;
BOOL CALLBACK BeginCapture(HANDLE hBoard)
{
ActiveFormX1->Panel1->Visible=false;//***这里出问题***
return 1;
}
1.我搞不清ActiveFormX1和m_VclCtl的关系。
2.当写下ActiveFormX1->Panel1->Visible=false编译此控件,没有错误。我又新建一个应用,调用此控件时调用组件的一个方法(用到了BeginCapture函数)时,在***处出现问题,Panel1去不到值。因此我想把BeginCapture,BackDisplay,EndCapture这三个函数写在TActiveFormX类中,不知道我的这个想法是不是很奇怪? 努力学习
------
努力学习 |
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
panel1找不到的原因很可能是panel物件並沒有被產生出來。
ActiveFormImpl1.cpp中 TActiveFormX *ActiveFormX1 = NULL; //先初使化 BOOL CALLBACK BeginCapture(HANDLE hBoard) { if((ActiveFormX1 != NULL)&&(ActiveFormX1->Panel1 != NULL)) // 要確定ActiveFormX1以及其panel 2個物件都存在 { ActiveFormX1->Panel1->Visible=false; return 1; } return 0; }外部dll已經寫入的函式並不能夠函入一個dll以外的class, 所以那3個callback函式無法嵌進您自訂的class裡。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com 發表人 - anpino 於 2004/03/02 17:34:22 |
chenpeng20000
一般會員 發表:22 回覆:32 積分:10 註冊:2003-09-17 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |