線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1428
推到 Plurk!
推到 Facebook!

About VB的long 跟C的pointer....

尚未結案
adreson
一般會員


發表:2
回覆:3
積分:1
註冊:2004-06-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-16 10:24:33 IP:202.39.xxx.xxx 未訂閱
我在BCB的環境下用了一個VB的ocx..他所傳回的是一個long data... VB: Dim lngImagePointer As Long lngImagePointer = EBW8Image1.GetImagePointer(50, 50) EBW8Image2.SetImagePointer(lngImagePointer ) '這樣在VB中第二行為抓圖的pointer...第三行為把pointer再丟回去..建構一張新圖 問題為VB中使用long data..但是BCB中需要使用pointer的型態.. 請問有方式轉換imagepointer為記憶體位置?? 也就是知道 lngImagePointer 的記憶體起始位置? 並指給 unsigned char *pSrcImageBuffer 請幫忙回答...謝謝...
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-16 21:41:21 IP:218.166.xxx.xxx 未訂閱
adreson 你好: 直接宣告指標來用就可以了~也就是指標跟VB中long型態變數裡存的東西是一樣的(這麼說是怪怪的啦~不過本質上都是一個4 bytes的整數,代表記憶體位置),所以
void *lngImagePointer;
lngImagePointer = EBW8Image1.GetImagePointer(50, 50);
EBW8Image2.SetImagePointer(lngImagePointer);
如果只要位址,應該這樣子就可以了~
adreson
一般會員


發表:2
回覆:3
積分:1
註冊:2004-06-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-17 10:03:25 IP:202.39.xxx.xxx 未訂閱
謝謝arisaka_matsuri大大的回答... 只是..EBW8Image1->GetImagePointer(50, 50) 所提供的是long data 所以在complier 時候會產生..can't convert 'long' to 'void'的訊息 不過我想要的就是類似這種的型態... 只是我不知道怎轉...有api 或是啥方式嗎? 麻煩各位....
adreson
一般會員


發表:2
回覆:3
積分:1
註冊:2004-06-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-17 10:12:54 IP:202.39.xxx.xxx 未訂閱
我在舉個例子... long lngImagePointer =EBW8Image1->GetImagePointer(50, 50); 抓到的值是..lngImagePointer= 35810602L (0x02226D2A) 我想要把直0x02226D2A 轉成記憶體位置的型態.. 這樣的話..我要控制圖的時候...只要直接控制buffer即可 thx
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-17 23:36:56 IP:218.166.xxx.xxx 未訂閱
adreson 你好:
引言: long lngImagePointer =EBW8Image1->GetImagePointer(50, 50); 抓到的值是..lngImagePointer= 35810602L (0x02226D2A) 我想要把直0x02226D2A 轉成記憶體位置的型態..
試試看
void *lngImagePointer;
lngImagePointer = (void *)EBW8Image1.GetImagePointer(50, 50);
希望有幫助~^^
friendlly
高階會員


發表:22
回覆:144
積分:103
註冊:2003-04-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-01 03:18:11 IP:61.229.xxx.xxx 未訂閱
引言: adreson 你好:
引言: long lngImagePointer =EBW8Image1->GetImagePointer(50, 50); 抓到的值是..lngImagePointer= 35810602L (0x02226D2A) 我想要把直0x02226D2A 轉成記憶體位置的型態..
試試看
void *lngImagePointer;
lngImagePointer = (void *)EBW8Image1.GetImagePointer(50, 50);
希望有幫助~^^
樓上的大大你的OCX看的出是.EureSYS的元件 我試驗過沒有問題啊 long str=EBW8Image1->GetImagePointer(320,240); EBW8Image2->SetImagePointer(str); 小第我有另一個想法,,用VFW抓取一般的影像卡資料 再SetImagePint,但是我到目前Grab一張的動作都有達成 就差不知如何得到影像的Image Point. 請問有大大知道嗎謝謝
系統時間:2024-06-02 1:27:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!